digiKam 0.10.0 - Release date: 2009-05-30

*****************************************************************************************************
NEW FEATURES:

General        : Internal CImg library updated to 1.3.0.
General        : New "DarkRoom" colors theme.
General        : Sidebar type is configurable: title is visible for only active tab, or for all tabs.
General        : Thumbbar item can be rated on the fly.
General        : New settings to fix file timestamp when metadata are saved.
General        : All batch tools as rebuild all thumbs or sync metadata with database use modeless dialogs.
General        : Icon-View and Thumbbar items use a smart 3D decorative border.
General        : Fonts used by Icon-View, Folder-View, and Tooltip can be customized.
General        : digiKamlinktree script updated to support new Database schema.
General        : digiKam can be compiled under Microsoft Windows with MinGW or MSVC independently.
General        : Usability improvements to be able to run digiKam on small screen (like EeePC).
General        : New option to enable RAW metadata writing.
General        : MetadataEngine dependency updated to 0.5.0.
General        : digiKam can be compiled natively under Microsoft Windows.
General        : RawEngine dependency updated to 0.4.0
General        : libgphoto2 dependency is now optional to be able to compile digiKam under operating systems not supported by GPhoto2
General        : RawEngine dependency updated to 0.3.0
General        : Raw metadata can be edited, changed, added to TIFF/EP like RAW file formats (require Exiv2 >= 0.18).
                 Currently DNG, NEF, and PEF raw files are supported. More will be added in the future.
General        : New option in Help menu to list all main components/libraries used by digiKam.
General        : Ported to CMake/Qt4.
General        : Thumbs KIO-Slave removed. digiKam now use multi-threading to generate thumnails.
General        : Removed all X11 library dependencies. Code is now portable under MACOS-X and Win32.
General        : Support of XMP metadata (require >= Exiv2 0.16).
General        : Hardware handling using Solid interface.
General        : Preview of Video and Audio files using Phonon interface.
General        : Database file can be stored on a customized place to support remote album library path.
General        : New database schema to host more photo and collection information.
General        : Database interface fully re-written using Qt4 SQL tool.
General        : Support of multiple roots album paths.
General        : Physical root albums are managed as real album.
General        : New option in Help menu to list all RAW file formats supported.
General        : Geolocation of pictures from sidebars is now delegate to Marble widget.

CameraGUI      : New design for camera interface.
CameraGUI      : New Capture tool.
CameraGUI      : New bargraph to display camera media free-space.

AlbumGUI       : Added Thumbbar with Preview mode to easy navigate between pictures.
AlbumGUI       : Integration of Simple Text Search tool to left sidebar as Amarok.
AlbumGUI       : New advanced Search tools. Re-design of Search backend, based on XML.
                 Re-design of search dialog for a better usability.
                 Searches based on metadata and image properties are now possible.
AlbumGUI       : New fuzzy Search tools based on sketch drawing template.
                 Fuzzy searches backend use an Haar wevelet interface.
                 You simply draw a rough sketch of what you want to find and digiKam displays
                 for you a thumbnail view of the best matches.
AlbumGUI       : New Search tools based on marble widget to find pictures over a map.
AlbumGUI       : New Search tools to find similar images against a reference image.
AlbumGUI       : New Search tools to find duplicates images around whole collections.
AlbumGUI       : Add Tool tips to display Physical albums properties.
AlbumGUI       : Icon view item can be rated on the fly.

ImageEditor    : Added Thumbbar to easy navigate between pictures.
ImageEditor    : New tool based on LensFun library (http://lensfun.berlios.de) to correct automaticaly lens aberrations.
ImageEditor    : LensDistortion and AntiVignetting are now merged with LensFun tool
ImageEditor    : All image tool tool settings provide default buttons to reset values.
ImageEditor    : New Raw import tool to handle Raw pictures with customized decoding settings.
ImageEditor    : All image tool dialogs are removed. All tools are embedded in editor window.
ImageEditor    : Ported print management to Qt4.
ImageEditor    : New ratio crop composition guide based on Diagonal Rules.

CameraGUI      : Add Icon-View items Tooltip.
CameraGUI      : List camera item in more suitable order: more recent items on the top, older one on the bottom.
CameraGUI      : Animation over camera icon view during camera download.

*****************************************************************************************************
BUGFIXES:

001 ==> 172680 - digiKam crashes when I try to download the photos from my camera.
002 ==> 166578 - Default Keyboard zoom requires three fingers.
003 ==> 171318 - digiKam backend does not exit on Quit - processes hang.
004 ==> 175401 - digiKam doesn't always detect mass storage camera.
005 ==> 176472 - Moving/Deleting all files from an album crashes digiKam.
006 ==> 165885 - Thumbnails and images are not displayed in the main view center pane.
007 ==> 166439 - Drag and drop on lighttable does not work.
008 ==> 172730 - Preview only, but no photo details shown at all.
009 ==> 169830 - digiKam crashed when navigating large images.
010 ==> 173533 - Crash when deselecting a single photo with CTRL+left mouse click.
011 ==> 169764 - RAW file import lacks I18N support, no decoding.
012 ==> 168918 - Rectangular selection tool often looses selection when dragging vertices.
013 ==> 176654 - Buttons for setting album date in album properties not working.
014 ==> 173746 - Embed view does not work; I can not see an image.
015 ==> 172164 - Crash when downloading photos from Canon Powershot A95.
016 ==> 165325 - Crash when trying to import pictures from a USB-Camera.
017 ==> 174642 - Crashes when try to connect to Kodak Z812 IS.
018 ==> 168514 - Minimum Screen Size Too Large.
019 ==> 133058 - Kodak DC4800 can only be read if desktop did not try to mount it.
020 ==> 128783 - HP Instant Share to work with digiKam.
021 ==> 132064 - Showing SVG / Vector Graphics.
022 ==> 138548 - Error downloading or detecting camera when connected.
023 ==> 137233 - Proper input constraints in New Album dialog.
024 ==> 176086 - Recursive slideshow only shows last album.
025 ==> 171234 - Tag names imported from older digiKam are cut off in new version.
026 ==> 173828 - Geolocation do not except Canon EOS 1D Mark III CR2-files.
027 ==> 150938 - Album thumbnail view very slow on NFS.
028 ==> 137707 - A new icon for the albums in digiKam.
029 ==> 176725 - Drag and drop stopped working.
030 ==> 121460 - Album date average incorrect.
031 ==> 115046 - Light-table usability, possible improvements.
032 ==> 176584 - Mousewheeling on a slideshow sometimes crash digiKam.
033 ==> 147477 - Camera > Media Browse does not populate information until click second time.
034 ==> 169228 - View and Edit Icons missing in medium size.
035 ==> 165321 - Maximized mode doesn't work, digiKam is "under" the taskbar.
036 ==> 175914 - Select new items in camera import window selects all files / forgets status.
037 ==> 132362 - Support for BOTH "jpgComment" and "jpgUser comment" EXIF data.
038 ==> 133878 - Filter which files to import.
039 ==> 167874 - Item count in tag and album view is not updated.
040 ==> 176972 - Using create "Date-based  sub-albums"  makes import fail.
041 ==> 131447 - Problem dragging folders from digiKam to other places, like the desktop
042 ==> 156847 - Missing thumbnails in album overview.
043 ==> 146714 - IE, showFoto, album view rotation: rotated TIFs are losing metadata about picture.
044 ==> 147961 - Search / Order by color.
045 ==> 151922 - Assign-tag menu icons sometimes in the wrong place.
046 ==> 176565 - Loading a directory with more than 5000 raw files (NEF) make digiKam crash.
047 ==> 152262 - Unable to load tiff file.
048 ==> 148779 - Resync or refresh IPTC-comments.
049 ==> 147772 - Confusing UI for re-sizing side-bars.
050 ==> 098225 - Printing and displaying Exif information over the picture.
051 ==> 171953 - Using create "Date-based  sub-albums"  makes import fail.
052 ==> 133211 - Media browse corrupted display.
053 ==> 168928 - Rotation of raw images.
054 ==> 174683 - Crashes when try to correct red eye.
055 ==> 136206 - Losing tags after an move or rename of image files.
056 ==> 142774 - Moving pictures between albums.
057 ==> 160664 - Protected file to camera.
058 ==> 143864 - Tool to remove Chromatic Aberration from photos.
059 ==> 125233 - "purple fringe" correction tool.
060 ==> 150161 - UFRaw as tool for RAW.
061 ==> 147876 - Broken/renamed images after tagging.
062 ==> 117629 - Do an OCR of an image and store result in Exif/jfif.
063 ==> 172835 - The stars of the rating in the right panel are not refreshed when selecting different images.
064 ==> 153798 - Bad calculation of images in recursive showed albums.
065 ==> 134679 - Video and audio files are not imported.
066 ==> 171480 - Visual indicator missing for 100% zoom level.
067 ==> 151861 - Canon Powershot 200 is not recognized in this final version.
068 ==> 144215 - Change the comment of a picture without modify its timestamp.
069 ==> 150609 - Adjust Exif orientation tag changes files date.
070 ==> 157788 - Tools->Update Metadata Database changes timestamps of files.
071 ==> 142568 - digiKam is really slow to load a RAW (.CR2) photo.
072 ==> 151719 - Non latin1 in IPTC keywords.
073 ==> 132244 - Special Chars in Keywords decode wrong in IPTC.
074 ==> 162490 - dcraw-8.86 adds newer canon dslr with digic III support.
075 ==> 103149 - Printing wizard tool is hard to find.
076 ==> 149328 - Let RawEngine use raw decoding options when generating thumbnails.
077 ==> 168012 - Thumbnails not shown in find similar items tool so they can't be used for drag and drop.
078 ==> 148861 - [CTRL] + scroll wheel doesn't resize thumbnails.
079 ==> 154526 - Big screen size lead to small picture in main window and editor.
080 ==> 177231 - Rotate context menu in view mode.
081 ==> 125923 - Image tooltip contents not shown when albumview is scrolled up or down with cursor keys.
082 ==> 174807 - digiKam does not use desktop Trash.
083 ==> 142058 - Icons for import should use proper mime type.
084 ==> 176179 - Image editor - zoom +/- buttons alter predefined list of zoom factors.
085 ==> 177270 - Making OpenStreetMap available in the GPS-Sidebar.
086 ==> 177236 - No tooltips for cut elements in metadata panel.
087 ==> 177185 - Status bar position of current image starts from 0.
088 ==> 172632 - Album item tooltip doesn't use colors of themes properly.
089 ==> 173746 - digiKam doesn't show "big view".
090 ==> 177093 - User should not be able to delete root album.
091 ==> 177333 - digiKam can't find images in album.
092 ==> 149360 - Not all menu items may be bound to keyboard shortcuts.
093 ==> 167838 - File details panel disappears.
094 ==> 173790 - Edit previews happen too soon in Showfoto.
095 ==> 148892 - Showfoto shows images in very poor resolution.
096 ==> 177327 - Long tooltips are cut in metadata panel.
097 ==> 170784 - Metadata XMP Tab Simple List should show more metadata.
098 ==> 177422 - Crash after trying to overwrite image.
099 ==> 175322 - Import from camera: unable to create new folders.
100 ==> 177250 - Crash when importing pictures from Nikon D200 PTP.
101 ==> 161304 - Status bar info cleared after rating assigment.
102 ==> 149875 - Support interlaced PNG images.
103 ==> 177457 - digiKam crash when tagging files.
104 ==> 177608 - Wrong button text to save image tags and caption.
105 ==> 141601 - File size not updated after inserting Metadata.
106 ==> 177396 - digiKam crashes when I open RAW (CR2) file in editor.
107 ==> 177888 - Caption text area is too large.
108 ==> 146618 - Media viewer does not sort correctly.
109 ==> 156338 - DPS Files appearing in capture images dialog.
110 ==> 133185 - Better support of JVC camera : mgr_data and prg_mgr files are not images but are available to download.
111 ==> 154941 - Improve exception safety with smart pointers.
112 ==> 177894 - digiKam not displaying images.
113 ==> 175925 - USB Storage size (and Local disk) are wrong.
114 ==> 177933 - Viewing image doesn't work.
115 ==> 168004 - Timeline gives zero height column for dates with a single entry.
116 ==> 176231 - Browse Media Menu Not Populated.
117 ==> 177953 - digiKam crash when saving current search.
118 ==> 158565 - digiKam ignores files created through external applications like gimp.
119 ==> 177242 - mtime ctime rename exif import.
120 ==> 151275 - Camera tool: date & time should be taken from exif not file modified date.
121 ==> 146764 - Media viewer sort images by date and try to fill videos without exiv in the correct order (by filename).
122 ==> 175898 - Selecting in the import dialog is extremly slow.
123 ==> 182334 - digiKam always crash when I try to move the Toolbar.
124 ==> 182412 - Raw files get modified in spite of inverse setting.
125 ==> 180065 - digiKam image download from memorycard problems.
126 ==> 182352 - digiKam import from camera sort pictures in reverse order.
127 ==> 182612 - Zoom in digiKam 0.10RC2 "View Mode" - keyboard zoom does not work.
128 ==> 180223 - Rating images misbehaves when entering an album via "go to album" from another view.
129 ==> 182019 - No images displayed in albums view.
130 ==> 148166 - Leave tags tree (right sidebar) as set when closing digikam.
131 ==> 182711 - Free rotation tool is borked.
132 ==> 182665 - Assign multiple tag photo.
133 ==> 182610 - Curves Adjust tool in digiKam and showfoto could use Antialiasing for the curve.
134 ==> 182754 - Add image via context menu to an open lighttable should not clear lighttable contents.
135 ==> 182755 - Configure digiKam window too big.
136 ==> 182829 - Height of main window cannot be reduced enough to fit on low res. displays.
137 ==> 182995 - Crash when deleting empty album.
138 ==> 182013 - Sensitivity is not shown for rw2 files.
139 ==> 175205 - The application digiKam (digikam) crashed and caused the signal 11 (SIGSEGV).
140 ==> 182903 - digiKam crashes after removing the database file.
141 ==> 183131 - Missed icons for - "Caption/Tags", "Metadata", "Image Editor", "Color Management".
142 ==> 182599 - Hotkey / shortcut assignment lost ( = back to default) after restart.
143 ==> 161093 - gam_server use 40% CPU.
144 ==> 182830 - Large icons in sidebar tab titles.
145 ==> 182738 - digiKam crash on/after image library scan.
146 ==> 181657 - Fatal error crash dump.
147 ==> 103126 - Initial window size is too small.
148 ==> 143955 - Images without filename extension are inaccessible.
149 ==> 132162 - Load image tools on demand.
150 ==> 183424 - Filter images by multiple tags.
151 ==> 100770 - Create album from selected pictures.
152 ==> 129379 - Renamed Album is shown multiple times although there is only on related picture directory.
153 ==> 167417 - Showfoto cannot save files of CIFS mount.
154 ==> 164403 - Image zoom changes when choosing a new thumbnail.
155 ==> 151552 - Album and Imageeditor cache problems.
156 ==> 183489 - Light Table steels focus.
157 ==> 166472 - Thumbnail bar gone in image editor when switching back from fullscreen.
158 ==> 177181 - digiKam crashes after trying to import from Nikon Coolpix 4600.
159 ==> 183008 - Fuzzy image search requires two clicks to navigate back.
160 ==> 182858 - DigiKam becomes unusable when removing a collection that is part of a "Find Duplicates" search result.
161 ==> 183887 - Importing photos first time and crashed.
162 ==> 183835 - Crash after multiple move/delete albums operations.
163 ==> 184091 - Crash at startup if albums moved between collections externally.
164 ==> 160196 - Unable to save preferences for Color Management: ManagedView.
165 ==> 180050 - Metadata from external program not showing.
166 ==> 147677 - Wish EXIF sort option.
167 ==> 181347 - Cannot download picture with digiKam: estimated space.
168 ==> 181721 - Right-click does nothing if not on or around an image in the top Light Table panel.
169 ==> 181698 - Cannot delete fuzzy searches.
170 ==> 181720 - Can't rename fuzzy searches.
171 ==> 181889 - Resize image (tool): click and drag the size slider does not work properly.
172 ==> 181893 - Blur: dragging the preview image removes the target frame and leaves only the source frame.
173 ==> 181913 - digiKam 0.10.0 RC1 unbootable.
174 ==> 181930 - Slider for resizing does not work, i.e.shows either 1 or some extremely high number.
175 ==> 181940 - Image editor tools does not remember preview mode.
176 ==> 181964 - Image Editor's "fit-to-window" is broken when invoking a filter.
177 ==> 181705 - Rating filter in status bar not changeable, if rating is not shown in album view.
178 ==> 182096 - Download photos from memory card / camera to new album downloads photos to parent album.
179 ==> 177241 - Buttons not aligned after adding of new collection.
180 ==> 182223 - After modifiyng an image, saving to another format crashes digiKam.
181 ==> 181792 - Folders appear empty on first run after older -> newer import.
182 ==> 175746 - digiKam doesn't remove IPTC data.
183 ==> 176140 - Redeye tool is not working fine.
184 ==> 181610 - Discard button not working in "Apply changes?".
185 ==> 173412 - Can't use a samba share for my collection?
186 ==> 176873 - Database synchronisation segfaulted, albums disappeared.
187 ==> 170929 - Compilation of SVN version fails with gcc 4.3.2 unless debug option is activated.
188 ==> 171989 - Can't set GPS photo location on .nef images.
189 ==> 172018 - Initial cursor in the "sharpen" dialog is on the "cancel" button.
190 ==> 172033 - Unable to draw rectangle from right to left.
191 ==> 169814 - Compilation error: no exp2().
192 ==> 165345 - Selecting images from bottom right to top left does not work.
193 ==> 170693 - Enable geotagging of Olympus orf images.
194 ==> 170711 - Write single Keywords instead of Hierarchy into IPTC.
195 ==> 168569 - New Album Folders are not detected in displayed in GUI until restart.
196 ==> 165337 - Text overlapping box on welcome page.
197 ==> 171310 - No preview photos shown clicking on imported albums.
198 ==> 171778 - digiKam does not load photos in its database.
199 ==> 171736 - Make transferring of metadata between machines easier.
200 ==> 166437 - Deleting images in Image Editor not working properly.
201 ==> 141087 - Showing info about the image in a tooltip in the camera import view.
202 ==> 157636 - Problem when creating album.
203 ==> 127753 - Persistent selection / image tray.
204 ==> 138927 - wish:  modeless "Rebuild All Thumbnails" dialg box.
205 ==> 178061 - Scancontroller missing dependecy to CacheLock.
206 ==> 178051 - digiKam loses rating video from 0.9 to 0.10.
207 ==> 178403 - Single image view is blank.
208 ==> 178223 - Crash on external deletion of image.
209 ==> 175322 - Import from camera: unable to create new folders.
210 ==> 177934 - Image status on camera gets broken when usb device silently disconnects.
211 ==> 169227 - Configure shortcuts dialog broken.
212 ==> 177417 - Changing properties results in sub albums disappear.
213 ==> 177329 - Quick search is case sensitive [regression].
214 ==> 162206 - Wish: case sensitivity in the text quick filter.
215 ==> 168582 - digiKam fails to save images in home directory.
216 ==> 147771 - Menubar missing after full-screen, quit, restart.
217 ==> 173637 - Kodac DX7630 not recognized.
218 ==> 175102 - Crashes opening the image editor for raw images (mrw). Embedded editor does not work.
219 ==> 176480 - Application: digiKam (digikam), signal SIGSEGV.
220 ==> 175717 - digiKam crashes when configure is called.
221 ==> 177057 - Two View menus in menubar.
222 ==> 166562 - Rebuild thumbnails window stays on top when switching apps.
223 ==> 178011 - Problems of the camera gui with Canon EOS 350D.
224 ==> 175598 - digiKam always starts in fullscreen after a crash.
225 ==> 121372 - No way to modify font size for various text displays.
226 ==> 178325 - Rebuild all thumbnails consumes large amounts of memory when processing at the end.
227 ==> 178608 - Center headers in item tooltip.
228 ==> 178607 - Order of elements in status bar.
229 ==> 178613 - Wording in mime-setup page.
230 ==> 156836 - Preview zoom to 100 percent is not 100 percent viewing Canon RAW/CR2.
231 ==> 178346 - Contextual menu is empty.
232 ==> 175844 - digiKam crashes at startup loading tools.
233 ==> 178881 - Identifying already copied pictures right from the transfert window.
234 ==> 175630 - Setting panels of image editor effects should be fully visible.
235 ==> 178583 - digiKam displays no images in album view.
236 ==> 178190 - Sidepane's width not remembered.
237 ==> 178800 - Possibility to move photo's via the thumbnail.
238 ==> 178677 - Batch tools missing from menu.
239 ==> 139017 - OS X 10.4.8 digiKam fails to detect libjpeg6b during compile.
240 ==> 154478 - showFoto does not sort pictures by name.
241 ==> 179139 - Filters not applied real-time.
242 ==> 178435 - Solid doesn't automatically detect digital camera.
243 ==> 141864 - Show album properties when hovering album name.
244 ==> 175626 - digiKam crashes while startup.
245 ==> 178839 - digiKam crashes on exiv2 error.
246 ==> 178673 - Zoom combo box shows wrong value instead of 100%.
247 ==> 179141 - digiKam crashes when exiting.
248 ==> 179276 - Namuga webcam Samsung netbook NC10.
249 ==> 179274 - "XMP" not underscored in settings dialog.
250 ==> 179298 - digiKam scan for new images progress bar starts at 100%.
251 ==> 178103 - digiKam error: Failed to revise Exif orientation.
252 ==> 174026 - Too narrow area to show buttons in slideshow.
253 ==> 178382 - Many and duplicate top level menu entries.
254 ==> 130230 - Wrong date in header using date-view.
255 ==> 179534 - Crash when deleting album.
256 ==> 178606 - Image move to trash removes file but not displayed image.
257 ==> 179653 - "Filter active" icon not set if filter is "rating equals zero stars".
258 ==> 134486 - Keywords are not written to raw files even though they do embed iptc/exif.
259 ==> 168839 - digiKam crashed after tagging.
260 ==> 167085 - Color selection in sketch search tool looks plain black.
261 ==> 168852 - Crash on profile application.
262 ==> 167867 - Album view is reset by changing settings.
263 ==> 168461 - Info in Properties panel not updated after moving to other image.
264 ==> 169704 - Crash during RAW import.
265 ==> 166310 - Preview not working in image effect dialogs.
266 ==> 167571 - Unnatural order when removing images from light table.
267 ==> 167139 - Crash if Exif.GPSInfo.GPSAltitude is empty.
268 ==> 167778 - Assigning ratings in image editor via shortcuts or toolbar not working.
269 ==> 168567 - Unable to edit or remove IPTC and XMP info.
270 ==> 168846 - Crash after playing with tags (seems to be rather a crash in Qt).
271 ==> 166671 - Image filter dialog buttons are much too big.
272 ==> 173691 - digiKam doesn't show pictures.
273 ==> 091811 - Feature request: find pictures by meta tag info, date.
274 ==> 173853 - seg fault digiKam with marble widget (at startup).
275 ==> 173995 - digiKam crashes on loading main view.
276 ==> 163143 - digiKam doesn't detect new photos in import from a camera.
277 ==> 107316 - Option: Only download new photos from camera.
278 ==> 174108 - digikam and exiv2 crash with AVI file.
279 ==> 174202 - Albums` names are duplicated after migrating from digikam-0.9.4.
280 ==> 167873 - Tag and album trees are not expanded when searching for entries.
281 ==> 169641 - digiKam crashed while downloading AVI-files from Canon S5 IS.
282 ==> 169964 - Crash when importing my picture and video collection
283 ==> 174615 - digiKam 0.10 compile error.
284 ==> 174620 - After updating to current svn digikam crashes.
285 ==> 175650 - digiKam crash at startup without Phonon problems.
286 ==> 173918 - digiKam msvc binaries doesn't work.
287 ==> 175662 - USB camera transfer hangs and works only the second time tried.
288 ==> 174991 - digiKam freezes when generating new tag.
289 ==> 171414 - Crash (with SIGSEV) when closing the application.
290 ==> 175597 - Crash when trying to access usb cam (autodetected).
291 ==> 176023 - digiKam svn: compile error.
292 ==> 174752 - Creating a new album gives _two_ new albums, with the same name.
293 ==> 173645 - digiKam crashes after start dialog.
294 ==> 165885 - Thumbnails and images are NOT displayed in the main view center pane.
295 ==> 167139 - Crash if Exif.GPSInfo.GPSAltitude is empty.
296 ==> 167168 - Timeline view shows redundant extra sections.
297 ==> 166440 - Removing images from Light Table is not working properly.
298 ==> 166484 - digiKam crashes when changing some settings and using "find similar" after the changes made.
299 ==> 167124 - Timeline view not updated when changing selected time range.
300 ==> 166564 - Display of *already* *created* thumbnails is slow.
301 ==> 179712 - Open image in embeded editor lead to digiKam crash.
302 ==> 179031 - Exposure times shown for Panasonic RAW pictures do not make sense.
303 ==> 179745 - Rating information in right sidebar is not updated.
304 ==> 179650 - Crash when clearing album quick search if album UI empty.
305 ==> 179850 - Show sorting of albums/tags in left panel.
306 ==> 148198 - Rating/Editing of images in Thumbnail view.
307 ==> 179895 - digiKam does not rotate thumbnails/preview.
308 ==> 177887 - XMP tags do not get deleted.
309 ==> 180006 - Camera GUI window title contains '&'.
310 ==> 129970 - Display a cloud of tags like in flickr.
311 ==> 179531 - Showfoto crash on saveas jpegs.
312 ==> 154426 - Light table should remember zoom-state.
313 ==> 179801 - Clicking the fuzzy search thumbnails open small pictures.
314 ==> 177329 - Quick search is case sensitive [regression].
315 ==> 179933 - Context menu of top "My Albums" isn't right.
316 ==> 155593 - Add checkbox for disabling call to utime().
317 ==> 180126 - digiKam does not display pictures if one clicks on the bar representing the number of pictures for a month.
318 ==> 180196 - digiKam fails to compile on mac os x leopard.
319 ==> 180447 - Images imported into wrong folder.
320 ==> 180003 - when creating a new folder where download new photoes the parent album remains selected.
321 ==> 179012 - Advanced search missing negative conditions (changed from 0.9).
322 ==> 180336 - UNDO/REDO not working right when editing images.
323 ==> 180489 - "Delete" menu action in the "Image" menu should say "Move to Trash".
324 ==> 180570 - Crash when changing folder during rating.
325 ==> 178952 - Error when changing the database path.
326 ==> 180609 - Export menu items disabled by default.
327 ==> 178251 - Crash (signal 6) when new user uses home dir.
328 ==> 179898 - Dark theme: font in properties tab too dark.
329 ==> 177009 - digiKam eats all CPU when Restore tool is selected.
330 ==> 179807 - Inpainting tool stuck at 0%.
331 ==> 180926 - Image thumbnails in albums not showing.
332 ==> 181000 - Crash on closing Camera GUI after download+delete all.
333 ==> 180908 - digiKam does not compile with recent Qt 4.5 snapshot; QVariant issue.
334 ==> 180953 - Clicking a folder closes or open it instead of just view it.
335 ==> 179548 - Additional guide for aspect ratio crop.
336 ==> 181146 - Source album {MY ALBUM NAME} not found in database.
337 ==> 169306 - Renaming an album should reorder the whole album list.
338 ==> 180342 - Crash when migrating from 9.4 on Ubuntu Intrepid Ibex.
339 ==> 181203 - Crash when closing import window.
340 ==> 181221 - Lighttable crashes when playing with the zoom.
341 ==> 180351 - Tooltip exposure shown as "unavailable" even if info present in EXIF.
342 ==> 180110 - Search by rating does not work in combination with other search arguments.
343 ==> 178326 - Misleading error method when database locked.
344 ==> 174469 - Fatal error message  signal11(SIGSEGV).
345 ==> 167725 - After clicking on thumbnails, digikam doesn't show any images and crashes.
346 ==> 180926 - Image thumbnails in albums not showing.
347 ==> 181184 - In fullscreen, thumbnails rating stars follow bottom scrollbar.
348 ==> 180009 - digiKam crashed when downloading pictures from pictures from digital camera.
349 ==> 177936 - Choose zoom an change image break Percent-Zoom Pulldown.
350 ==> 166472 - Thumbnail bar gone in image editor when switching back from fullscreen.
351 ==> 166483 - Error in "not enough disk space" error message.
352 ==> 167379 - Image selection for export tool.
353 ==> 166622 - Confusing Add Images use.
354 ==> 166576 - digiKam quits when running "Rebuild all Thumbnail Images" twice.
355 ==> 167562 - Image Editor Shortcut Keys under Edit redo/undo are missing in GUI.
356 ==> 167561 - Crash when moving albums.
357 ==> 167529 - Image Editor not working correctly after setting "use horizontal thumbbar" option.
358 ==> 167621 - digiKam crashes when trying to remove a tag with the context menu.
359 ==> 165348 - Problems when trying to import data.
360 ==> 166424 - Crash when editing Caption with digiKam4 SVN.
361 ==> 166663 - Tags not showing pictures without "Include Tag Subtree".
362 ==> 166616 - Filmstrip mode in View.
363 ==> 182737 - Album view is not updated after saving edited PNG files, not even after restart.
364 ==> 178204 - Entire hierarchy is not displayed.
365 ==> 184686 - Enable insertion of special unicode control characters (LRM, RTL, RTL, RLM...) at the caption edit box. (right click).
366 ==> 178762 - showFoto thumbnail browser incorrectly sorts images.
367 ==> 184639 - Can not save an image twice.
368 ==> 184731 - Cannot apply inpainting, it just hangs.
369 ==> 152527 - digiKam can't read Image Size and Bit Depth of PNGs generated by UFRAW.
370 ==> 185109 - digiKam crash on exit.
371 ==> 184637 - Potential data loss with image editor automatically switching file.
372 ==> 184641 - Image editor loads images even when closed.
373 ==> 185106 - Advanced search is not saved/restored correctly.
374 ==> 184187 - Tags displayed with their full path.
375 ==> 182212 - Zoom to fit in image editor is not always sticky.
376 ==> 185232 - Images can not be removed from within the light table.
377 ==> 184469 - Red eyes doesn't work here.
378 ==> 184473 - Reproducable Crash in Albumview.
379 ==> 182611 - Segfault with Samsung S85 RAW images.
380 ==> 184954 - Unable to delete items from camera - canon sx10is.
381 ==> 175077 - digiKam does not print.
382 ==> 185481 - digiKam hangs when changing filtering under specific conditions.
383 ==> 185574 - Crash while importing images from cardreader.
384 ==> 185317 - Album thumbnails are gone when moving nested albums.
385 ==> 185805 - digiKam 0.10.0-rc2 fails to save keyword hierarchy in IPTC and XMP tags.
386 ==> 185744 - Crash while entering new caption (or clicking thumbnail icon in folder view).
387 ==> 182376 - Window opened when 'Sharpen' is selected from Enhance Menu cannot be re-sized.
388 ==> 185915 - Album View: "Created" time of video set to "00:00".
389 ==> 185494 - No images in digikam, possibly database problem, however they look fine in showphoto.
390 ==> 186205 - Can't open photo in the external application from digiKam.
391 ==> 158868 - Non natural album sorting.
392 ==> 187015 - Libraw 0.6.16 breaks RW2 file handling.
393 ==> 187095 - Images are not displayed at central panel.
394 ==> 186837 - Libexiv2 crashes on certain JPGs.
395 ==> 185911 - Crash on Synchronize Images with Database.
396 ==> 168916 - Please put anti-aliasing in the perspective adjustment tool.
397 ==> 152528 - Nikon D80 icc profile not recognized as input profile in Showfoto.
398 ==> 167320 - Filmstrip in album view is not synchronized correctly.
399 ==> 172911 - Album File lister does not have an "All Image Files" filter.
400 ==> 167777 - Thumbnails in Album not shown at first start of digiKam.
401 ==> 146864 - Lesser XMP support in digiKam.
402 ==> 145096 - Request: acquire mass storage from printer as from camera. Change menu "Camera" to "Acquire".
403 ==> 134206 - Rethink about: Iptc.Application2.Urgency <==> digiKam Rating.
404 ==> 149966 - Alternative IPTC Keyword Separator (dot notation).
405 ==> 129437 - Album could point to network path. Now it's impossible to view photos from shared network drive.
406 ==> 137694 - Allow album pictures to be stored on network devices.
407 ==> 114682 - About library path.
408 ==> 122516 - Album Path cannot be on Network device (Unmounted).
409 ==> 107871 - Allow multiple album library path.
410 ==> 105645 - Impossible to not copy images in ~/Pictures.
411 ==> 132697 - Metadata list has no scrollbar.
412 ==> 148502 - Show rating in embedded preview / slideshow.
413 ==> 155408 - Thumbbar in the album view.
414 ==> 138290 - Geolocation tool integration in the side bar.
415 ==> 098651 - Editor tool filter based on clens.
416 ==> 147426 - Search for non-voted pics
417 ==> 149555 - Always present search box instead of search by right-clicking and selecting simple or advanced search.
418 ==> 139283 - IPTC Caption comment in search function.
419 ==> 150265 - Avanced search filter is missing search in comment / description.
420 ==> 155735 - Make it possible to search on IPTC-text.
421 ==> 147636 - GUI error in advanced searches: lots of free space.
422 ==> 158866 - Advanced Search on Tags a mess.
423 ==> 149026 - Search including sub-albums.
424 ==> 153070 - Search for image by geo-location.
425 ==> 154764 - Pictures saved into root album folder are not shown.
426 ==> 162678 - digiKam crashed while loading.
427 ==> 104067 - Duplicate image finder should offer more actions on duplicate images found.
428 ==> 107095 - Double image removal: Use trashcan.
429 ==> 112473 - findimages shows only small thumbnails.
430 ==> 150077 - Find Duplicate Images tool quite unusable on many images (a couple of issues).
431 ==> 161858 - Find Duplicate Image fails with Canon Raw Files.
432 ==> 162152 - Batch Duplicate Image Management.
433 ==> 164418 - GPS window zoom possibility.
434 ==> 117287 - Search albums on read only album path.
435 ==> 164600 - No picture in view pane.
436 ==> 164973 - Showfoto crashed at startup.
437 ==> 165275 - build-failure - imageresize.cpp - 'KToolInvocation' has not been declared.
438 ==> 165292 - albumwidgetstack.cpp can't find Phonon/MediaObject.
439 ==> 165341 - Crash when changing histogram channel when welcome page is shown.
440 ==> 165318 - digiKam doesn't start because of SQL.
441 ==> 165342 - Crash when changing album sort modus.
442 ==> 165338 - Right sidebar initally too big.
443 ==> 165280 - Sqlite2 component build failure.
444 ==> 165769 - adjustcurves.cpp - can't find version.h
445 ==> 172650 - No external modules available.
446 ==> 172651 - Send image by email missing.
447 ==> 168005 - Week view broken in timeline.
448 ==> 172295 - digiKam has a hard dependency on Jasper library.
449 ==> 172733 - Crash on Synchronize images with database.
450 ==> 172776 - Combine Edit and Album menus, and other ideas.
451 ==> 172836 - No menu item for lensfun.
452 ==> 172912 - "Slide" becomes "Slideshow" text on button in Main window.
453 ==> 172882 - Setup verbiage patches.
454 ==> 172884 - Welcome/First-Run verbiage patches.
455 ==> 172892 - Tips verbiage changes.
456 ==> 172895 - Setup verbiage patches for slideshow and albumview.
457 ==> 172898 - Verbiage changes for Util-ImageEditor-ImageResize.cpp.
458 ==> 172899 - Verbiage changes for digikamapp.cpp.
459 ==> 171953 - Using create "Date-based sub-albums" makes import fail.
460 ==> 118318 - Make (lib)gphoto support a configure flag.
461 ==> 172269 - digiKam hangs for around 20-60 seconds when starting.
462 ==> 172648 - Thumbnail click does not display embedded picture preview.

{'repo_name': 'KDE/digikam', 'stars': '260', 'repo_language': 'C++', 'file_name': 'darkroom.colors', 'mime_type': 'text/plain', 'hash': 399290882393380535, 'source_dataset': 'data'}


//  FSImageViewer
//
//  Created by Felix Schulze on 8/26/2013.
//  Copyright 2013 Felix Schulze. All rights reserved.
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.
//

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import "FSImageSource.h"
#import "FSImageLoader.h"

@class FSImageScrollView, FSImageTitleView;

@interface FSImageView : UIView <UIScrollViewDelegate>

@property(strong, nonatomic) id <FSImage> image;
@property(strong, nonatomic, readonly) UIImageView *imageView;
@property(strong, nonatomic, readonly) FSImageScrollView *scrollView;
@property(assign, nonatomic) BOOL loading;
@property(assign, nonatomic) BOOL rotationEnabled;

- (void)killScrollViewZoom;

- (void)layoutScrollViewAnimated:(BOOL)animated;

- (void)prepareForReuse;

- (void)changeBackgroundColor:(UIColor *)color;

- (void)changeProgressViewColor:(UIColor *)color;

- (void)rotateToOrientation:(UIInterfaceOrientation)orientation;

@end

{'repo_name': 'x2on/FSImageViewer', 'stars': '337', 'repo_language': 'Objective-C', 'file_name': 'InfoPlist.strings', 'mime_type': 'text/plain', 'hash': -45604620161111273, 'source_dataset': 'data'}


Mat Object: 3 MPI processes
  type: mpiaij
  rows=18, cols=18
  total: nonzeros=74, allocated nonzeros=180
  total number of mallocs used during MatSetValues calls=0
    not using I-node (on process 0) routines
matrix information (global sums):
nonzeros = 74, allocated nonzeros = 180
matrix information (global max):
nonzeros = 29, allocated nonzeros = 60

{'repo_name': 'petsc/petsc', 'stars': '179', 'repo_language': 'C', 'file_name': 'makedocs', 'mime_type': 'text/x-shellscript', 'hash': 4844944078348617933, 'source_dataset': 'data'}


# SGF Parsing

Parsing a Smart Game Format string.

[SGF](https://en.wikipedia.org/wiki/Smart_Game_Format) is a standard format for
storing board game files, in particular go.

SGF is a fairly simple format. An SGF file usually contains a single
tree of nodes where each node is a property list. The property list
contains key value pairs, each key can only occur once but may have
multiple values.

An SGF file may look like this:

```text
(;FF[4]C[root]SZ[19];B[aa];W[ab])
```

This is a tree with three nodes:

- The top level node has three properties: FF\[4\] (key = "FF", value
  = "4"), C\[root\](key = "C", value = "root") and SZ\[19\] (key =
  "SZ", value = "19"). (FF indicates the version of SGF, C is a
  comment and SZ is the size of the board.)
  - The top level node has a single child which has a single property:
    B\[aa\].  (Black plays on the point encoded as "aa", which is the
    1-1 point (which is a stupid place to play)).
    - The B\[aa\] node has a single child which has a single property:
      W\[ab\].

As you can imagine an SGF file contains a lot of nodes with a single
child, which is why there's a shorthand for it.

SGF can encode variations of play. Go players do a lot of backtracking
in their reviews (let's try this, doesn't work, let's try that) and SGF
supports variations of play sequences. For example:

```text
(;FF[4](;B[aa];W[ab])(;B[dd];W[ee]))
```

Here the root node has two variations. The first (which by convention
indicates what's actually played) is where black plays on 1-1. Black was
sent this file by his teacher who pointed out a more sensible play in
the second child of the root node: `B[dd]` (4-4 point, a very standard
opening to take the corner).

A key can have multiple values associated with it. For example:

```text
(;FF[4];AB[aa][ab][ba])
```

Here `AB` (add black) is used to add three black stones to the board.

There are a few more complexities to SGF (and parsing in general), which
you can mostly ignore. You should assume that the input is encoded in
UTF-8, the tests won't contain a charset property, so don't worry about
that. Furthermore you may assume that all newlines are unix style (`\n`,
no `\r` or `\r\n` will be in the tests) and that no optional whitespace
between properties, nodes, etc will be in the tests.

The exercise will have you parse an SGF string and return a tree
structure of properties. You do not need to encode knowledge about the
data types of properties, just use the rules for the
[text](http://www.red-bean.com/sgf/sgf4.html#text) type everywhere.

## Hints
- To parse the text, you could try to use the [Sprache](https://github.com/sprache/Sprache/blob/develop/README.md) library. You can also find a good tutorial [here](https://www.thomaslevesque.com/2017/02/23/easy-text-parsing-in-c-with-sprache/).

## Running the tests

To run the tests, run the command `dotnet test` from within the exercise directory.

Initially, only the first test will be enabled. This is to encourage you to solve the exercise one step at a time.
Once you get the first test passing, remove the `Skip` property from the next test and work on getting that test passing.
Once none of the tests are skipped and they are all passing, you can submit your solution
using `exercism submit SgfParsing.cs`

## Further information

For more detailed information about the C# track, including how to get help if
you're having trouble, please visit the exercism.io [C# language page](http://exercism.io/languages/csharp/resources).

{'repo_name': 'exercism/csharp', 'stars': '145', 'repo_language': 'C#', 'file_name': 'config.yml', 'mime_type': 'text/plain', 'hash': 6263850407533971363, 'source_dataset': 'data'}


"use strict";

// Here we want to test that blob URLs are not available between private and
// non-private browsing.

const BASE_URI =
  "http://mochi.test:8888/browser/browser/components/" +
  "privatebrowsing/test/browser/empty_file.html";

add_task(async function test() {
  info("Creating a normal window...");
  let win = await BrowserTestUtils.openNewBrowserWindow();
  let tab = win.gBrowser.selectedBrowser;
  BrowserTestUtils.loadURI(tab, BASE_URI);
  await BrowserTestUtils.browserLoaded(tab);

  let blobURL;

  info("Creating a blob URL...");
  await SpecialPowers.spawn(tab, [], function() {
    return Promise.resolve(
      content.window.URL.createObjectURL(new content.window.Blob([123]))
    );
  }).then(newURL => {
    blobURL = newURL;
  });

  info("Blob URL: " + blobURL);

  info("Creating a private window...");
  let privateWin = await BrowserTestUtils.openNewBrowserWindow({
    private: true,
  });
  let privateTab = privateWin.gBrowser.selectedBrowser;
  BrowserTestUtils.loadURI(privateTab, BASE_URI);
  await BrowserTestUtils.browserLoaded(privateTab);

  await SpecialPowers.spawn(privateTab, [blobURL], function(url) {
    return new Promise(resolve => {
      var xhr = new content.window.XMLHttpRequest();
      xhr.onerror = function() {
        resolve("SendErrored");
      };
      xhr.onload = function() {
        resolve("SendLoaded");
      };
      xhr.open("GET", url);
      xhr.send();
    });
  }).then(status => {
    is(
      status,
      "SendErrored",
      "Using a blob URI from one user context id in another should not work"
    );
  });

  await BrowserTestUtils.closeWindow(win);
  await BrowserTestUtils.closeWindow(privateWin);
});

{'repo_name': 'dothq/browser', 'stars': '280', 'repo_language': 'TypeScript', 'file_name': 'settings.json', 'mime_type': 'text/plain', 'hash': -7294208643146987522, 'source_dataset': 'data'}


using System.Collections.Generic;
using CreepyTowers.Collectables;
using CreepyTowers.Enemy.Bosses;
using CreepyTowers.Enemy.Creeps;
using DeltaEngine.Datatypes;
using DeltaEngine.Entities;
using DeltaEngine.Extensions;

namespace CreepyTowers.Enemy
{
	public class Movement : UpdateBehavior
	{
		public override void Update(IEnumerable<Entity> entities)
		{
			var collectables = EntitiesRunner.Current.GetEntitiesOfType<Collectable>();
			foreach (Enemy enemy in entities)
			{
				if (enemy.Path == null)
					continue; //ncrunch: no coverage
				if (enemy.Path.Count > 0)
					enemy.CurrentTarget = enemy.Path[0];
				if (enemy.Position == enemy.FinalTarget)
				{
					enemy.HasReachedExit();
					enemy.Dispose();
					continue;
				}
				var previous = enemy.Direction;
				UpdatePositionAndRotation(enemy);
				CheckForProximityToDamagingCollectable(enemy, collectables);
				CheckIfWeCanRemoveFirstNode(enemy, previous.GetVector2D());
				if (!(enemy is Creep))
					continue;
				((Creep)enemy).RecalculateHitpointBar();
				((Creep)enemy).ModifyStatusIcons();
			}
		}

		private static void UpdatePositionAndRotation(CreepyTowers.Enemy.Enemy enemy)
		{
			var direction = enemy.Direction;
			enemy.Position += direction * (GetVelocity(enemy, enemy.GetStatValue("Speed")) * Time.Delta);
			if (enemy.Model == null)
				return;
			enemy.Model.Position = enemy.Position;
			enemy.RotationZ = MathExtensions.Atan2(direction.X, -direction.Y);
		}

		private static float GetVelocity(CreepyTowers.Enemy.Enemy enemy, float velocity)
		{
			if (enemy is Creep)
			{
				state = ((Creep)enemy).State;
				if (((CreepState)state).Paralysed || ((CreepState)state).Frozen)
					return 0;
			}
			else if (enemy is Boss)
				state = ((Boss)enemy).State;

			if (state.Delayed)
				return velocity / 3;
			if (state.Slow)
				return velocity / 2;
			if (state.Fast)
				return velocity * 2;
			return velocity;
		}

		private static EnemyState state;

		private static void CheckForProximityToDamagingCollectable(CreepyTowers.Enemy.Enemy enemy,
			List<Collectable> collectables)
		{
			foreach (Collectable collectable in collectables)
			{
				if (collectable.Damage == 0.0f ||
					(collectable.Position.DistanceSquared(enemy.Position) > collectable.DamageRangeSquared))
					continue;
				enemy.ReceiveAttack(collectable.DamageType, collectable.Damage);
				collectable.Dispose();
			}
		}

		private static void CheckIfWeCanRemoveFirstNode(CreepyTowers.Enemy.Enemy enemy, Vector2D previous)
		{
			if (enemy.Path.Count <= 0)
				return;
			var current = enemy.CurrentTarget - enemy.Position;
			if (!(previous.DotProduct(current.GetVector2D()) <= 0.0f))
				return;
			enemy.Position = enemy.Path[0];
			enemy.Path.Remove(enemy.Path[0]);
		}
	}
}

{'repo_name': 'DeltaEngine/DeltaEngine', 'stars': '127', 'repo_language': 'C#', 'file_name': 'AssemblyInfo.cs', 'mime_type': 'text/plain', 'hash': -2965496303249638705, 'source_dataset': 'data'}


'use strict';
const path = require('path');
const pathKey = require('path-key');

module.exports = opts => {
	opts = Object.assign({
		cwd: process.cwd(),
		path: process.env[pathKey()]
	}, opts);

	let prev;
	let pth = path.resolve(opts.cwd);
	const ret = [];

	while (prev !== pth) {
		ret.push(path.join(pth, 'node_modules/.bin'));
		prev = pth;
		pth = path.resolve(pth, '..');
	}

	// ensure the running `node` binary is used
	ret.push(path.dirname(process.execPath));

	return ret.concat(opts.path).join(path.delimiter);
};

module.exports.env = opts => {
	opts = Object.assign({
		env: process.env
	}, opts);

	const env = Object.assign({}, opts.env);
	const path = pathKey({env});

	opts.path = env[path];
	env[path] = module.exports(opts);

	return env;
};

{'repo_name': 'xulayen/webpack-for-react', 'stars': '103', 'repo_language': 'JavaScript', 'file_name': 'statuses.js', 'mime_type': 'text/plain', 'hash': 3204039702466866142, 'source_dataset': 'data'}


IF (NOT EXISTS "@PROJECT_BINARY_DIR@/install_manifest.txt")
    MESSAGE (FATAL_ERROR "Cannot find install manifest: \"@PROJECT_BINARY_DIR@/install_manifest.txt\"")
ENDIF (NOT EXISTS "@PROJECT_BINARY_DIR@/install_manifest.txt")

FILE (READ "@PROJECT_BINARY_DIR@/install_manifest.txt" files)
STRING (REGEX REPLACE "\n" ";" files "${files}")
FOREACH (file ${files})
    MESSAGE (STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
    IF (EXISTS "$ENV{DESTDIR}${file}")
        EXEC_PROGRAM (
            "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
            OUTPUT_VARIABLE rm_out
            RETURN_VALUE rm_retval
            )
        IF (NOT "${rm_retval}" STREQUAL 0)
            MESSAGE (FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
        ENDIF (NOT "${rm_retval}" STREQUAL 0)
    ELSE (EXISTS "$ENV{DESTDIR}${file}")
        MESSAGE (STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
    ENDIF (EXISTS "$ENV{DESTDIR}${file}")
ENDFOREACH (file)

{'repo_name': 'sourcerer-io/sourcerer-app', 'stars': '6027', 'repo_language': 'Kotlin', 'file_name': 'install', 'mime_type': 'text/x-shellscript', 'hash': 6372400129426469924, 'source_dataset': 'data'}


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@id/ae1" android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <com.tencent.mm.ui.tools.SearchViewNotRealTimeHelper android:id="@id/bq6" android:background="@color/q" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/du" />
    <include layout="@layout/mm_action_bar_title" />
    <FrameLayout android:id="@id/bq7" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
            <RelativeLayout android:clickable="true" android:layout_width="fill_parent" android:layout_height="fill_parent">
                <FrameLayout android:id="@id/bq8" android:layout_width="fill_parent" android:layout_height="280.0dip">
                    <FrameLayout android:id="@id/axn" android:layout_width="fill_parent" android:layout_height="fill_parent" />
                    <FrameLayout android:gravity="center" android:layout_gravity="center" android:id="@id/axo" android:layout_width="fill_parent" android:layout_height="fill_parent" />
                </FrameLayout>
                <RelativeLayout android:id="@id/axp" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" />
            </RelativeLayout>
            <ImageButton android:layout_gravity="right" android:id="@id/axq" android:background="@drawable/jz" android:layout_width="49.0dip" android:layout_height="49.0dip" android:layout_marginTop="215.0dip" android:layout_marginRight="@dimen/ol" />
            <RelativeLayout android:id="@id/bq9" android:background="@color/ow" android:layout_width="fill_parent" android:layout_height="416.0dip" android:layout_marginTop="280.0dip">
                <com.tencent.mm.plugin.location.ui.PoiHeaderView android:id="@id/bq_" android:layout_width="fill_parent" android:layout_height="wrap_content" />
                <com.tencent.mm.ui.base.MMLoadMoreListView android:id="@id/bqa" android:background="@color/ow" android:layoutAnimation="@anim/aj" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000" android:layout_below="@id/bq_" />
                <RelativeLayout android:id="@id/bqb" android:background="@drawable/dl" android:visibility="visible" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentBottom="true">
                    <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" style="@style/largeCustomProgressBar" />
                </RelativeLayout>
            </RelativeLayout>
        </FrameLayout>
        <com.tencent.mm.ui.base.MMLoadMoreListView android:id="@id/bqc" android:background="@color/ow" android:focusable="true" android:visibility="gone" android:layoutAnimation="@anim/aj" android:layout_width="fill_parent" android:layout_height="fill_parent" android:listSelector="@null" android:transcriptMode="disabled" android:cacheColorHint="#00000000" android:divider="@null" android:dividerHeight="0.0px" />
        <TextView android:gravity="center" android:id="@id/bqd" android:background="@color/ow" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/bal" />
        <RelativeLayout android:id="@id/bqe" android:background="@color/ow" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent">
            <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" style="@style/largeCustomProgressBar" />
        </RelativeLayout>
    </FrameLayout>
</LinearLayout>

{'repo_name': 'reverseengineeringer/com.tencent.mm', 'stars': '201', 'repo_language': 'Smali', 'file_name': 'LibCardRecog.smali', 'mime_type': 'text/plain', 'hash': 3452618275305600469, 'source_dataset': 'data'}


# Generated by camel build tools - do NOT edit this file!
class=org.apache.camel.component.openstack.keystone.KeystoneComponentConfigurer

{'repo_name': 'apache/camel', 'stars': '3312', 'repo_language': 'Java', 'file_name': 'ActiveMQConverterLoader.java', 'mime_type': 'text/x-java', 'hash': -5020255361254696611, 'source_dataset': 'data'}


package com.yuyh.library.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Gallery;

/**
 * 每次只滑动一页的Gallery
 *
 * @author yuyh.
 * @date 16/4/10.
 */
public class SlideOnePageGallery extends Gallery {
    public SlideOnePageGallery(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public SlideOnePageGallery(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SlideOnePageGallery(Context context) {
        super(context);
    }

    private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) {
        return e2.getX() > e1.getX();
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        int kEvent;
        if (isScrollingLeft(e1, e2)) {
            kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
        } else {
            kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
        }

        onKeyDown(kEvent, null);
        return true;
    }
}

{'repo_name': 'smuyyh/SprintNBA', 'stars': '621', 'repo_language': 'Java', 'file_name': 'MaterialWaveView.java', 'mime_type': 'text/x-java', 'hash': -8092989951537773282, 'source_dataset': 'data'}


fileFormatVersion: 2
guid: 7678228baeefc21498c22a6d85f604bd
folderAsset: yes
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:

{'repo_name': 'lllyasviel/YGOProUnity_V2', 'stars': '115', 'repo_language': 'C#', 'file_name': 'AudioManager.asset', 'mime_type': 'text/plain', 'hash': -3432219925459871595, 'source_dataset': 'data'}


/*
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/

:host {
  display: block;
  position: relative;
  font-size: 14px;
  font-weight: 500;
  height: 48px;
  overflow: hidden;
}

#tabsContainer {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  white-space: nowrap;
}

#selectionBar {
  position: absolute;
  height: 2px;
  bottom: 0;
  left: 0;
  width: 0;
  background-color: #ffff8d;
  transition: width, left;
}

#selectionBar[hidden] {
  display: hidden;
}

#selectionBar.expand {
  transition-duration: 0.15s;
  transition-timing-function: cubic-bezier(0.4, 0.0, 1, 1);
}

#selectionBar.contract {
  transition-duration: 0.18s;
  transition-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1);
}

polyfill-next-selector { content: '#tabsContainer > *:not(#selectionBar)'; }
::content > * {
  -ms-flex: 1;
  -webkit-flex: 1;
  flex: 1;
}

{'repo_name': 'treeder/go-polymer', 'stars': '154', 'repo_language': 'HTML', 'file_name': 'demo.html', 'mime_type': 'text/html', 'hash': 167004103887110497, 'source_dataset': 'data'}


Bridge.merge(new System.Globalization.CultureInfo("th", true), {
    englishName: "Thai",
    nativeName: "ไทย",

    numberFormat: Bridge.merge(new System.Globalization.NumberFormatInfo(), {
        nanSymbol: "NaN",
        negativeSign: "-",
        positiveSign: "+",
        negativeInfinitySymbol: "-∞",
        positiveInfinitySymbol: "∞",
        percentSymbol: "%",
        percentGroupSizes: [3],
        percentDecimalDigits: 2,
        percentDecimalSeparator: ".",
        percentGroupSeparator: ",",
        percentPositivePattern: 1,
        percentNegativePattern: 1,
        currencySymbol: "฿",
        currencyGroupSizes: [3],
        currencyDecimalDigits: 2,
        currencyDecimalSeparator: ".",
        currencyGroupSeparator: ",",
        currencyNegativePattern: 1,
        currencyPositivePattern: 0,
        numberGroupSizes: [3],
        numberDecimalDigits: 2,
        numberDecimalSeparator: ".",
        numberGroupSeparator: ",",
        numberNegativePattern: 1
    }),

    dateTimeFormat: Bridge.merge(new System.Globalization.DateTimeFormatInfo(), {
        abbreviatedDayNames: ["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],
        abbreviatedMonthGenitiveNames: ["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค.",""],
        abbreviatedMonthNames: ["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค.",""],
        amDesignator: "AM",
        dateSeparator: "/",
        dayNames: ["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],
        firstDayOfWeek: 1,
        fullDateTimePattern: "d MMMM yyyy H:mm:ss",
        longDatePattern: "d MMMM yyyy",
        longTimePattern: "H:mm:ss",
        monthDayPattern: "d MMMM",
        monthGenitiveNames: ["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม",""],
        monthNames: ["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม",""],
        pmDesignator: "PM",
        rfc1123: "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'",
        shortDatePattern: "d/M/yyyy",
        shortestDayNames: ["อา","จ","อ","พ","พฤ","ศ","ส"],
        shortTimePattern: "H:mm",
        sortableDateTimePattern: "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
        sortableDateTimePattern1: "yyyy'-'MM'-'dd",
        timeSeparator: ":",
        universalSortableDateTimePattern: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'",
        yearMonthPattern: "MMMM yyyy",
        roundtripFormat: "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffzzz"
    }),

    TextInfo: Bridge.merge(new System.Globalization.TextInfo(), {
        ANSICodePage: 874,
        CultureName: "th-TH",
        EBCDICCodePage: 20838,
        IsRightToLeft: false,
        LCID: 1054,
        listSeparator: ",",
        MacCodePage: 10021,
        OEMCodePage: 874,
        IsReadOnly: true
    })
});

{'repo_name': 'bridgedotnet/Bridge', 'stars': '2083', 'repo_language': 'C#', 'file_name': 'AssemblyInfo.cs', 'mime_type': 'text/plain', 'hash': 6924310883537996008, 'source_dataset': 'data'}


namespace ModernWpf.SampleApp.ControlPages
{
    public partial class ControlPalettePage
    {
        public ControlPalettePage()
        {
            InitializeComponent();
        }

        ~ControlPalettePage()
        {
        }
    }
}

{'repo_name': 'Kinnara/ModernWpf', 'stars': '940', 'repo_language': 'C#', 'file_name': 'RatingControlPage.xaml', 'mime_type': 'text/plain', 'hash': 3817175859983932037, 'source_dataset': 'data'}


/*
Copyright 2014 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package credentialprovider

import (
	"os"
	"reflect"
	"sync"
	"time"

	dockertypes "github.com/docker/engine-api/types"
	"github.com/golang/glog"
)

// DockerConfigProvider is the interface that registered extensions implement
// to materialize 'dockercfg' credentials.
type DockerConfigProvider interface {
	// Enabled returns true if the config provider is enabled.
	// Implementations can be blocking - e.g. metadata server unavailable.
	Enabled() bool
	// Provide returns docker configuration.
	// Implementations can be blocking - e.g. metadata server unavailable.
	Provide() DockerConfig
	// LazyProvide() gets called after URL matches have been performed, so the
	// location used as the key in DockerConfig would be redundant.
	LazyProvide() *DockerConfigEntry
}

func LazyProvide(creds LazyAuthConfiguration) dockertypes.AuthConfig {
	if creds.Provider != nil {
		entry := *creds.Provider.LazyProvide()
		return DockerConfigEntryToLazyAuthConfiguration(entry).AuthConfig
	} else {
		return creds.AuthConfig
	}

}

// A DockerConfigProvider that simply reads the .dockercfg file
type defaultDockerConfigProvider struct{}

// init registers our default provider, which simply reads the .dockercfg file.
func init() {
	RegisterCredentialProvider(".dockercfg",
		&CachingDockerConfigProvider{
			Provider: &defaultDockerConfigProvider{},
			Lifetime: 5 * time.Minute,
		})
}

// CachingDockerConfigProvider implements DockerConfigProvider by composing
// with another DockerConfigProvider and caching the DockerConfig it provides
// for a pre-specified lifetime.
type CachingDockerConfigProvider struct {
	Provider DockerConfigProvider
	Lifetime time.Duration

	// cache fields
	cacheDockerConfig DockerConfig
	expiration        time.Time
	mu                sync.Mutex
}

// Enabled implements dockerConfigProvider
func (d *defaultDockerConfigProvider) Enabled() bool {
	return true
}

// Provide implements dockerConfigProvider
func (d *defaultDockerConfigProvider) Provide() DockerConfig {
	// Read the standard Docker credentials from .dockercfg
	if cfg, err := ReadDockerConfigFile(); err == nil {
		return cfg
	} else if !os.IsNotExist(err) {
		glog.V(4).Infof("Unable to parse Docker config file: %v", err)
	}
	return DockerConfig{}
}

// LazyProvide implements dockerConfigProvider. Should never be called.
func (d *defaultDockerConfigProvider) LazyProvide() *DockerConfigEntry {
	return nil
}

// Enabled implements dockerConfigProvider
func (d *CachingDockerConfigProvider) Enabled() bool {
	return d.Provider.Enabled()
}

// LazyProvide implements dockerConfigProvider. Should never be called.
func (d *CachingDockerConfigProvider) LazyProvide() *DockerConfigEntry {
	return nil
}

// Provide implements dockerConfigProvider
func (d *CachingDockerConfigProvider) Provide() DockerConfig {
	d.mu.Lock()
	defer d.mu.Unlock()

	// If the cache hasn't expired, return our cache
	if time.Now().Before(d.expiration) {
		return d.cacheDockerConfig
	}

	glog.V(2).Infof("Refreshing cache for provider: %v", reflect.TypeOf(d.Provider).String())
	d.cacheDockerConfig = d.Provider.Provide()
	d.expiration = time.Now().Add(d.Lifetime)
	return d.cacheDockerConfig
}

{'repo_name': 'coreos/tectonic-installer', 'stars': '602', 'repo_language': 'HCL', 'file_name': 'radix.go', 'mime_type': 'text/plain', 'hash': -3829797990263808710, 'source_dataset': 'data'}


// Protocol Buffers - Google's data interchange format
// Copyright 2012 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#ifndef GOOGLE_PROTOBUF_PLATFORM_MACROS_H_
#define GOOGLE_PROTOBUF_PLATFORM_MACROS_H_

#define GOOGLE_PROTOBUF_PLATFORM_ERROR \
#error "Host platform was not detected as supported by protobuf"

// Processor architecture detection.  For more info on what's defined, see:
//   http://msdn.microsoft.com/en-us/library/b0084kay.aspx
//   http://www.agner.org/optimize/calling_conventions.pdf
//   or with gcc, run: "echo | gcc -E -dM -"
#if defined(_M_X64) || defined(__x86_64__)
#define GOOGLE_PROTOBUF_ARCH_X64 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
#elif defined(_M_IX86) || defined(__i386__)
#define GOOGLE_PROTOBUF_ARCH_IA32 1
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#elif defined(__QNX__)
#define GOOGLE_PROTOBUF_ARCH_ARM_QNX 1
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#elif defined(__ARMEL__)
#define GOOGLE_PROTOBUF_ARCH_ARM 1
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#elif defined(__aarch64__)
#define GOOGLE_PROTOBUF_ARCH_AARCH64 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
#elif defined(__MIPSEL__)
#if defined(__LP64__)
#define GOOGLE_PROTOBUF_ARCH_MIPS64 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
#else
#define GOOGLE_PROTOBUF_ARCH_MIPS 1
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#endif
#elif defined(__pnacl__)
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#elif defined(sparc)
#define GOOGLE_PROTOBUF_ARCH_SPARC 1
#if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
#else
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#endif
#elif defined(_POWER) || defined(__powerpc64__) || defined(__PPC64__)
#define GOOGLE_PROTOBUF_ARCH_POWER 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
#elif defined(__PPC__)
#define GOOGLE_PROTOBUF_ARCH_PPC 1
#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
#elif defined(__GNUC__)
# if (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4))
// We fallback to the generic Clang/GCC >= 4.7 implementation in atomicops.h
# elif defined(__clang__)
#  if !__has_extension(c_atomic)
GOOGLE_PROTOBUF_PLATFORM_ERROR
#  endif
// We fallback to the generic Clang/GCC >= 4.7 implementation in atomicops.h
# endif
# if __LP64__
#  define GOOGLE_PROTOBUF_ARCH_64_BIT 1
# else
#  define GOOGLE_PROTOBUF_ARCH_32_BIT 1
# endif
#else
GOOGLE_PROTOBUF_PLATFORM_ERROR
#endif

#if defined(__APPLE__)
#define GOOGLE_PROTOBUF_OS_APPLE
#include <TargetConditionals.h>
#if TARGET_OS_IPHONE
#define GOOGLE_PROTOBUF_OS_IPHONE
#endif
#elif defined(__EMSCRIPTEN__)
#define GOOGLE_PROTOBUF_OS_EMSCRIPTEN
#elif defined(__native_client__)
#define GOOGLE_PROTOBUF_OS_NACL
#elif defined(sun)
#define GOOGLE_PROTOBUF_OS_SOLARIS
#elif defined(_AIX)
#define GOOGLE_PROTOBUF_OS_AIX
#elif defined(__ANDROID__)
#define GOOGLE_PROTOBUF_OS_ANDROID
#endif

#undef GOOGLE_PROTOBUF_PLATFORM_ERROR

#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE)
// Android ndk does not support the __thread keyword very well yet. Here
// we use pthread_key_create()/pthread_getspecific()/... methods for
// TLS support on android.
// iOS also does not support the __thread keyword.
#define GOOGLE_PROTOBUF_NO_THREADLOCAL
#endif

#endif  // GOOGLE_PROTOBUF_PLATFORM_MACROS_H_

{'repo_name': 'TheGodsThemselves/WsVideoEditor', 'stars': '295', 'repo_language': 'C', 'file_name': 'ws_video_editor_sdk_android_jni.proto', 'mime_type': 'text/x-java', 'hash': -253059417151231982, 'source_dataset': 'data'}


# 4_ Machine learning

## 1_ What is ML ?

### Definition

Machine Learning is part of the Artificial Intelligences study. It concerns the conception, devloppement and implementation of sophisticated methods, allowing a machine to achieve really hard tasks, nearly impossible to solve with classic algorithms.

### Utilisation examples

* Computer vision ([Definition](http://www.bmva.org/visionoverview))
* Search engines
* Financial analysis
* Documents classification
* Music generation
* Robotics ...

## 2_ Numerical var

## 3_ Categorical var

## 4_ Supervised learning

Supervised learning is the machine learning task of inferring a function from __labeled training data__.

The training data consist of a __set of training examples__.

In supervised learning, each example is a pair consisting of an input object (typically a vector) and a desired output value (also called the supervisory signal).

A supervised learning algorithm analyzes the training data and produces an inferred function, which can be used for mapping new examples.

__An optimal scenario will allow for the algorithm to correctly determine the class labels for unseen instances__.

## 5_ Unsupervised learning

Unsupervised machine learning is the machine learning task of inferring a function to describe hidden structure __from "unlabeled" data__ (a classification or categorization is not included in the observations).

Since the examples given to the learner are unlabeled, there is no evaluation of the accuracy of the structure that is output by the relevant algorithm—which is one way of distinguishing unsupervised learning from supervised learning and reinforcement learning.

## 6_ Concepts, inputs and attributes

## 7_ Training and test data

## 8_ Classifiers

## 9_ Prediction

## 10_ Lift

## 11_ Overfitting

## 12_ Bias & variance

## 13_ Tree and classification

## 14_ Classification rate

## 15_ Decision tree

## 16_ Boosting

## 17_ Naïves Bayes classifiers

## 18_ K-Nearest neighbor

## 19_ Logistic regression

## 20_ Ranking

## 21_ Linear regression

## 22_ Perceptron

The perceptron has been the first model described in the 50ies.

This is a __binary classifier__, ie it can't separate more than 2 groups, and thoses groups have to be __linearly separable__.

The perceptron __works like a biological neuron__. It calculate an activation value, and if this value if positive, it returns 1, 0 otherwise.

## 23_ Hierarchical clustering

## 24_ K-means clustering

## 25_ Neural networks

## 26_ Sentiment analysis

## 27_ Collaborative filtering

## 28_ Tagging
## 29_ Support Vector Machine

{'repo_name': 'MrMimic/data-scientist-roadmap', 'stars': '2407', 'repo_language': 'Python', 'file_name': 'README.md', 'mime_type': 'text/plain', 'hash': -7139982168315853366, 'source_dataset': 'data'}


export default {
  show(id) {
    return {
      endpoint: `/api/v1/content_blocks/${id}`,
      method: "GET",
      options: {}
    };
  },

  create(pId, contentBlock) {
    return {
      endpoint: `/api/v1/projects/${pId}/relationships/content_blocks`,
      method: "POST",
      options: {
        body: JSON.stringify({ type: "content_blocks", data: contentBlock })
      }
    };
  },

  update(id, contentBlock) {
    return {
      endpoint: `/api/v1/content_blocks/${id}`,
      method: "PUT",
      options: {
        body: JSON.stringify({ type: "content_blocks", data: contentBlock })
      }
    };
  },

  destroy(id) {
    return {
      endpoint: `/api/v1/content_blocks/${id}`,
      method: "DELETE",
      options: {}
    };
  }
};

{'repo_name': 'ManifoldScholar/manifold', 'stars': '149', 'repo_language': 'JavaScript', 'file_name': 'bugs.md', 'mime_type': 'text/plain', 'hash': 8861835230076165779, 'source_dataset': 'data'}


spring.application.name=SpringMvcJsonOutput

#默认 60 秒统计日志输出一次,这里设置为 1s,方便测试
com.alipay.sofa.tracer.statLogInterval=1

{'repo_name': 'sofastack/sofa-boot', 'stars': '3805', 'repo_language': 'Java', 'file_name': 'StringUtilsTest.java', 'mime_type': 'text/x-java', 'hash': 2862852859764791455, 'source_dataset': 'data'}


//===- MultiplexConsumer.cpp - AST Consumer for PCH Generation --*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
//  This file defines the MultiplexConsumer class. It also declares and defines
//  MultiplexASTDeserializationListener and  MultiplexASTMutationListener, which
//  are implementation details of MultiplexConsumer.
//
//===----------------------------------------------------------------------===//

#include "clang/Frontend/MultiplexConsumer.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/DeclGroup.h"
#include "clang/Serialization/ASTDeserializationListener.h"

using namespace clang;

namespace clang {

// This ASTDeserializationListener forwards its notifications to a set of
// child listeners.
class MultiplexASTDeserializationListener
    : public ASTDeserializationListener {
public:
  // Does NOT take ownership of the elements in L.
  MultiplexASTDeserializationListener(
      const std::vector<ASTDeserializationListener*>& L);
  void ReaderInitialized(ASTReader *Reader) override;
  void IdentifierRead(serialization::IdentID ID,
                      IdentifierInfo *II) override;
  void MacroRead(serialization::MacroID ID, MacroInfo *MI) override;
  void TypeRead(serialization::TypeIdx Idx, QualType T) override;
  void DeclRead(serialization::DeclID ID, const Decl *D) override;
  void SelectorRead(serialization::SelectorID iD, Selector Sel) override;
  void MacroDefinitionRead(serialization::PreprocessedEntityID,
                           MacroDefinitionRecord *MD) override;
  void ModuleRead(serialization::SubmoduleID ID, Module *Mod) override;

private:
  std::vector<ASTDeserializationListener *> Listeners;
};

MultiplexASTDeserializationListener::MultiplexASTDeserializationListener(
      const std::vector<ASTDeserializationListener*>& L)
    : Listeners(L) {
}

void MultiplexASTDeserializationListener::ReaderInitialized(
    ASTReader *Reader) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->ReaderInitialized(Reader);
}

void MultiplexASTDeserializationListener::IdentifierRead(
    serialization::IdentID ID, IdentifierInfo *II) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->IdentifierRead(ID, II);
}

void MultiplexASTDeserializationListener::MacroRead(
    serialization::MacroID ID, MacroInfo *MI) {
  for (auto &Listener : Listeners)
    Listener->MacroRead(ID, MI);
}

void MultiplexASTDeserializationListener::TypeRead(
    serialization::TypeIdx Idx, QualType T) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->TypeRead(Idx, T);
}

void MultiplexASTDeserializationListener::DeclRead(
    serialization::DeclID ID, const Decl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->DeclRead(ID, D);
}

void MultiplexASTDeserializationListener::SelectorRead(
    serialization::SelectorID ID, Selector Sel) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->SelectorRead(ID, Sel);
}

void MultiplexASTDeserializationListener::MacroDefinitionRead(
    serialization::PreprocessedEntityID ID, MacroDefinitionRecord *MD) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->MacroDefinitionRead(ID, MD);
}

void MultiplexASTDeserializationListener::ModuleRead(
    serialization::SubmoduleID ID, Module *Mod) {
  for (auto &Listener : Listeners)
    Listener->ModuleRead(ID, Mod);
}

// This ASTMutationListener forwards its notifications to a set of
// child listeners.
class MultiplexASTMutationListener : public ASTMutationListener {
public:
  // Does NOT take ownership of the elements in L.
  MultiplexASTMutationListener(ArrayRef<ASTMutationListener*> L);
  void CompletedTagDefinition(const TagDecl *D) override;
  void AddedVisibleDecl(const DeclContext *DC, const Decl *D) override;
  void AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) override;
  void AddedCXXTemplateSpecialization(const ClassTemplateDecl *TD,
                            const ClassTemplateSpecializationDecl *D) override;
  void AddedCXXTemplateSpecialization(const VarTemplateDecl *TD,
                               const VarTemplateSpecializationDecl *D) override;
  void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD,
                                      const FunctionDecl *D) override;
  void ResolvedExceptionSpec(const FunctionDecl *FD) override;
  void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType) override;
  void ResolvedOperatorDelete(const CXXDestructorDecl *DD,
                              const FunctionDecl *Delete) override;
  void CompletedImplicitDefinition(const FunctionDecl *D) override;
  void StaticDataMemberInstantiated(const VarDecl *D) override;
  void DefaultArgumentInstantiated(const ParmVarDecl *D) override;
  void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD,
                                    const ObjCInterfaceDecl *IFD) override;
  void FunctionDefinitionInstantiated(const FunctionDecl *D) override;
  void DeclarationMarkedUsed(const Decl *D) override;
  void DeclarationMarkedOpenMPThreadPrivate(const Decl *D) override;
  void DeclarationMarkedOpenMPDeclareTarget(const Decl *D,
                                            const Attr *Attr) override;
  void RedefinedHiddenDefinition(const NamedDecl *D, Module *M) override;
  void AddedAttributeToRecord(const Attr *Attr,
                              const RecordDecl *Record) override;

private:
  std::vector<ASTMutationListener*> Listeners;
};

MultiplexASTMutationListener::MultiplexASTMutationListener(
    ArrayRef<ASTMutationListener*> L)
    : Listeners(L.begin(), L.end()) {
}

void MultiplexASTMutationListener::CompletedTagDefinition(const TagDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->CompletedTagDefinition(D);
}

void MultiplexASTMutationListener::AddedVisibleDecl(
    const DeclContext *DC, const Decl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->AddedVisibleDecl(DC, D);
}

void MultiplexASTMutationListener::AddedCXXImplicitMember(
    const CXXRecordDecl *RD, const Decl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->AddedCXXImplicitMember(RD, D);
}
void MultiplexASTMutationListener::AddedCXXTemplateSpecialization(
    const ClassTemplateDecl *TD, const ClassTemplateSpecializationDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->AddedCXXTemplateSpecialization(TD, D);
}
void MultiplexASTMutationListener::AddedCXXTemplateSpecialization(
    const VarTemplateDecl *TD, const VarTemplateSpecializationDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->AddedCXXTemplateSpecialization(TD, D);
}
void MultiplexASTMutationListener::AddedCXXTemplateSpecialization(
    const FunctionTemplateDecl *TD, const FunctionDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->AddedCXXTemplateSpecialization(TD, D);
}
void MultiplexASTMutationListener::ResolvedExceptionSpec(
    const FunctionDecl *FD) {
  for (auto &Listener : Listeners)
    Listener->ResolvedExceptionSpec(FD);
}
void MultiplexASTMutationListener::DeducedReturnType(const FunctionDecl *FD,
                                                     QualType ReturnType) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->DeducedReturnType(FD, ReturnType);
}
void MultiplexASTMutationListener::ResolvedOperatorDelete(
    const CXXDestructorDecl *DD, const FunctionDecl *Delete) {
  for (auto *L : Listeners)
    L->ResolvedOperatorDelete(DD, Delete);
}
void MultiplexASTMutationListener::CompletedImplicitDefinition(
                                                        const FunctionDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->CompletedImplicitDefinition(D);
}
void MultiplexASTMutationListener::StaticDataMemberInstantiated(
                                                             const VarDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->StaticDataMemberInstantiated(D);
}
void MultiplexASTMutationListener::DefaultArgumentInstantiated(
                                                         const ParmVarDecl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->DefaultArgumentInstantiated(D);
}
void MultiplexASTMutationListener::AddedObjCCategoryToInterface(
                                                 const ObjCCategoryDecl *CatD,
                                                 const ObjCInterfaceDecl *IFD) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->AddedObjCCategoryToInterface(CatD, IFD);
}
void MultiplexASTMutationListener::FunctionDefinitionInstantiated(
    const FunctionDecl *D) {
  for (auto &Listener : Listeners)
    Listener->FunctionDefinitionInstantiated(D);
}
void MultiplexASTMutationListener::DeclarationMarkedUsed(const Decl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->DeclarationMarkedUsed(D);
}
void MultiplexASTMutationListener::DeclarationMarkedOpenMPThreadPrivate(
    const Decl *D) {
  for (size_t i = 0, e = Listeners.size(); i != e; ++i)
    Listeners[i]->DeclarationMarkedOpenMPThreadPrivate(D);
}
void MultiplexASTMutationListener::DeclarationMarkedOpenMPDeclareTarget(
    const Decl *D, const Attr *Attr) {
  for (auto *L : Listeners)
    L->DeclarationMarkedOpenMPDeclareTarget(D, Attr);
}
void MultiplexASTMutationListener::RedefinedHiddenDefinition(const NamedDecl *D,
                                                             Module *M) {
  for (auto *L : Listeners)
    L->RedefinedHiddenDefinition(D, M);
}

void MultiplexASTMutationListener::AddedAttributeToRecord(
                                                    const Attr *Attr,
                                                    const RecordDecl *Record) {
  for (auto *L : Listeners)
    L->AddedAttributeToRecord(Attr, Record);
}

}  // end namespace clang

MultiplexConsumer::MultiplexConsumer(
    std::vector<std::unique_ptr<ASTConsumer>> C)
    : Consumers(std::move(C)), MutationListener(), DeserializationListener() {
  // Collect the mutation listeners and deserialization listeners of all
  // children, and create a multiplex listener each if so.
  std::vector<ASTMutationListener*> mutationListeners;
  std::vector<ASTDeserializationListener*> serializationListeners;
  for (auto &Consumer : Consumers) {
    if (auto *mutationListener = Consumer->GetASTMutationListener())
      mutationListeners.push_back(mutationListener);
    if (auto *serializationListener = Consumer->GetASTDeserializationListener())
      serializationListeners.push_back(serializationListener);
  }
  if (!mutationListeners.empty()) {
    MutationListener =
        llvm::make_unique<MultiplexASTMutationListener>(mutationListeners);
  }
  if (!serializationListeners.empty()) {
    DeserializationListener =
        llvm::make_unique<MultiplexASTDeserializationListener>(
            serializationListeners);
  }
}

MultiplexConsumer::~MultiplexConsumer() {}

void MultiplexConsumer::Initialize(ASTContext &Context) {
  for (auto &Consumer : Consumers)
    Consumer->Initialize(Context);
}

bool MultiplexConsumer::HandleTopLevelDecl(DeclGroupRef D) {
  bool Continue = true;
  for (auto &Consumer : Consumers)
    Continue = Continue && Consumer->HandleTopLevelDecl(D);
  return Continue;
}

void MultiplexConsumer::HandleInlineFunctionDefinition(FunctionDecl *D) {
  for (auto &Consumer : Consumers)
    Consumer->HandleInlineFunctionDefinition(D);
}

void MultiplexConsumer::HandleCXXStaticMemberVarInstantiation(VarDecl *VD) {
  for (auto &Consumer : Consumers)
    Consumer->HandleCXXStaticMemberVarInstantiation(VD);
}

void MultiplexConsumer::HandleInterestingDecl(DeclGroupRef D) {
  for (auto &Consumer : Consumers)
    Consumer->HandleInterestingDecl(D);
}

void MultiplexConsumer::HandleTranslationUnit(ASTContext &Ctx) {
  for (auto &Consumer : Consumers)
    Consumer->HandleTranslationUnit(Ctx);
}

void MultiplexConsumer::HandleTagDeclDefinition(TagDecl *D) {
  for (auto &Consumer : Consumers)
    Consumer->HandleTagDeclDefinition(D);
}

void MultiplexConsumer::HandleTagDeclRequiredDefinition(const TagDecl *D) {
  for (auto &Consumer : Consumers)
    Consumer->HandleTagDeclRequiredDefinition(D);
}

void MultiplexConsumer::HandleCXXImplicitFunctionInstantiation(FunctionDecl *D){
  for (auto &Consumer : Consumers)
    Consumer->HandleCXXImplicitFunctionInstantiation(D);
}

void MultiplexConsumer::HandleTopLevelDeclInObjCContainer(DeclGroupRef D) {
  for (auto &Consumer : Consumers)
    Consumer->HandleTopLevelDeclInObjCContainer(D);
}

void MultiplexConsumer::HandleImplicitImportDecl(ImportDecl *D) {
  for (auto &Consumer : Consumers)
    Consumer->HandleImplicitImportDecl(D);
}

void MultiplexConsumer::CompleteTentativeDefinition(VarDecl *D) {
  for (auto &Consumer : Consumers)
    Consumer->CompleteTentativeDefinition(D);
}

void MultiplexConsumer::AssignInheritanceModel(CXXRecordDecl *RD) {
  for (auto &Consumer : Consumers)
    Consumer->AssignInheritanceModel(RD);
}

void MultiplexConsumer::HandleVTable(CXXRecordDecl *RD) {
  for (auto &Consumer : Consumers)
    Consumer->HandleVTable(RD);
}

ASTMutationListener *MultiplexConsumer::GetASTMutationListener() {
  return MutationListener.get();
}

ASTDeserializationListener *MultiplexConsumer::GetASTDeserializationListener() {
  return DeserializationListener.get();
}

void MultiplexConsumer::PrintStats() {
  for (auto &Consumer : Consumers)
    Consumer->PrintStats();
}

bool MultiplexConsumer::shouldSkipFunctionBody(Decl *D) {
  bool Skip = true;
  for (auto &Consumer : Consumers)
    Skip = Skip && Consumer->shouldSkipFunctionBody(D);
  return Skip;
}

void MultiplexConsumer::InitializeSema(Sema &S) {
  for (auto &Consumer : Consumers)
    if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumer.get()))
      SC->InitializeSema(S);
}

void MultiplexConsumer::ForgetSema() {
  for (auto &Consumer : Consumers)
    if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumer.get()))
      SC->ForgetSema();
}

{'repo_name': 'GoSSIP-SJTU/Armariris', 'stars': '756', 'repo_language': 'C++', 'file_name': 'a1.h', 'mime_type': 'text/plain', 'hash': 991543533303961975, 'source_dataset': 'data'}


/*
 * image-dialog.ts
 *
 * Copyright (C) 2020 by RStudio, PBC
 *
 * Unless you have received this program directly from RStudio pursuant
 * to the terms of a commercial license agreement with RStudio, then
 * this program is licensed to you under the terms of version 3 of the
 * GNU Affero General Public License. This program is distributed WITHOUT
 * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
 * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
 *
 */

import { Node as ProsemirrorNode, NodeType, Fragment, Mark } from 'prosemirror-model';
import { EditorView } from 'prosemirror-view';

import { insertAndSelectNode } from '../../api/node';
import { EditorUI } from '../../api/ui';
import { ImageProps } from '../../api/ui-dialogs';
import { extractSizeStyles, kPercentUnit, kPixelUnit } from '../../api/css';
import { ImageType, ImageDimensions, isNaturalAspectRatio } from '../../api/image';
import { kWidthAttrib, kHeightAttrib } from '../../api/pandoc_attr';

import { imagePropsWithSizes, hasPercentWidth } from './image-util';

export async function imageDialog(
  node: ProsemirrorNode | null,
  dims: ImageDimensions | null,
  nodeType: NodeType,
  view: EditorView,
  editorUI: EditorUI,
  imageAttributes: boolean,
) {
  // alias schema
  const schema = view.state.schema;

  // if we are being called with an existing node then read it's attributes
  let content = Fragment.empty;
  let image: ImageProps = { src: null };
  let linkMark: Mark | undefined;
  let marks: Mark[] = [];
  if (node && dims && node.type === nodeType) {
    // base attributess
    image = {
      ...(node.attrs as ImageProps),
      alt: nodeType === schema.nodes.figure ? node.textContent : node.attrs.alt,
    };

    // move width and height out of style and into keyvalue if necessary
    image = {
      ...image,
      keyvalue: extractSizeStyles(image.keyvalue),
    };

    // move width, height, and units out of keyvalue into explicit
    // top level image properties if necessary
    image = imagePropsWithSizes(image, dims);

    // record marks / linkTo
    if (nodeType === schema.nodes.image) {
      marks = node.marks;
      linkMark = node.marks.find(mark => mark.type === schema.marks.link);
      if (linkMark) {
        image.linkTo = linkMark.attrs.href;
      }
    }

    // content (will be caption for figures)
    content = node.content;
  } else {
    // create a new image
    image = nodeType.create(image).attrs as ImageProps;
  }

  // determine the type
  const type = nodeType === view.state.schema.nodes.image ? ImageType.Image : ImageType.Figure;

  // edit the image
  const result = await editorUI.dialogs.editImage(image, dims, imageAttributes);
  if (result) {
    // figures treat 'alt' as their content (the caption), but since captions support
    // inline formatting (and the dialog doesn't) we only want to update the
    // content if the alt/caption actually changed (as it will blow away formatting)
    if (type === ImageType.Figure && image.alt !== result.alt) {
      if (result.alt) {
        content = Fragment.from(view.state.schema.text(result.alt));
      } else {
        content = Fragment.empty;
      }
    }

    // if we have width and height move them into keyvalue
    let keyvalue = result.keyvalue;
    if (result.units) {
      // no units for px
      const units = result.units && result.units === kPixelUnit ? '' : result.units;
      // width
      if (result.width) {
        let width = result.width;
        if (hasPercentWidth(units)) {
          width = Math.min(width, 100);
        }
        keyvalue = keyvalue || [];
        keyvalue.push([kWidthAttrib, width + units]);
      }
      // only record height if it's not % units and it's not at it's natural height
      if (result.height && units !== kPercentUnit && !isNaturalHeight(result.width, result.height, dims)) {
        keyvalue = keyvalue || [];
        keyvalue.push([kHeightAttrib, result.height + units]);
      }
    }

    // merge updated keyvalue
    const imageProps = { ...result, keyvalue };

    // update or create link mark as necessary
    if (nodeType === schema.nodes.image) {
      if (linkMark) {
        marks = linkMark.removeFromSet(marks);
        if (imageProps.linkTo) {
          linkMark = linkMark.type.create({ ...linkMark.attrs, href: imageProps.linkTo });
        }
      } else if (imageProps.linkTo) {
        linkMark = schema.marks.link.create({ href: imageProps.linkTo });
      }
      if (imageProps.linkTo && linkMark) {
        marks = linkMark.addToSet(marks);
      }
    }

    // create the image
    const newImage = nodeType.createAndFill(imageProps, content, marks);

    // insert and select
    if (newImage) {
      insertAndSelectNode(view, newImage);
    }
  }

  if (view) {
    view.focus();
  }
}

// wrapper for isNaturalHeight that handles potentially undefined params
function isNaturalHeight(width: number | undefined, height: number | undefined, dims: ImageDimensions | null) {
  if (width && height && dims) {
    return isNaturalAspectRatio(width, height, dims, false);
  } else {
    return false;
  }
}

{'repo_name': 'rstudio/rstudio', 'stars': '3286', 'repo_language': 'Java', 'file_name': 'provision-nfs4-client.sh', 'mime_type': 'text/plain', 'hash': -7889151188914343283, 'source_dataset': 'data'}