{"version":3,"sources":["webpack:///webpack/bootstrap a8e0c9d0f3d57b04b0d0","webpack:///external \"girder_plugin_large_image\"","webpack:///delegated ./node_modules/underscore/modules/index-all.js from dll-reference girder_lib","webpack:///external \"girder_lib\"","webpack:///delegated ./src/rest.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/utilities/PluginUtils.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/common.js","webpack:///delegated ./src/events.js from dll-reference girder_plugin_large_image","webpack:///delegated ./node_modules/jquery/dist/jquery.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/views/configView.js","webpack:///delegated ./node_modules/pug-runtime/index.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/models/AnnotationModel.js","webpack:///delegated ./node_modules/backbone/backbone.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/annotations/rotate.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/defaults/index.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/style.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/coordinates/point.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/rectangle.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/coordinates/array.js","webpack:///delegated ./src/views/View.js from dll-reference girder_plugin_large_image","webpack:///delegated ./node_modules/@girder/large_image/views/configView.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/views/imageViewerSelectWidget.js","webpack:///delegated ./src/constants.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/auth.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/views/widgets/AccessWidget.js from dll-reference girder_lib","webpack:///./node_modules/@girder/large_image_annotation/collections/AnnotationCollection.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/convert.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geometry/index.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/convertFeatures.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/index.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/convert.js","webpack:///./node_modules/@girder/large_image_annotation/main.js","webpack:///delegated ./src/pluginUtils.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/views/widgets/SearchFieldWidget.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/routes.js","webpack:///delegated ./src/router.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/views/widgets/PluginConfigBreadcrumbWidget.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/templates/largeImageAnnotationConfig.pug","webpack:///delegated ./node_modules/@girder/large_image/views/imageViewerSelectWidget.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/templates/imageViewerAnnotationList.pug","webpack:///./node_modules/@girder/large_image_annotation/views/annotationListWidget.js","webpack:///delegated ./src/utilities/EventStream.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/dialog.js from dll-reference girder_plugin_large_image","webpack:///delegated ./src/collections/UserCollection.js from dll-reference girder_lib","webpack:///delegated ./src/views/widgets/UploadWidget.js from dll-reference girder_lib","webpack:///delegated ./src/collections/Collection.js from dll-reference girder_lib","webpack:///delegated ./src/models/AccessControlledModel.js from dll-reference girder_lib","webpack:///delegated ./src/models/MetadataMixin.js from dll-reference girder_lib","webpack:///./node_modules/@girder/large_image_annotation/collections/ElementCollection.js","webpack:///./node_modules/@girder/large_image_annotation/models/ElementModel.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geometry/rectangle.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geometry/ellipse.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geometry/circle.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geometry/polyline.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geometry/point.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/defaults/rectangle.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/defaults/ellipse.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/defaults/circle.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/defaults/polyline.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/defaults/point.js","webpack:///./node_modules/@girder/large_image_annotation/node_modules/tinycolor2/tinycolor.js","webpack:///./node_modules/@girder/large_image_annotation/templates/annotationListWidget.pug","webpack:///./node_modules/@girder/large_image_annotation/stylesheets/annotationListWidget.styl","webpack:///./node_modules/@girder/large_image_annotation/index.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/index.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/index.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/point.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/ellipse.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/circle.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/polygon.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/types/line.js","webpack:///./node_modules/@girder/large_image_annotation/annotations/geojs/coordinates/index.js","webpack:///./node_modules/@girder/large_image_annotation/collections/index.js","webpack:///./node_modules/@girder/large_image_annotation/models/index.js","webpack:///./node_modules/@girder/large_image_annotation/views/index.js","webpack:///delegated ./node_modules/@girder/large_image/views/imageViewerWidget/index.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/views/hierarchyWidget.js","webpack:///delegated ./src/views/widgets/HierarchyWidget.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/views/itemList.js","webpack:///delegated ./src/views/widgets/ItemListWidget.js from dll-reference girder_plugin_large_image","webpack:///./node_modules/@girder/large_image_annotation/stylesheets/itemList.styl","webpack:///./node_modules/@girder/large_image_annotation/views/imageViewerWidget/base.js","webpack:///./node_modules/@girder/large_image_annotation/views/imageViewerWidget/index.js","webpack:///./node_modules/@girder/large_image_annotation/views/imageViewerWidget/geojs.js"],"names":["defaults","common","annotation","type","_","extend","ConfigView","View","events","event","preventDefault","$","empty","_saveSettings","key","value","prop","initialize","getSettings","settings","render","$el","html","viewers","breadcrumb","PluginConfigBreadcrumbWidget","pluginName","el","parentView","url","data","list","JSON","stringify","error","done","clearSettings","trigger","icon","text","timeout","fail","resp","responseJSON","message","largeImageConfig","AnnotationModel","AccessControlledModel","resourceName","minElements","maxDetails","maxCentroids","get","attributes","updated","Date","now","updatedId","id","_region","sort","sortdir","_viewArea","_elements","ElementCollection","elements","listenTo","toJSON","set","fetchCentroids","altUrl","restOpts","centroids","limit","xhrFields","responseType","dv","DataView","z0","z1","byteLength","getUint8","Error","json","Uint8Array","slice","result","parse","decodeURIComponent","escape","String","fromCharCode","apply","default","fillColor","r","g","b","fillOpacity","strokeColor","strokeOpacity","strokeWidth","rectangle","ellipse","circle","polyline","polyline_closed","props","_elementQuery","map","propsdict","propskeys","forEach","i","Object","assign","closed","undefined","returned","Array","x","Float32Array","y","s","Uint32Array","getUint32","toString","substr","getFloat32","length","count","partial","_centroids","fetch","opts","alert","extraPath","ignoreError","_inFetch","_refresh","_pageElements","then","always","_nextFetch","nextFetch","reset","sync","err","refresh","val","self","save","options","method","isNew","element","label","console","warn","contentType","processData","destroy","stopListening","collection","delete","name","xhr","unset","geojson","non_geojson","layer","overlays","overlayElementTypes","filter","includes","setView","bounds","zoom","maxZoom","noFetch","sizeX","sizeY","width","right","left","height","bottom","top","xoverlap","yoverlap","minxoverlap","minyoverlap","canskip","Math","abs","_lastZoom","lastRegion","max","min","every","prototype","MetadataMixin","rotate","rotation","center","cos","sin","point","style","memoizeColorAlpha","entries","colorAlpha","color","tccolor","rgb","toHexString","alpha","getAlpha","lineColor","lineWidth","pt","z","p","coordinates","ang","atan2","ang0","indexOf","PI","p1","p2","p3","p4","sqrt","array","a","ImageViewerSelectWidget","itemId","imageModel","model","_annotationList","AnnotationListWidget","rest","arguments","append","setViewer","currentViewer","setElement","_selectViewer","Collection","pageLimit","sortField","sortDir","SORT_DESC","convert","geometry","convertOne","properties","startsWith","has","geom","annotationType","features","chain","mapObject","compact","heatmapColorTable","record","values","range0","range1","colorRange","rangeValues","normalizeRange","convertHeatmap","tileLayer","layers","find","l","window","geo","maxLevel","scaleZoomFactor","heatmapLayer","createLayer","colorTable","points","d","heatmap","createFeature","radius","scaleWithZoom","blurRadius","gaussian","position","intensity","minIntensity","maxIntensity","updateDelay","_ownLayer","convertGridToHeatmap","x0","origin","y0","dx","dy","gridWidth","floor","convertGridToContour","contour","stepped","minColor","zeroColor","maxColor","converters","griddata_contour","griddata_heatmap","convertFeatures","func","interpretation","concat","polygon","line","types","largeImageAnnotation","SearchFieldWidget","addMode","router","route","pug","require","template","locals","pug_html","pug_mixins","pug_interp","pug_debug_filename","pug_debug_line","pug_debug_sources","locals_for_with","attr","call","rethrow","module","exports","evt","currentTarget","click","stopPropagation","_drawn","Set","_viewer","_sort","field","direction","AnnotationCollection","comparator","users","UserCollection","eventStream","createResp","getConfigFile","_liconfig","_confList","annotationList","columns","format","constant","_lastSort","defaultSort","dir","reduce","e","push","_fetchUsers","item","accessLevel","getAccessLevel","creationAccess","annotations","canDraw","annotationAPI","drawn","apiRoot","confList","AccessType","viewer","clear","_displayAnnotation","closest","startedOn","add","drawAnnotation","removeAnnotation","toggleClass","anyOn","some","_displayAllAnnotations","isDrawn","_deleteAnnotation","parents","escapedHtml","yesText","confirmCallback","_uploadAnnotation","uploadWidget","UploadWidget","title","parent","parentType","multiFile","otherParams","reference","identifier","fileId","userId","on","_uploadWidget","_changePermissions","at","clone","updateAccess","access","public","publicFlags","each","loopmodel","AccessWidget","hideRecurseOption","noAccessFlag","_id","when","Backbone","ElementModel","Model","idAttribute","first","holes","hole","normal","ADMIN","classes","anyDrawn","models","$$obj","pug_index0","$$l","column","toUpperCase","pug_index1","creatorModel","creator","updatedModel","updater","pug_index2","split","part","toLocaleString","WRITE","pug_index3","collections","views","geojs","inner","h","outer","extensions","ImageViewerWidgetAnnotationExtension","HierarchyWidget","ItemListWidget","ViewerWidget","parentModel","ownAnnotation","root","folderId","recurse","ownsAnnot","addAccessControl","before","editAnnotAccess","delegateEvents","defaultUpdateModel","fetchAccess","modelType","addLargeImageAnnotationBadge","numAnnotations","flag","thumbnail","cid","badge","appendTo","largeImageAnnotationConfig","items","toArray","hasAnyLargeImage","_needsFetch","needCounts","_annotationCount","_annotationReferenced","promise","Deferred","resolve","join","headers","keys","rid","drawRegion","startDrawMode","guid","s4","random","substring","GeojsImageViewerWidgetExtension","_annotations","_featureOpacity","_unclampBoundsForOverlay","_globalAnnotationOpacity","globalAnnotationOpacity","_globalAnnotationFillOpacity","globalAnnotationFillOpacity","_highlightFeatureSizeLimit","highlightFeatureSizeLimit","clearRegion","_hoverEvents","hoverEvents","_postRender","featureLayer","setGlobalAnnotationOpacity","setGlobalAnnotationFillOpacity","annotationLayer","showLabels","geoOn","pan","setBounds","getUnclampBoundsForOverlay","setUnclampBoundsForOverlay","newValue","_getOverlayTransformProjString","overlay","transformInfo","transform","xOffset","xoffset","yOffset","yoffset","matrix","s11","s12","s21","s22","scale","_getOverlayRelativeScale","projString","log2","_countDrawnImageOverlays","numOverlays","obj","annotationOverlays","_addPixelmapLayerParams","layerParams","pixelmapElement","levelDifference","keepLower","isFunction","girderId","pixelmapData","boundaries","valuesWithBoundaries","categoryMap","categories","category","_generateOverlayLayerParams","overlayImageMetadata","overlayImageId","params","util","pixelCoordinateParams","node","tileWidth","tileHeight","useCredentials","autoshareRenderer","renderer","opacity","levels","minLevel","tilesMaxBounds","level","pow","tilesAtZoom","ceil","hasAlpha","present","centroidFeature","immediateUpdate","feature","idx","deleteLayer","deleteFeature","oldOverlayIds","updatedOverlayIds","overlayLayer","off","featureList","unitsPerPixel","stroke","_shownIds","fill","_centroidLastZoom","verticesPerFeature","vpf","j","k","updateStyleFromArray","modified","draw","clampBoundsY","clampBoundsX","overlayItemId","response","conflictingLayers","layerType","proj","gcs","moveToTop","featureEvents","mousedown","mouseup","mouseclick","mouseoff","mouseon","mouseover","mouseout","_onMouseFeature","scheduleAnimationFrame","createFileReader","read","selectionAPI","featureType","_mutateFeaturePropertiesForHighlight","shown","_update","highlightAnnotation","_highlightAnnotation","_highlightElement","annotationId","hideAnnotation","_hideAnnotation","_hideElement","datalen","highlightannot","highlightelem","hideannot","hideelem","isMatch","_lastFeatureProp","fillOpacityArray","strokeOpacityArray","newOpacity","zoomRange","overlayLayers","_mergeRegions","origval","addval","drawMode","addToExisting","submitCtrl","origEvent","mode","startMode","signalModeChange","round","flat","submit","originalEvent","defer","geoOff","state","keepExisting","removeAllAnnotations","currentBooleanOperation","modeOptions","reject","annot","overlayOpacity","_setEventTypes","_eventTypes","eventType","overlayEventType","_guid"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXJ;;;;;;;;;;AAUA,SAAS2D,iBAAT,CAA2BC,MAA3B,EAAmCC,MAAnC,EA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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hB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,wCAAwC;AACxC,wCAAwC;AACxC;;AAEA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,sDAAsD;AACtD,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yCAAyC;AAC5D,mBAAmB,yCAAyC;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,mBAAmB,yCAAyC;AAC5D,mBAAmB,yCAAyC;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAuC;AAC1D,mBAAmB,wCAAwC;AAC3D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+DAA+D,WAAW;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2DAA2D,wBAAwB;;AAEnF;AACA;AACA,2CAA2C,wBAAwB;AACnE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA8E,4BAA4B,gBAAgB;AAC1H,8EAA8E,2BAA2B,gBAAgB;AACzH,qDAAqD,oDAAoD,gBAAgB;AACzH,qDAAqD,oDAAoD,gBAAgB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA,KAAK,kBAAkB,YAAY,kBAAkB;AACrD;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4BAA4B,YAAY;;AAExC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE;AACjE,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE;AACjE,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE;AACjF,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE;AACjF;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,UAAU,OAAO,UAAU,OAAO,SAAS;AACnF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,IAA0C;AACnD,IAAI,mCAAO,aAAa,kBAAkB;AAAA,oGAAC;AAC3C;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;AC1qCD,IAAI2O,MAAM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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","file":"plugin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/histomicstk/static/built/\";\n\n \t__webpack_require__(31);\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 30);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a8e0c9d0f3d57b04b0d0","module.exports = girder_plugin_large_image;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"girder_plugin_large_image\"\n// module id = 0\n// module chunks = 0","module.exports = (__webpack_require__(2))(3);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/underscore/modules/index-all.js from dll-reference girder_lib\n// module id = 1\n// module chunks = 0","module.exports = girder_lib;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"girder_lib\"\n// module id = 2\n// module chunks = 0","module.exports = (__webpack_require__(0))(5);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/rest.js from dll-reference girder_plugin_large_image\n// module id = 3\n// module chunks = 0","module.exports = (__webpack_require__(0))(19);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/utilities/PluginUtils.js from dll-reference girder_plugin_large_image\n// module id = 4\n// module chunks = 0","import _ from 'underscore';\n\nimport * as defaults from '../defaults';\n\n/**\n * Convert properties from geojs options to annotation\n * elements that all types have in common. At the moment,\n * this handles style information, but could be expanded\n * to handle labels, names, id's, etc.\n *\n * @param {annotation} annotation A geojs native annotation object\n * @param {string} type Override the detected output type\n * @returns {object}\n */\nfunction common(annotation, type) {\n type = type || annotation.type();\n return _.extend({}, defaults[type] || {});\n}\n\nexport default common;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/common.js","module.exports = (__webpack_require__(0))(33);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/events.js from dll-reference girder_plugin_large_image\n// module id = 6\n// module chunks = 0","module.exports = (__webpack_require__(0))(6);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/jquery/dist/jquery.js from dll-reference girder_plugin_large_image\n// module id = 7\n// module chunks = 0","import View from '@girder/core/views/View';\n\nimport PluginConfigBreadcrumbWidget from '@girder/core/views/widgets/PluginConfigBreadcrumbWidget';\nimport {restRequest} from '@girder/core/rest';\nimport events from '@girder/core/events';\nimport largeImageConfig from '@girder/large_image/views/configView';\n\nimport ConfigViewTemplate from '../templates/largeImageAnnotationConfig.pug';\n\n/**\n * Show the default quota settings for users and collections.\n */\nvar ConfigView = View.extend({\n events: {\n 'submit #g-large-image-form': function (event) {\n event.preventDefault();\n this.$('#g-large-image-error-message').empty();\n this._saveSettings([{\n key: 'large_image.annotation_history',\n value: this.$('.g-large-image-annotation-history-show').prop('checked')\n }]);\n }\n },\n initialize: function () {\n ConfigView.getSettings((settings) => {\n this.settings = settings;\n this.render();\n });\n },\n\n render: function () {\n this.$el.html(ConfigViewTemplate({\n settings: this.settings,\n viewers: ConfigView.viewers\n }));\n if (!this.breadcrumb) {\n this.breadcrumb = new PluginConfigBreadcrumbWidget({\n pluginName: 'Large image annotation',\n el: this.$('.g-config-breadcrumb-container'),\n parentView: this\n }).render();\n }\n\n return this;\n },\n\n _saveSettings: function (settings) {\n /* Now save the settings */\n return restRequest({\n type: 'PUT',\n url: 'system/setting',\n data: {\n list: JSON.stringify(settings)\n },\n error: null\n }).done(() => {\n /* Clear the settings that may have been loaded. */\n ConfigView.clearSettings();\n events.trigger('g:alert', {\n icon: 'ok',\n text: 'Settings saved.',\n type: 'success',\n timeout: 4000\n });\n }).fail((resp) => {\n this.$('#g-large-image-error-message').text(\n resp.responseJSON.message\n );\n });\n }\n}, {\n /* Class methods and objects */\n\n /**\n * Get settings if we haven't yet done so. Either way, call a callback\n * when we have settings.\n *\n * @param {function} callback a function to call after the settings are\n * fetched. If the settings are already present, this is called\n * without any delay.\n */\n getSettings: largeImageConfig.getSettings,\n\n /**\n * Clear the settings so that getSettings will refetch them.\n */\n clearSettings: largeImageConfig.clearSettings\n});\n\nexport default ConfigView;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/configView.js","module.exports = (__webpack_require__(0))(14);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/pug-runtime/index.js from dll-reference girder_plugin_large_image\n// module id = 9\n// module chunks = 0","import _ from 'underscore';\nimport AccessControlledModel from '@girder/core/models/AccessControlledModel';\nimport {getCurrentUser} from '@girder/core/auth';\nimport {restRequest} from '@girder/core/rest';\nimport MetadataMixin from '@girder/core/models/MetadataMixin';\n\nimport ElementCollection from '../collections/ElementCollection';\nimport convert from '../annotations/convert';\nimport {convertFeatures} from '../annotations/convertFeatures';\n\nimport style from '../annotations/style.js';\n\n/**\n * Define a backbone model representing an annotation.\n * An annotation contains zero or more \"elements\" or\n * geometric primitives that are represented in the\n * embedded \"elements\" attribute. This attribute is\n * an \"ElementCollection\" that triggers events when\n * any of the \"ElementModel\"'s contained within change.\n *\n * This model listens to changes in the element collection\n * and updates its own attribute in response. Users\n * should not modify the \"elements\" attribute directly.\n */\nconst AnnotationModel = AccessControlledModel.extend({\n resourceName: 'annotation',\n\n defaults: {\n annotation: {},\n minElements: 5000,\n maxDetails: 250000,\n maxCentroids: 2000000\n },\n\n initialize() {\n if (!this.get('updated') && getCurrentUser()) {\n this.attributes.updated = '' + Date.now(); // eslint-disable-line backbone/no-model-attributes\n this.attributes.updatedId = getCurrentUser().id; // eslint-disable-line backbone/no-model-attributes\n }\n this._region = {\n maxDetails: this.get('maxDetails'),\n minElements: this.get('minElements'),\n sort: 'size',\n sortdir: -1\n };\n /* amount of annotations to request compared to visible area. 1 will\n * request exactly the visible area of the map, 2 will get a region\n * twice as big in each direction. */\n this._viewArea = 3;\n this._elements = new ElementCollection(\n this.get('annotation').elements || []\n );\n this._elements.annotation = this;\n\n this.listenTo(this._elements, 'change add remove reset', () => {\n // copy the object to ensure a change event is triggered\n var annotation = _.extend({}, this.get('annotation'));\n\n annotation.elements = this._elements.toJSON();\n this.set('annotation', annotation);\n });\n },\n\n /**\n * Fetch the centroids and unpack the binary data.\n */\n fetchCentroids: function () {\n var url = (this.altUrl || this.resourceName) + '/' + this.get('_id');\n var restOpts = {\n url: url,\n data: {\n sort: 'size',\n sortdir: -1,\n centroids: true,\n limit: this.get('maxCentroids'),\n _: (this.get('updated') || this.get('created')) + '_' + this.get('_version')\n },\n xhrFields: {\n responseType: 'arraybuffer'\n },\n error: null\n };\n\n return restRequest(restOpts).done((resp) => {\n let dv = new DataView(resp);\n let z0 = 0, z1 = dv.byteLength - 1;\n for (; dv.getUint8(z0) && z0 < dv.byteLength; z0 += 1);\n for (; dv.getUint8(z1) && z1 >= 0; z1 -= 1);\n if (z0 >= z1) {\n throw new Error('invalid centroid data');\n }\n const json = new Uint8Array(z0 + dv.byteLength - z1 - 1);\n json.set(new Uint8Array(resp.slice(0, z0)), 0);\n json.set(new Uint8Array(resp.slice(z1 + 1)), z0);\n const result = JSON.parse(decodeURIComponent(escape(String.fromCharCode.apply(null, json))));\n const defaults = {\n default: {\n fillColor: {r: 1, g: 120 / 255, b: 0},\n fillOpacity: 0.8,\n strokeColor: {r: 0, g: 0, b: 0},\n strokeOpacity: 1,\n strokeWidth: 1\n },\n rectangle: {\n fillColor: {r: 176 / 255, g: 222 / 255, b: 92 / 255},\n strokeColor: {r: 153 / 255, g: 153 / 255, b: 153 / 255},\n strokeWidth: 2\n },\n ellipse: {\n fillColor: {r: 176 / 255, g: 222 / 255, b: 92 / 255},\n strokeColor: {r: 153 / 255, g: 153 / 255, b: 153 / 255},\n strokeWidth: 2\n },\n circle: {\n fillColor: {r: 176 / 255, g: 222 / 255, b: 92 / 255},\n strokeColor: {r: 153 / 255, g: 153 / 255, b: 153 / 255},\n strokeWidth: 2\n },\n polyline: {\n strokeColor: {r: 1, g: 120 / 255, b: 0},\n strokeOpacity: 0.5,\n strokeWidth: 4\n },\n polyline_closed: {\n fillColor: {r: 176 / 255, g: 222 / 255, b: 92 / 255},\n strokeColor: {r: 153 / 255, g: 153 / 255, b: 153 / 255},\n strokeWidth: 2\n }\n };\n result.props = result._elementQuery.props.map((props) => {\n const propsdict = {};\n result._elementQuery.propskeys.forEach((key, i) => {\n propsdict[key] = props[i];\n });\n Object.assign(propsdict, style(propsdict));\n const type = propsdict.type + (propsdict.closed ? '_closed' : '');\n ['fillColor', 'strokeColor', 'strokeWidth', 'fillOpacity', 'strokeOpacity'].forEach((key) => {\n if (propsdict[key] === undefined) {\n propsdict[key] = (defaults[type] || defaults.default)[key];\n }\n if (propsdict[key] === undefined) {\n propsdict[key] = defaults.default[key];\n }\n });\n return propsdict;\n });\n dv = new DataView(resp, z0 + 1, z1 - z0 - 1);\n if (dv.byteLength !== result._elementQuery.returned * 28) {\n throw new Error('invalid centroid data size');\n }\n const centroids = {\n id: new Array(result._elementQuery.returned),\n x: new Float32Array(result._elementQuery.returned),\n y: new Float32Array(result._elementQuery.returned),\n r: new Float32Array(result._elementQuery.returned),\n s: new Uint32Array(result._elementQuery.returned)\n };\n let i, s;\n for (i = s = 0; s < dv.byteLength; i += 1, s += 28) {\n centroids.id[i] =\n ('0000000' + dv.getUint32(s, false).toString(16)).substr(-8) +\n ('0000000' + dv.getUint32(s + 4, false).toString(16)).substr(-8) +\n ('0000000' + dv.getUint32(s + 8, false).toString(16)).substr(-8);\n centroids.x[i] = dv.getFloat32(s + 12, true);\n centroids.y[i] = dv.getFloat32(s + 16, true);\n centroids.r[i] = dv.getFloat32(s + 20, true);\n centroids.s[i] = dv.getUint32(s + 24, true);\n }\n result.centroids = centroids;\n result.data = {length: result._elementQuery.returned};\n if (result._elementQuery.count > result._elementQuery.returned) {\n result.partial = true;\n }\n this._centroids = result;\n return result;\n });\n },\n\n /**\n * Fetch a single resource from the server. Triggers g:fetched on success,\n * or g:error on error.\n * To ignore the default error handler, pass\n * ignoreError: true\n * in your opts object.\n */\n fetch: function (opts) {\n if (this.altUrl === null && this.resourceName === null) {\n alert('Error: You must set an altUrl or a resourceName on your model.'); // eslint-disable-line no-alert\n return;\n }\n\n opts = opts || {};\n var restOpts = {\n url: (this.altUrl || this.resourceName) + '/' + this.get('_id'),\n /* Add our region request into the query */\n data: Object.assign({}, this._region, {_: (this.get('updated') || this.get('created')) + '_' + this.get('_version')})\n };\n if (opts.extraPath) {\n restOpts.url += '/' + opts.extraPath;\n }\n if (opts.ignoreError) {\n restOpts.error = null;\n }\n this._inFetch = true;\n if (this._refresh) {\n delete this._pageElements;\n delete this._centroids;\n this._refresh = false;\n }\n return restRequest(restOpts).done((resp) => {\n const annotation = resp.annotation || {};\n const elements = annotation.elements || [];\n\n this.set(resp);\n if (this._pageElements === undefined && resp._elementQuery) {\n this._pageElements = resp._elementQuery.count > resp._elementQuery.returned;\n if (this._pageElements) {\n this._inFetch = 'centroids';\n this.fetchCentroids().then(() => {\n this._inFetch = true;\n if (opts.extraPath) {\n this.trigger('g:fetched.' + opts.extraPath);\n } else {\n this.trigger('g:fetched');\n }\n return null;\n }).always(() => {\n this._inFetch = false;\n if (this._nextFetch) {\n var nextFetch = this._nextFetch;\n this._nextFetch = null;\n nextFetch();\n }\n return null;\n });\n } else {\n this._nextFetch = null;\n }\n }\n if (this._inFetch !== 'centroids') {\n if (opts.extraPath) {\n this.trigger('g:fetched.' + opts.extraPath);\n } else {\n this.trigger('g:fetched');\n }\n }\n this._elements.reset(elements, _.extend({sync: true}, opts));\n }).fail((err) => {\n this.trigger('g:error', err);\n }).always(() => {\n if (this._inFetch !== 'centroids') {\n this._inFetch = false;\n if (this._nextFetch) {\n var nextFetch = this._nextFetch;\n this._nextFetch = null;\n if (this._pageElements !== false) {\n nextFetch();\n }\n }\n }\n });\n },\n\n /**\n * Get/set for a refresh flag.\n *\n * @param {boolean} [val] If specified, set the refresh flag. If not\n * specified, return the refresh flag.\n * @returns {boolean|this}\n */\n refresh(val) {\n if (val === undefined) {\n return self._refresh;\n }\n self._refresh = val;\n return this;\n },\n\n /**\n * Perform a PUT or POST request on the annotation data depending\n * on whether the annotation is new or not. This mirrors somewhat\n * the api of `Backbone.Model.save`. For new models, the `itemId`\n * attribute is required.\n */\n save(options) {\n const data = _.extend({}, this.get('annotation'));\n let url;\n let method;\n const isNew = this.isNew();\n\n if (isNew) {\n if (!this.get('itemId')) {\n throw new Error('itemId is required to save new annotations');\n }\n url = `annotation?itemId=${this.get('itemId')}`;\n method = 'POST';\n } else {\n url = `annotation/${this.id}`;\n method = 'PUT';\n if (getCurrentUser()) {\n this.attributes.updated = '' + Date.now(); // eslint-disable-line backbone/no-model-attributes\n this.attributes.updatedId = getCurrentUser().id; // eslint-disable-line backbone/no-model-attributes\n }\n }\n\n if (this._pageElements === false || isNew) {\n this._pageElements = false;\n data.elements = _.map(data.elements, (element) => {\n element = _.extend({}, element);\n if (element.label && !element.label.value) {\n delete element.label;\n }\n return element;\n });\n } else {\n delete data.elements;\n // we don't want to override an annotation with a partial response\n if (this._pageElements === true) {\n console.warn('Cannot save elements of a paged annotation');\n }\n }\n\n return restRequest({\n url,\n method,\n contentType: 'application/json',\n processData: false,\n data: JSON.stringify(data)\n }).done((annotation) => {\n if (isNew) {\n // the elements array does not come back with this request\n annotation.elements = (this.get('annotation') || {}).elements || [];\n this.set(annotation);\n }\n this.trigger('sync', this, annotation, options);\n });\n },\n\n /**\n * Perform a DELETE request on the annotation model and remove all\n * event listeners. This mirrors the api of `Backbone.Model.destroy`\n * without the backbone specific options, which are not supported by\n * girder's base model either.\n */\n destroy(options) {\n this.stopListening();\n this.trigger('destroy', this, this.collection, options);\n return this.delete(options);\n },\n\n name() {\n return (this.get('annotation') || {}).name;\n },\n\n /**\n * Perform a DELETE request on the annotation model and reset the id\n * attribute, but don't remove event listeners.\n */\n delete(options) {\n this.trigger('g:delete', this, this.collection, options);\n let xhr = false;\n if (!this.isNew()) {\n if (getCurrentUser()) {\n this.attributes.updated = '' + Date.now(); // eslint-disable-line backbone/no-model-attributes\n this.attributes.updatedId = getCurrentUser().id; // eslint-disable-line backbone/no-model-attributes\n }\n xhr = restRequest({\n url: `annotation/${this.id}`,\n method: 'DELETE'\n });\n }\n this.unset('_id');\n return xhr;\n },\n\n /**\n * Return the annotation as a geojson FeatureCollection.\n *\n * WARNING: Not all annotations are representable in geojson.\n * Annotation types that cannot be converted will be ignored.\n */\n geojson() {\n const json = this.get('annotation') || {};\n const elements = json.elements || [];\n return convert(elements, {annotation: this.id});\n },\n\n /**\n * Return annotations that cannot be represented as geojson as geojs\n * features specifications.\n *\n * @param webglLayer: the parent feature layer.\n */\n non_geojson(layer) {\n const json = this.get('annotation') || {};\n const elements = json.elements || [];\n return convertFeatures(elements, {annotation: this.id}, layer);\n },\n\n /**\n * Return annotation elements that cannot be represented as geojs\n * features, such as image overlays.\n */\n overlays() {\n const overlayElementTypes = ['image', 'pixelmap'];\n const json = this.get('annotation') || {};\n const elements = json.elements || [];\n return elements.filter((element) => overlayElementTypes.includes(element.type));\n },\n\n /**\n * Set the view. If we are paging elements, possibly refetch the elements.\n * Callers should listen for the g:fetched event to know when new elements\n * have been fetched.\n *\n * @param {object} bounds the corners of the visible region. This is an\n * object with left, top, right, bottom in pixels.\n * @param {number} zoom the zoom factor.\n * @param {number} maxZoom the maximum zoom factor.\n * @param {boolean} noFetch Truthy to not perform a fetch if the view\n * changes.\n * @param {number} sizeX the maximum width to query.\n * @param {number} sizeY the maximum height to query.\n */\n setView(bounds, zoom, maxZoom, noFetch, sizeX, sizeY) {\n if (this._pageElements === false || this.isNew()) {\n return;\n }\n var width = bounds.right - bounds.left,\n height = bounds.bottom - bounds.top,\n xoverlap = (width * (this._viewArea - 1)) / 2,\n yoverlap = (height * (this._viewArea - 1)) / 2,\n minxoverlap = xoverlap / 2,\n minyoverlap = yoverlap / 2;\n var canskip = (this._region.left !== undefined &&\n bounds.left >= this._region.left + minxoverlap &&\n bounds.top >= this._region.top + minyoverlap &&\n bounds.right <= this._region.right - minxoverlap &&\n bounds.bottom <= this._region.bottom - minyoverlap &&\n Math.abs(this._lastZoom - zoom) < 1);\n if (canskip && !this._inFetch) {\n return;\n }\n if (this._pageElements || this._region.left !== undefined) {\n var lastRegion = Object.assign({}, this._region);\n this._region.left = Math.max(0, bounds.left - xoverlap);\n this._region.top = Math.max(0, bounds.top - yoverlap);\n this._region.right = Math.min(sizeX || 1e6, bounds.right + xoverlap);\n this._region.bottom = Math.min(sizeY || 1e6, bounds.bottom + yoverlap);\n this._lastZoom = zoom;\n /* Don't ask for a minimum size; we show centroids if the data is\n * incomplete. */\n if (['left', 'top', 'right', 'bottom', 'minimumSize'].every((key) => this._region[key] === lastRegion[key])) {\n return;\n }\n }\n if (noFetch) {\n return;\n }\n if (!this._nextFetch) {\n var nextFetch = () => {\n this.fetch();\n };\n if (this._inFetch) {\n this._nextFetch = nextFetch;\n } else {\n nextFetch();\n }\n }\n },\n\n /**\n * Return a backbone collection containing the annotation elements.\n */\n elements() {\n return this._elements;\n }\n});\n\n_.extend(AnnotationModel.prototype, MetadataMixin);\n\nexport default AnnotationModel;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/models/AnnotationModel.js","module.exports = (__webpack_require__(0))(55);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/backbone/backbone.js from dll-reference girder_plugin_large_image\n// module id = 11\n// module chunks = 0","/**\n * Returns a function that rotates a coordinate the given\n * amount about a center point.\n */\nexport default function rotate(rotation, center) {\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n center = center || [0, 0];\n\n return function (point) {\n const x = point[0] - center[0];\n const y = point[1] - center[1];\n return [\n x * cos - y * sin + center[0],\n x * sin + y * cos + center[1]\n ];\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/rotate.js","import rectangle from './rectangle';\nimport ellipse from './ellipse';\nimport circle from './circle';\nimport polyline from './polyline';\nimport point from './point';\n\nexport {\n rectangle,\n ellipse,\n circle,\n polyline,\n point\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/defaults/index.js","import tc from 'tinycolor2';\n\nvar memoizeColorAlpha = {entries: 0};\n\nfunction colorAlpha(color) {\n if (memoizeColorAlpha[color]) {\n return memoizeColorAlpha[color];\n }\n var tccolor = tc(color),\n value = {\n rgb: tccolor.toHexString(),\n alpha: tccolor.getAlpha()\n };\n memoizeColorAlpha.entries += 1;\n if (memoizeColorAlpha.entries > 100) {\n memoizeColorAlpha = {entries: 0};\n }\n memoizeColorAlpha[color] = value;\n return value;\n}\n\nexport default function style(json) {\n var color;\n const style = {};\n\n if (json.label) {\n style.label = json.label;\n }\n if (json.fillColor) {\n color = colorAlpha(json.fillColor);\n style.fillColor = color.rgb;\n style.fillOpacity = color.alpha;\n }\n if (json.lineColor) {\n color = colorAlpha(json.lineColor);\n style.strokeColor = color.rgb;\n style.strokeOpacity = color.alpha;\n }\n if (json.lineWidth) {\n style.strokeWidth = json.lineWidth;\n }\n return style;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/style.js","/**\n * Convert a geojs point object to an annotation\n * coordinate.\n */\nfunction point(pt) {\n return [pt.x, pt.y, pt.z || 0];\n}\n\nexport default point;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/coordinates/point.js","import _ from 'underscore';\n\nimport common from '../common';\n\n/**\n * Convert a geojs rectangle annotation to the large_image\n * annotation schema.\n */\nfunction rectangle(annotation) {\n const element = common(annotation);\n let p = annotation.coordinates();\n /* Sort the coordinates so they are always in the same winding order. */\n let ang = [\n Math.atan2(p[1].y - p[0].y, p[1].x - p[0].x),\n Math.atan2(p[2].y - p[1].y, p[2].x - p[1].x),\n Math.atan2(p[3].y - p[2].y, p[3].x - p[2].x),\n Math.atan2(p[0].y - p[3].y, p[0].x - p[3].x)\n ];\n let ang0 = ang.indexOf(Math.min(...ang));\n if (ang[(ang0 + 1) % 4] - ang[ang0] > Math.PI) {\n p = [p[0], p[3], p[2], p[1]];\n ang = [\n Math.atan2(p[1].y - p[0].y, p[1].x - p[0].x),\n Math.atan2(p[2].y - p[1].y, p[2].x - p[1].x),\n Math.atan2(p[3].y - p[2].y, p[3].x - p[2].x),\n Math.atan2(p[0].y - p[3].y, p[0].x - p[3].x)\n ];\n ang0 = ang.indexOf(Math.min(...ang));\n }\n /* If rotate, bias toward the more flat direction. */\n if (ang[ang0] < -0.75 * Math.PI) {\n ang0 += 1;\n }\n /* Sort the coordinates so that they are in a predictable order */\n const p1 = p[ang0 % 4],\n p2 = p[(ang0 + 1) % 4],\n p3 = p[(ang0 + 2) % 4],\n p4 = p[(ang0 + 3) % 4];\n const top = [p3.x - p2.x, p3.y - p2.y];\n const left = [p2.x - p1.x, p2.y - p1.y];\n\n // determine the rotation of the top line of the rectangle\n const rotation = Math.atan2(top[1], top[0]);\n const height = Math.sqrt(left[0] * left[0] + left[1] * left[1]);\n const width = Math.sqrt(top[0] * top[0] + top[1] * top[1]);\n const center = [\n 0.25 * (p1.x + p2.x + p3.x + p4.x),\n 0.25 * (p1.y + p2.y + p3.y + p4.y),\n 0\n ];\n\n return _.extend(element, {\n type: 'rectangle',\n center,\n width,\n height,\n rotation\n });\n}\n\nexport default rectangle;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/rectangle.js","import _ from 'underscore';\n\nimport point from './point';\n\n/**\n * Convert an array of point objects to an array of\n * annotation coordinates.\n */\nfunction array(a) {\n return _.map(a, point);\n}\n\nexport default array;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/coordinates/array.js","module.exports = (__webpack_require__(0))(24);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/View.js from dll-reference girder_plugin_large_image\n// module id = 18\n// module chunks = 0","module.exports = (__webpack_require__(0))(20);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/@girder/large_image/views/configView.js from dll-reference girder_plugin_large_image\n// module id = 19\n// module chunks = 0","import _ from 'underscore';\n\nimport {wrap} from '@girder/core/utilities/PluginUtils';\n\nimport ImageViewerSelectWidget from '@girder/large_image/views/imageViewerSelectWidget';\n\nimport imageViewerAnnotationList from '../templates/imageViewerAnnotationList.pug';\n\nimport AnnotationListWidget from './annotationListWidget';\n\nwrap(ImageViewerSelectWidget, 'initialize', function (initialize, settings) {\n this.itemId = settings.imageModel.id;\n this.model = settings.imageModel;\n this._annotationList = new AnnotationListWidget({\n model: this.model,\n parentView: this\n });\n initialize.apply(this, _.rest(arguments));\n});\n\nwrap(ImageViewerSelectWidget, 'render', function (render) {\n render.apply(this, _.rest(arguments));\n this.$el.append(imageViewerAnnotationList());\n this._annotationList\n .setViewer(this.currentViewer)\n .setElement(this.$('.g-annotation-list-container'))\n .render();\n return this;\n});\n\nwrap(ImageViewerSelectWidget, '_selectViewer', function (_selectViewer) {\n _selectViewer.apply(this, _.rest(arguments));\n this._annotationList\n .setViewer(this.currentViewer)\n .render();\n return this;\n});\n\nexport default ImageViewerSelectWidget;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/imageViewerSelectWidget.js","module.exports = (__webpack_require__(0))(25);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/constants.js from dll-reference girder_plugin_large_image\n// module id = 21\n// module chunks = 0","module.exports = (__webpack_require__(0))(107);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/auth.js from dll-reference girder_plugin_large_image\n// module id = 22\n// module chunks = 0","module.exports = (__webpack_require__(2))(68);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/AccessWidget.js from dll-reference girder_lib\n// module id = 23\n// module chunks = 0","import Collection from '@girder/core/collections/Collection';\nimport {SORT_DESC} from '@girder/core/constants';\n\nimport AnnotationModel from '../models/AnnotationModel';\n\nexport default Collection.extend({\n resourceName: 'annotation',\n model: AnnotationModel,\n // this is a large number so that we probably never need to page\n // annotations.\n pageLimit: 10000,\n sortField: 'created',\n sortDir: SORT_DESC\n});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/collections/AnnotationCollection.js","import _ from 'underscore';\n\nimport * as geometry from './geometry';\nimport * as defaults from './defaults';\nimport style from './style';\n\nfunction convertOne(properties) {\n return function (annotation, key) {\n if (('' + key).startsWith('_')) {\n return;\n }\n const type = annotation.type;\n annotation = _.defaults({}, annotation, defaults[type] || {});\n if (!_.has(geometry, type)) {\n return;\n }\n const geom = geometry[type](annotation);\n return {\n type: 'Feature',\n id: annotation.id,\n geometry: {type: geom.type, coordinates: geom.coordinates},\n properties: _.extend({element: annotation, annotationType: geom.annotationType}, properties, style(annotation))\n };\n };\n}\n\nexport default function convert(json, properties = {}) {\n const features = _.chain(json)\n .mapObject(convertOne(properties))\n .compact()\n .value();\n\n return {\n type: 'FeatureCollection',\n features\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/convert.js","import rectangle from './rectangle';\nimport ellipse from './ellipse';\nimport circle from './circle';\nimport polyline from './polyline';\nimport point from './point';\n\nexport {\n rectangle,\n ellipse,\n circle,\n polyline,\n point\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geometry/index.js","/**\n * Create a color table that can be used for a heatmap.\n *\n * @param record: the heatmap or griddata heatmap annotation element.\n * @param values: a list of data values.\n * @returns: an object with:\n * color: a color object that can be passed to the heatmap.\n * min: the minIntensity for the heatmap.\n * max: the maxIntensity for the heatmap.\n */\nfunction heatmapColorTable(record, values) {\n let range0 = 0;\n let range1 = 1;\n let min = 0;\n let max = null;\n const color = {\n 0: {r: 0, g: 0, b: 0, a: 0},\n 1: {r: 1, g: 1, b: 0, a: 1}\n };\n if (record.colorRange && record.rangeValues) {\n if (record.normalizeRange || !values.length) {\n for (let i = 0; i < record.colorRange.length && i < record.rangeValues.length; i += 1) {\n const val = Math.max(0, Math.min(1, record.rangeValues[i]));\n color[val] = record.colorRange[i];\n if (val >= 1) {\n break;\n }\n }\n } else if (record.colorRange.length >= 2 && record.rangeValues.length >= 2) {\n range0 = range1 = record.rangeValues[0] || 0;\n for (let i = 1; i < record.rangeValues.length; i += 1) {\n const val = record.rangeValues[i] || 0;\n if (val < range0) {\n range0 = val;\n }\n if (val > range1) {\n range1 = val;\n }\n }\n if (range0 === range1) {\n range0 -= 1;\n }\n min = undefined;\n for (let i = 0; i < record.colorRange.length && i < record.rangeValues.length; i += 1) {\n let val = (record.rangeValues[i] - range0) / ((range1 - range0) || 1);\n if (val <= 0 || min === undefined) {\n min = record.rangeValues[i];\n }\n max = record.rangeValues[i];\n val = Math.max(0, Math.min(1, val));\n color[val] = record.colorRange[i];\n if (val >= 1) {\n break;\n }\n }\n }\n }\n return {\n color: color,\n min: min,\n max: max\n };\n}\n\n/**\n * Convert a heatmap annotation to a geojs feature.\n *\n * @param record: the heatmap annotation element.\n * @param properties: a property map of additional data, such as the original\n * annotation id.\n * @param layer: the layer where this may be added.\n */\nfunction convertHeatmap(record, properties, layer) {\n /* Heatmaps need to be in their own layer */\n const map = layer.map();\n /* when scaleWithZoom is set, use the base pixel level of the first tile\n * layer for scaling rather than the 0-resolution level. */\n const tileLayer = map.layers().find((l) => l instanceof window.geo.tileLayer && l.options && l.options.maxLevel !== undefined);\n const scaleZoomFactor = tileLayer ? 2 ** -tileLayer.options.maxLevel : 1;\n const heatmapLayer = map.createLayer('feature', {features: ['heatmap']});\n const colorTable = heatmapColorTable(record, record.points.map((d) => d[3]));\n const heatmap = heatmapLayer.createFeature('heatmap', {\n style: {\n radius: (record.radius || 25) * (record.scaleWithZoom ? scaleZoomFactor : 1),\n blurRadius: 0,\n gaussian: true,\n color: colorTable.color,\n scaleWithZoom: record.scaleWithZoom || false\n },\n position: (d) => ({x: d[0], y: d[1], z: d[2]}),\n intensity: (d) => d[3] || 0,\n minIntensity: colorTable.min,\n maxIntensity: colorTable.max,\n updateDelay: 100\n }).data(record.points);\n heatmap._ownLayer = true;\n return [heatmap];\n}\n\n/**\n * Convert a griddata heatmap annotation to a geojs feature.\n *\n * @param record: the griddata heatmap annotation element.\n * @param properties: a property map of additional data, such as the original\n * annotation id.\n * @param layer: the layer where this may be added.\n */\nfunction convertGridToHeatmap(record, properties, layer) {\n /* Heatmaps need to be in their own layer */\n const map = layer.map();\n const heatmapLayer = map.createLayer('feature', {features: ['heatmap']});\n const x0 = (record.origin || [0, 0, 0])[0] || 0;\n const y0 = (record.origin || [0, 0, 0])[1] || 0;\n const z = (record.origin || [0, 0, 0])[2] || 0;\n const dx = (record.dx || 1);\n const dy = (record.dy || 1);\n const colorTable = heatmapColorTable(record, record.values);\n const heatmap = heatmapLayer.createFeature('heatmap', {\n style: {\n radius: record.radius || 25,\n blurRadius: 0,\n gaussian: true,\n color: colorTable.color\n },\n position: (d, i) => ({\n x: x0 + dx * (i % record.gridWidth),\n y: y0 + dy * Math.floor(i / record.gridWidth),\n z: z\n }),\n intensity: (d) => d || 0,\n minIntensity: colorTable.min,\n maxIntensity: colorTable.max,\n updateDelay: 100\n }).data(record.values);\n heatmap._ownLayer = true;\n return [heatmap];\n}\n\n/**\n * Convert a griddata heatmap contour to a geojs feature.\n *\n * @param record: the griddata contour annotation element.\n * @param properties: a property map of additional data, such as the original\n * annotation id.\n * @param layer: the layer where this may be added.\n */\nfunction convertGridToContour(record, properties, layer) {\n let min = record.values[0] || 0;\n let max = min;\n for (let i = 1; i < record.values.length; i += 1) {\n if (record.values[i] > max) {\n max = record.values[i];\n }\n if (record.values[i] < max) {\n min = record.values[i];\n }\n }\n if (min >= 0) {\n min = -1; /* any negative number will do */\n }\n const contour = layer.createFeature('contour', {\n style: {\n value: (d) => d || 0\n },\n contour: {\n gridWidth: record.gridWidth,\n x0: (record.origin || [])[0] || 0,\n y0: (record.origin || [])[1] || 0,\n dx: record.dx || 1,\n dy: record.dy || 1,\n stepped: false,\n colorRange: [\n record.minColor || {r: 0, g: 0, b: 1, a: 1},\n record.zeroColor || {r: 0, g: 0, b: 0, a: 0},\n record.maxColor || {r: 1, g: 1, b: 0, a: 1}\n ],\n rangeValues: [min, 0, Math.max(0, max)]\n }\n }).data(record.values);\n return [contour];\n}\n\nconst converters = {\n griddata_contour: convertGridToContour,\n griddata_heatmap: convertGridToHeatmap,\n heatmap: convertHeatmap\n};\n\nfunction convertFeatures(json, properties = {}, layer) {\n try {\n var features = [];\n json.forEach((element) => {\n const func = converters[element.type + '_' + element.interpretation] || converters[element.type];\n if (func) {\n features = features.concat(func(element, properties, layer));\n }\n });\n return features;\n } catch (err) {\n console.error(err);\n }\n}\n\nexport {\n convertFeatures,\n heatmapColorTable\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/convertFeatures.js","import point from './point';\nimport rectangle from './rectangle';\nimport ellipse from './ellipse';\nimport circle from './circle';\nimport polygon from './polygon';\nimport line from './line';\n\nexport {\n point,\n rectangle,\n ellipse,\n circle,\n polygon,\n line\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/index.js","import _ from 'underscore';\n\nimport * as types from './types';\n\n/**\n * Convert a geojs annotation object into an annotation\n * element defined by the json schema.\n *\n * @param {annotation} annotation A geojs annotation object\n * @returns {object}\n */\nfunction convert(annotation) {\n var type = annotation.type();\n if (!_.has(types, type)) {\n throw new Error(\n `Unknown annotation type \"${type}\"`\n );\n }\n return types[type](annotation);\n}\n\nexport default convert;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/convert.js","import {registerPluginNamespace} from '@girder/core/pluginUtils';\nimport SearchFieldWidget from '@girder/core/views/widgets/SearchFieldWidget';\n\n// import modules for side effects\nimport './routes';\nimport './views/imageViewerSelectWidget';\n\n// expose symbols under girder.plugins\nimport * as largeImageAnnotation from './index';\nregisterPluginNamespace('large_image_annotation', largeImageAnnotation);\n\nSearchFieldWidget.addMode(\n 'li_annotation_metadata',\n ['item'],\n 'Annotation Metadata search',\n 'You can search specific annotation metadata keys by adding \"key:\" to your search. Otherwise, all primary metadata keys are searched. For example \"key:quality good\" would find any items with annotations that have attributes with a key named quality (case sensitive) that contains the word \"good\" (case insensitive) anywhere in its value.'\n);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/main.js","module.exports = (__webpack_require__(0))(202);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/pluginUtils.js from dll-reference girder_plugin_large_image\n// module id = 32\n// module chunks = 0","module.exports = (__webpack_require__(0))(203);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/SearchFieldWidget.js from dll-reference girder_plugin_large_image\n// module id = 33\n// module chunks = 0","import events from '@girder/core/events';\nimport router from '@girder/core/router';\nimport {exposePluginConfig} from '@girder/core/utilities/PluginUtils';\n\nimport ConfigView from './views/configView';\n\nexposePluginConfig('large_image_annotation', 'plugins/large_image_annotation/config');\n\nrouter.route('plugins/large_image_annotation/config', 'largeImageAnnotationConfig', function () {\n events.trigger('g:navigateTo', ConfigView);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/routes.js","module.exports = (__webpack_require__(0))(204);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/router.js from dll-reference girder_plugin_large_image\n// module id = 35\n// module chunks = 0","module.exports = (__webpack_require__(0))(206);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/PluginConfigBreadcrumbWidget.js from dll-reference girder_plugin_large_image\n// module id = 36\n// module chunks = 0","var pug = require(\"!../../../pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {\"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\":\".g-config-breadcrumb-container\\nform#g-large-image-form(role=\\\"form\\\")\\n .form-group\\n label Store annotation history\\n p.g-large-image-description\\n | Whenever annotations are saved, a record of the annotation's previous state can be kept.\\n .g-large-image-annotation-history-container\\n label.radio-inline\\n input.g-large-image-annotation-history-show(type=\\\"radio\\\", name=\\\"g-large-image-annotation-history\\\", checked=settings['large_image.annotation_history'] !== false ? 'checked': undefined)\\n | Record annotation history\\n label.radio-inline\\n input.g-large-image-annotation-history-hide(type=\\\"radio\\\", name=\\\"g-large-image-annotation-history\\\", checked=settings['large_image.annotation_history'] !== false ? undefined : 'checked')\\n | Don't store history\\n p#g-large-image-error-message.g-validation-failed-message\\n input.btn.btn-sm.btn-primary(type=\\\"submit\\\", value=\\\"Save\\\")\\n\"};\n;var locals_for_with = (locals || {});(function (settings) {;pug_debug_line = 1;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-config-breadcrumb-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 2;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cform id=\\\"g-large-image-form\\\" role=\\\"form\\\"\\u003E\";\n;pug_debug_line = 3;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Clabel\\u003E\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"Store annotation history\\u003C\\u002Flabel\\u003E\";\n;pug_debug_line = 5;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cp class=\\\"g-large-image-description\\\"\\u003E\";\n;pug_debug_line = 6;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"Whenever annotations are saved, a record of the annotation's previous state can be kept.\\u003C\\u002Fp\\u003E\";\n;pug_debug_line = 7;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-large-image-annotation-history-container\\\"\\u003E\";\n;pug_debug_line = 8;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Clabel class=\\\"radio-inline\\\"\\u003E\";\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"g-large-image-annotation-history-show\\\"\"+\" type=\\\"radio\\\" name=\\\"g-large-image-annotation-history\\\"\"+pug.attr(\"checked\", settings['large_image.annotation_history'] !== false ? 'checked': undefined, true, true)) + \"\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"Record annotation history\\u003C\\u002Flabel\\u003E\";\n;pug_debug_line = 11;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Clabel class=\\\"radio-inline\\\"\\u003E\";\n;pug_debug_line = 12;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"g-large-image-annotation-history-hide\\\"\"+\" type=\\\"radio\\\" name=\\\"g-large-image-annotation-history\\\"\"+pug.attr(\"checked\", settings['large_image.annotation_history'] !== false ? undefined : 'checked', true, true)) + \"\\u003E\";\n;pug_debug_line = 13;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"Don't store history\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 14;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cp class=\\\"g-validation-failed-message\\\" id=\\\"g-large-image-error-message\\\"\\u003E\\u003C\\u002Fp\\u003E\";\n;pug_debug_line = 15;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FlargeImageAnnotationConfig.pug\";\npug_html = pug_html + \"\\u003Cinput class=\\\"btn btn-sm btn-primary\\\" type=\\\"submit\\\" value=\\\"Save\\\"\\u003E\\u003C\\u002Fform\\u003E\";}.call(this,\"settings\" in locals_for_with?locals_for_with.settings:typeof settings!==\"undefined\"?settings:undefined));} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;};\nmodule.exports = template;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/templates/largeImageAnnotationConfig.pug","module.exports = (__webpack_require__(0))(114);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/@girder/large_image/views/imageViewerSelectWidget.js from dll-reference girder_plugin_large_image\n// module id = 38\n// module chunks = 0","var pug = require(\"!../../../pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {\"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FimageViewerAnnotationList.pug\":\".g-annotation-list-container\\n\"};\n;pug_debug_line = 1;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FimageViewerAnnotationList.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-annotation-list-container\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;};\nmodule.exports = template;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/templates/imageViewerAnnotationList.pug","import $ from 'jquery';\nimport _ from 'underscore';\n\nimport {AccessType} from '@girder/core/constants';\nimport eventStream from '@girder/core/utilities/EventStream';\nimport {getCurrentUser} from '@girder/core/auth';\nimport {confirm} from '@girder/core/dialog';\nimport {getApiRoot, restRequest} from '@girder/core/rest';\nimport AccessWidget from '@girder/core/views/widgets/AccessWidget';\nimport events from '@girder/core/events';\nimport UserCollection from '@girder/core/collections/UserCollection';\nimport UploadWidget from '@girder/core/views/widgets/UploadWidget';\nimport View from '@girder/core/views/View';\nimport largeImageConfig from '@girder/large_image/views/configView';\n\nimport AnnotationCollection from '../collections/AnnotationCollection';\n\nimport annotationList from '../templates/annotationListWidget.pug';\n\nimport '../stylesheets/annotationListWidget.styl';\n\nconst AnnotationListWidget = View.extend({\n events: {\n 'click .g-annotation-toggle-select': '_displayAnnotation',\n 'click .g-annotation-toggle-all': '_displayAllAnnotations',\n 'click .g-annotation-delete': '_deleteAnnotation',\n 'click .g-annotation-upload': '_uploadAnnotation',\n 'click .g-annotation-permissions': '_changePermissions',\n 'click .g-annotation-metadata': '_annotationMetadata',\n 'click .g-annotation-row'(evt) {\n var $el = $(evt.currentTarget);\n $el.find('.g-annotation-toggle-select').click();\n },\n 'click .g-annotation-row a,.g-annotation-toggle-select'(evt) {\n evt.stopPropagation();\n }\n },\n\n initialize() {\n this._drawn = new Set();\n this._viewer = null;\n this._sort = {\n field: 'name',\n direction: 1\n };\n\n this.collection = this.collection || new AnnotationCollection([], {comparator: null});\n this.users = new UserCollection();\n\n this.listenTo(this.collection, 'all', this.render);\n this.listenTo(this.users, 'all', this.render);\n this.listenTo(eventStream, 'g:event.large_image_annotation.create', () => this.collection.fetch(null, true));\n this.listenTo(eventStream, 'g:event.large_image_annotation.remove', () => this.collection.fetch(null, true));\n\n restRequest({\n type: 'GET',\n url: 'annotation/folder/' + this.model.get('folderId') + '/create',\n error: null\n }).done((createResp) => {\n this.createResp = createResp;\n largeImageConfig.getConfigFile(this.model.get('folderId')).done((val) => {\n this._liconfig = val || {};\n this._confList = this._liconfig.annotationList || {\n columns: [{\n type: 'record',\n value: 'name'\n }, {\n type: 'record',\n value: 'creator',\n format: 'user'\n }, {\n type: 'record',\n value: 'created',\n format: 'date'\n }]\n };\n this.collection.comparator = _.constant(0);\n this._lastSort = this._confList.defaultSort || [{\n type: 'record',\n value: 'updated',\n dir: 'up'\n }, {\n type: 'record',\n value: 'updated',\n dir: 'down'\n }];\n this.collection.sortField = JSON.stringify(this._lastSort.reduce((result, e) => {\n result.push([\n (e.type === 'metadata' ? 'annotation.attributes.' : '') + e.value,\n e.dir === 'down' ? 1 : -1\n ]);\n if (e.type === 'record') {\n result.push([\n `annotation.${e.value}`,\n e.dir === 'down' ? 1 : -1\n ]);\n }\n return result;\n }, []));\n this.collection.fetch({\n itemId: this.model.id,\n sort: this.collection.sortField || 'created',\n sortdir: -1\n }).done(() => {\n this._fetchUsers();\n });\n });\n });\n },\n\n render() {\n this.$el.html(annotationList({\n item: this.model,\n accessLevel: this.model.getAccessLevel(),\n creationAccess: this.createResp,\n annotations: this.collection,\n users: this.users,\n canDraw: this._viewer && this._viewer.annotationAPI(),\n drawn: this._drawn,\n apiRoot: getApiRoot(),\n confList: this._confList,\n AccessType\n }));\n return this;\n },\n\n setViewer(viewer) {\n this._drawn.clear();\n this._viewer = viewer;\n return this;\n },\n\n _displayAnnotation(evt) {\n if (!this._viewer || !this._viewer.annotationAPI()) {\n return;\n }\n const $el = $(evt.currentTarget).closest('.g-annotation-row');\n const id = $el.data('annotationId');\n const annotation = this.collection.get(id);\n const startedOn = $el.find('.g-annotation-toggle-select i.icon-eye').length;\n if (!startedOn) {\n this._drawn.add(id);\n annotation.fetch().then(() => {\n if (this._drawn.has(id)) {\n this._viewer.drawAnnotation(annotation);\n }\n return null;\n });\n } else {\n this._drawn.delete(id);\n this._viewer.removeAnnotation(annotation);\n }\n $el.find('.g-annotation-toggle-select i').toggleClass('icon-eye', !startedOn).toggleClass('icon-eye-off', !!startedOn);\n const anyOn = this.collection.some((annotation) => this._drawn.has(annotation.id));\n this.$el.find('th.g-annotation-toggle i').toggleClass('icon-eye', !!anyOn).toggleClass('icon-eye-off', !anyOn);\n },\n\n _displayAllAnnotations(evt) {\n if (!this._viewer || !this._viewer.annotationAPI()) {\n return;\n }\n const anyOn = this.collection.some((annotation) => this._drawn.has(annotation.id));\n this.collection.forEach((annotation) => {\n const id = annotation.id;\n let isDrawn = this._drawn.has(annotation.id);\n if (anyOn && isDrawn) {\n this._drawn.delete(id);\n this._viewer.removeAnnotation(annotation);\n isDrawn = false;\n } else if (!anyOn && !isDrawn) {\n this._drawn.add(id);\n annotation.fetch().then(() => {\n if (this._drawn.has(id)) {\n this._viewer.drawAnnotation(annotation);\n }\n return null;\n });\n isDrawn = true;\n }\n this.$el.find(`.g-annotation-row[data-annotation-id=\"${id}\"] .g-annotation-toggle-select i`).toggleClass('icon-eye', !!isDrawn).toggleClass('icon-eye-off', !isDrawn);\n });\n this.$el.find('th.g-annotation-toggle i').toggleClass('icon-eye', !anyOn).toggleClass('icon-eye-off', !!anyOn);\n },\n\n _deleteAnnotation(evt) {\n const $el = $(evt.currentTarget);\n const id = $el.parents('.g-annotation-row').data('annotationId');\n if (!id) {\n confirm({\n text: `Are you sure you want to delete ALL annotations?`,\n escapedHtml: true,\n yesText: 'Delete',\n confirmCallback: () => {\n restRequest({\n url: `annotation/item/${this.model.id}`,\n method: 'DELETE'\n }).done(() => {\n this.collection.fetch(null, true);\n });\n }\n });\n return;\n }\n const model = this.collection.get(id);\n\n confirm({\n text: `Are you sure you want to delete ${_.escape(model.get('annotation').name)}?`,\n escapedHtml: true,\n yesText: 'Delete',\n confirmCallback: () => {\n this._drawn.delete(id);\n model.destroy();\n }\n });\n },\n\n _uploadAnnotation() {\n var uploadWidget = new UploadWidget({\n el: $('#g-dialog-container'),\n title: 'Upload Annotation',\n parent: this.model,\n parentType: 'item',\n parentView: this,\n multiFile: true,\n otherParams: {\n reference: JSON.stringify({\n identifier: 'LargeImageAnnotationUpload',\n itemId: this.model.id,\n fileId: this.model.get('largeImage') && this.model.get('largeImage').fileId,\n userId: (getCurrentUser() || {}).id\n })\n }\n }).on('g:uploadFinished', () => {\n events.trigger('g:alert', {\n icon: 'ok',\n text: 'Uploaded annotations.',\n type: 'success',\n timeout: 4000\n });\n this.collection.fetch(null, true);\n }, this);\n this._uploadWidget = uploadWidget;\n uploadWidget.render();\n },\n\n _changePermissions(evt) {\n const $el = $(evt.currentTarget);\n let id = $el.parents('.g-annotation-row').data('annotationId');\n if (!id && this.collection.length === 1) {\n id = this.collection.at(0).id;\n }\n const model = id ? this.collection.get(id) : this.collection.at(0).clone();\n if (!id) {\n // if id is not set, override widget's saveAccessList\n model.get('annotation').name = 'All Annotations';\n model.save = () => {};\n model.updateAccess = () => {\n const access = {\n access: model.get('access'),\n public: model.get('public'),\n publicFlags: model.get('publicFlags')\n };\n this.collection.each((loopmodel) => {\n loopmodel.set(access);\n loopmodel.updateAccess();\n });\n this.collection.fetch(null, true);\n model.trigger('g:accessListSaved');\n };\n }\n new AccessWidget({\n el: $('#g-dialog-container'),\n type: 'annotation',\n hideRecurseOption: true,\n parentView: this,\n model,\n noAccessFlag: true\n }).on('g:accessListSaved', () => {\n this.collection.fetch(null, true);\n });\n },\n\n _fetchUsers() {\n this.collection.each((model) => {\n this.users.add({_id: model.get('creatorId')});\n this.users.add({_id: model.get('updatedId')});\n });\n $.when.apply($, this.users.map((model) => {\n return model.fetch();\n })).always(() => {\n this.render();\n });\n }\n});\n\nexport default AnnotationListWidget;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/annotationListWidget.js","module.exports = (__webpack_require__(0))(106);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/utilities/EventStream.js from dll-reference girder_plugin_large_image\n// module id = 41\n// module chunks = 0","module.exports = (__webpack_require__(0))(109);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/dialog.js from dll-reference girder_plugin_large_image\n// module id = 42\n// module chunks = 0","module.exports = (__webpack_require__(2))(60);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/collections/UserCollection.js from dll-reference girder_lib\n// module id = 43\n// module chunks = 0","module.exports = (__webpack_require__(2))(71);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/UploadWidget.js from dll-reference girder_lib\n// module id = 44\n// module chunks = 0","module.exports = (__webpack_require__(2))(27);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/collections/Collection.js from dll-reference girder_lib\n// module id = 45\n// module chunks = 0","module.exports = (__webpack_require__(2))(43);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/models/AccessControlledModel.js from dll-reference girder_lib\n// module id = 46\n// module chunks = 0","module.exports = (__webpack_require__(2))(66);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/models/MetadataMixin.js from dll-reference girder_lib\n// module id = 47\n// module chunks = 0","import Backbone from 'backbone';\n\nimport ElementModel from '../models/ElementModel';\n\nexport default Backbone.Collection.extend({\n model: ElementModel,\n comparator: undefined\n});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/collections/ElementCollection.js","import Backbone from 'backbone';\n\n/**\n * Define a \"view model\" representing an annotation element\n * (an individual shape. This model does not support REST\n * calls such as save/fetch/sync/delete because annotation\n * elements don't have endpoints. Instead this model exists\n * to support editing of the AnnotationModel on the client.\n */\nexport default Backbone.Model.extend({\n idAttribute: 'id'\n});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/models/ElementModel.js","import _ from 'underscore';\n\nimport rotate from '../rotate';\n\nexport default function rectangle(json) {\n const center = json.center;\n const x = center[0];\n const y = center[1];\n const height = json.height;\n const width = json.width;\n const rotation = json.rotation || 0;\n\n const left = x - width / 2;\n const right = x + width / 2;\n const top = y - height / 2;\n const bottom = y + height / 2;\n\n return {\n type: 'Polygon',\n coordinates: [_.map([\n [left, top],\n [right, top],\n [right, bottom],\n [left, bottom],\n [left, top]\n ], rotate(rotation, center))],\n annotationType: 'rectangle'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geometry/rectangle.js","import _ from 'underscore';\n\nimport rotate from '../rotate';\n\nexport default function ellipse(json) {\n const center = json.center;\n const x = center[0];\n const y = center[1];\n const height = json.height;\n const width = json.width;\n const rotation = json.rotation || 0;\n\n const left = x - width / 2;\n const right = x + width / 2;\n const top = y - height / 2;\n const bottom = y + height / 2;\n\n return {\n type: 'Polygon',\n coordinates: [_.map([\n [left, top],\n [right, top],\n [right, bottom],\n [left, bottom],\n [left, top]\n ], rotate(rotation, center))],\n annotationType: 'ellipse'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geometry/ellipse.js","export default function circle(json) {\n const center = json.center;\n const x = center[0];\n const y = center[1];\n const radius = json.radius;\n\n const left = x - radius;\n const right = x + radius;\n const top = y - radius;\n const bottom = y + radius;\n\n return {\n type: 'Polygon',\n coordinates: [[\n [left, top],\n [right, top],\n [right, bottom],\n [left, bottom],\n [left, top]\n ]],\n annotationType: 'circle'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geometry/circle.js","import _ from 'underscore';\n\nexport default function polyline(json) {\n const points = _.map(json.points, (p) => _.first(p, 2));\n var type;\n var coordinates;\n var annotationType;\n\n if (json.closed) {\n points.push(points[0]);\n coordinates = [points];\n if (json.holes) {\n const holes = (json.holes || []).map((hole) => {\n const result = hole.map((p) => _.first(p, 2));\n result.push(result[0]);\n return result;\n });\n coordinates = coordinates.concat(holes);\n }\n type = 'Polygon';\n annotationType = 'polygon';\n } else {\n type = 'LineString';\n coordinates = points;\n annotationType = 'line';\n }\n\n return {\n type,\n coordinates,\n annotationType\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geometry/polyline.js","import _ from 'underscore';\n\nexport default function point(json) {\n return {\n type: 'Point',\n coordinates: _.first(json.center, 2),\n annotationType: 'point'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geometry/point.js","export default {\n fillColor: 'rgba(0,0,0,0)',\n lineColor: 'rgb(0,0,0)',\n lineWidth: 2,\n rotation: 0,\n normal: [0, 0, 1]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/defaults/rectangle.js","export default {\n fillColor: 'rgba(0,0,0,0)',\n lineColor: 'rgb(0,0,0)',\n lineWidth: 2,\n rotation: 0,\n normal: [0, 0, 1]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/defaults/ellipse.js","export default {\n fillColor: 'rgba(0,0,0,0)',\n lineColor: 'rgb(0,0,0)',\n lineWidth: 2\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/defaults/circle.js","export default {\n fillColor: 'rgba(0,0,0,0)',\n lineColor: 'rgb(0,0,0)',\n lineWidth: 2\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/defaults/polyline.js","export default {\n lineColor: 'rgb(0,0,0)',\n lineWidth: 2,\n fillColor: 'rgba(0,0,0,0)'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/defaults/point.js","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@girder/large_image_annotation/node_modules/tinycolor2/tinycolor.js\n// module id = 60\n// module chunks = 0","var pug = require(\"!../../../pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {\"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\":\".g-annotation-list-header\\n i.icon-pencil\\n | Annotations\\n .btn-group.pull-right\\n if creationAccess\\n a.g-annotation-upload(title='Upload annotation')\\n i.icon-upload\\n if annotations.length\\n a.g-annotation-download(href=`${apiRoot}\\u002Fannotation\\u002Fitem\\u002F${item.id}`, title='Download annotations', download=`${item.get('name')}_annotations.json`)\\n i.icon-download\\n if accessLevel \\u003E= AccessType.ADMIN && annotations.length\\n a.g-annotation-permissions(title='Adjust permissions')\\n i.icon-lock\\n a.g-annotation-delete(title='Delete')\\n i.icon-cancel\\n\\nif annotations.length\\n table.g-annotation-list.table.table-hover.table-condensed\\n thead\\n \\u002F\\u002F\\n th.g-annotation-select\\n input.g-select-all(type='checkbox')\\n th.g-annotation-toggle\\n a.g-annotation-toggle-all(class=canDraw ? 'disabled' : '', title='Hide or show all annotations')\\n - let anyDrawn = annotations.models.some((annotation) =\\u003E drawn.has(annotation.id))\\n if anyDrawn\\n i.icon-eye\\n else\\n i.icon-eye-off\\n for column in confList.columns || []\\n if column.type !== 'record' || column.value !== 'controls'\\n th.g-annotation-column\\n if column.title !== undefined\\n = column.title\\n else\\n = `${column.value.substr(0, 1).toUpperCase()}${column.value.substr(1)}`\\n th.g-annotation-actions\\n tbody\\n for annotation in annotations.models\\n -\\n var name = annotation.get('annotation').name;\\n var creatorModel = users.get(annotation.get('creatorId'));\\n var creator = creatorModel ? creatorModel.get('login') : annotation.get('creatorId');\\n var updatedModel = users.get(annotation.get('updatedId'));\\n var updater = updatedModel ? updatedModel.get('login') : annotation.get('updatedId');\\n tr.g-annotation-row(data-annotation-id=annotation.id)\\n \\u002F\\u002F\\n td.g-annotation-select\\n input(type='checkbox', title='Select annotation for bulk actions')\\n td.g-annotation-toggle\\n a.g-annotation-toggle-select(class=canDraw ? 'disabled' : '', title='Show annotation')\\n if drawn.has(annotation.id)\\n i.icon-eye\\n else\\n i.icon-eye-off\\n for column in confList.columns || []\\n if column.type !== 'record' || column.value !== 'controls'\\n -\\n var value;\\n if (column.type === 'record' && column.value === 'creator') {\\n value = creator;\\n } else if (column.type === 'record' && column.value === 'updatedId') {\\n value = updater;\\n } else if (column.type === 'metadata') {\\n value = annotation.get('annotation').attributes || {};\\n column.value.split('.').forEach((part) =\\u003E {\\n value = (value || {})[part];\\n });\\n } else {\\n value = column.type === 'record' ? annotation.get(column.value) || annotation.get('annotation')[column.value] : '';\\n }\\n td.g-annotation-entry(title=value)\\n if column.format === 'user'\\n a(href=`#user\\u002F${annotation.get(column.value) || annotation.get(column.value + 'Id')}`)\\n = value\\n else if column.format === 'date'\\n = (new Date(value)).toLocaleString()\\n else\\n = value\\n td.g-annotation-actions\\n \\u002F\\u002F\\n if annotation.get('_accessLevel') \\u003E= AccessType.WRITE\\n a.g-annotation-edit(title='Edit annotation')\\n i.icon-cog\\n a.g-annotation-download(href=`${apiRoot}\\u002Fannotation\\u002F${annotation.id}`, title='Download', download=`${name}.json`)\\n i.icon-download\\n if annotation.get('_accessLevel') \\u003E= AccessType.ADMIN\\n a.g-annotation-permissions(title='Adjust permissions')\\n i.icon-lock\\n if annotation.get('_accessLevel') \\u003E= AccessType.WRITE\\n a.g-annotation-delete(title='Delete')\\n i.icon-cancel\\n\"};\n;var locals_for_with = (locals || {});(function (AccessType, Date, accessLevel, annotations, apiRoot, canDraw, confList, creationAccess, drawn, item, users) {;pug_debug_line = 1;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-annotation-list-header\\\"\\u003E\";\n;pug_debug_line = 2;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-pencil\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n;pug_debug_line = 3;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" Annotations\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"btn-group pull-right\\\"\\u003E\";\n;pug_debug_line = 5;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (creationAccess) {\n;pug_debug_line = 6;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-upload\\\" title=\\\"Upload annotation\\\"\\u003E\";\n;pug_debug_line = 7;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-upload\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\n;pug_debug_line = 8;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (annotations.length) {\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"g-annotation-download\\\"\"+pug.attr(\"href\", `${apiRoot}/annotation/item/${item.id}`, true, true)+\" title=\\\"Download annotations\\\"\"+pug.attr(\"download\", `${item.get('name')}_annotations.json`, true, true)) + \"\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-download\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\n;pug_debug_line = 11;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (accessLevel >= AccessType.ADMIN && annotations.length) {\n;pug_debug_line = 12;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-permissions\\\" title=\\\"Adjust permissions\\\"\\u003E\";\n;pug_debug_line = 13;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-lock\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n;pug_debug_line = 14;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-delete\\\" title=\\\"Delete\\\"\\u003E\";\n;pug_debug_line = 15;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-cancel\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 17;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (annotations.length) {\n;pug_debug_line = 18;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctable class=\\\"g-annotation-list table table-hover table-condensed\\\"\\u003E\";\n;pug_debug_line = 19;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cthead\\u003E\";\n;pug_debug_line = 20;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003C!--\";\n;pug_debug_line = 21;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"th.g-annotation-select\";\n;pug_debug_line = 22;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 22;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" input.g-select-all(type='checkbox')--\\u003E\";\n;pug_debug_line = 23;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cth class=\\\"g-annotation-toggle\\\"\\u003E\";\n;pug_debug_line = 24;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"g-annotation-toggle-all\",canDraw ? 'disabled' : ''], [false,true]), false, true)+\" title=\\\"Hide or show all annotations\\\"\") + \"\\u003E\";\n;pug_debug_line = 25;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nlet anyDrawn = annotations.models.some((annotation) => drawn.has(annotation.id))\n;pug_debug_line = 26;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (anyDrawn) {\n;pug_debug_line = 27;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-eye\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n}\nelse {\n;pug_debug_line = 29;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-eye-off\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fth\\u003E\";\n;pug_debug_line = 30;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\n// iterate confList.columns || []\n;(function(){\n var $$obj = confList.columns || [];\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\n;pug_debug_line = 31;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.type !== 'record' || column.value !== 'controls') {\n;pug_debug_line = 32;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cth class=\\\"g-annotation-column\\\"\\u003E\";\n;pug_debug_line = 33;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.title !== undefined) {\n;pug_debug_line = 34;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = column.title) ? \"\" : pug_interp));\n}\nelse {\n;pug_debug_line = 36;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = `${column.value.substr(0, 1).toUpperCase()}${column.value.substr(1)}`) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Fth\\u003E\";\n}\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\n;pug_debug_line = 31;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.type !== 'record' || column.value !== 'controls') {\n;pug_debug_line = 32;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cth class=\\\"g-annotation-column\\\"\\u003E\";\n;pug_debug_line = 33;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.title !== undefined) {\n;pug_debug_line = 34;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = column.title) ? \"\" : pug_interp));\n}\nelse {\n;pug_debug_line = 36;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = `${column.value.substr(0, 1).toUpperCase()}${column.value.substr(1)}`) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Fth\\u003E\";\n}\n }\n }\n}).call(this);\n\n;pug_debug_line = 37;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Cth class=\\\"g-annotation-actions\\\"\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Fthead\\u003E\";\n;pug_debug_line = 38;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctbody\\u003E\";\n;pug_debug_line = 39;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\n// iterate annotations.models\n;(function(){\n var $$obj = annotations.models;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var annotation = $$obj[pug_index1];\n;pug_debug_line = 40;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nvar name = annotation.get('annotation').name;\nvar creatorModel = users.get(annotation.get('creatorId'));\nvar creator = creatorModel ? creatorModel.get('login') : annotation.get('creatorId');\nvar updatedModel = users.get(annotation.get('updatedId'));\nvar updater = updatedModel ? updatedModel.get('login') : annotation.get('updatedId');\n;pug_debug_line = 46;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctr\" + (\" class=\\\"g-annotation-row\\\"\"+pug.attr(\"data-annotation-id\", annotation.id, true, true)) + \"\\u003E\";\n;pug_debug_line = 47;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003C!--\";\n;pug_debug_line = 48;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"td.g-annotation-select\";\n;pug_debug_line = 49;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 49;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" input(type='checkbox', title='Select annotation for bulk actions')--\\u003E\";\n;pug_debug_line = 50;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd class=\\\"g-annotation-toggle\\\"\\u003E\";\n;pug_debug_line = 51;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"g-annotation-toggle-select\",canDraw ? 'disabled' : ''], [false,true]), false, true)+\" title=\\\"Show annotation\\\"\") + \"\\u003E\";\n;pug_debug_line = 52;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (drawn.has(annotation.id)) {\n;pug_debug_line = 53;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-eye\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n}\nelse {\n;pug_debug_line = 55;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-eye-off\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Ftd\\u003E\";\n;pug_debug_line = 56;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\n// iterate confList.columns || []\n;(function(){\n var $$obj = confList.columns || [];\n if ('number' == typeof $$obj.length) {\n for (var pug_index2 = 0, $$l = $$obj.length; pug_index2 < $$l; pug_index2++) {\n var column = $$obj[pug_index2];\n;pug_debug_line = 57;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.type !== 'record' || column.value !== 'controls') {\n;pug_debug_line = 58;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nvar value;\nif (column.type === 'record' && column.value === 'creator') {\n value = creator;\n} else if (column.type === 'record' && column.value === 'updatedId') {\n value = updater;\n} else if (column.type === 'metadata') {\n value = annotation.get('annotation').attributes || {};\n column.value.split('.').forEach((part) => {\n value = (value || {})[part];\n });\n} else {\n value = column.type === 'record' ? annotation.get(column.value) || annotation.get('annotation')[column.value] : '';\n}\n;pug_debug_line = 72;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd\" + (\" class=\\\"g-annotation-entry\\\"\"+pug.attr(\"title\", value, true, true)) + \"\\u003E\";\n;pug_debug_line = 73;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.format === 'user') {\n;pug_debug_line = 74;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", `#user/${annotation.get(column.value) || annotation.get(column.value + 'Id')}`, true, true)) + \"\\u003E\";\n;pug_debug_line = 75;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (column.format === 'date') {\n;pug_debug_line = 77;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = (new Date(value)).toLocaleString()) ? \"\" : pug_interp));\n}\nelse {\n;pug_debug_line = 79;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Ftd\\u003E\";\n}\n }\n } else {\n var $$l = 0;\n for (var pug_index2 in $$obj) {\n $$l++;\n var column = $$obj[pug_index2];\n;pug_debug_line = 57;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.type !== 'record' || column.value !== 'controls') {\n;pug_debug_line = 58;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nvar value;\nif (column.type === 'record' && column.value === 'creator') {\n value = creator;\n} else if (column.type === 'record' && column.value === 'updatedId') {\n value = updater;\n} else if (column.type === 'metadata') {\n value = annotation.get('annotation').attributes || {};\n column.value.split('.').forEach((part) => {\n value = (value || {})[part];\n });\n} else {\n value = column.type === 'record' ? annotation.get(column.value) || annotation.get('annotation')[column.value] : '';\n}\n;pug_debug_line = 72;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd\" + (\" class=\\\"g-annotation-entry\\\"\"+pug.attr(\"title\", value, true, true)) + \"\\u003E\";\n;pug_debug_line = 73;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.format === 'user') {\n;pug_debug_line = 74;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", `#user/${annotation.get(column.value) || annotation.get(column.value + 'Id')}`, true, true)) + \"\\u003E\";\n;pug_debug_line = 75;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (column.format === 'date') {\n;pug_debug_line = 77;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = (new Date(value)).toLocaleString()) ? \"\" : pug_interp));\n}\nelse {\n;pug_debug_line = 79;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Ftd\\u003E\";\n}\n }\n }\n}).call(this);\n\n;pug_debug_line = 80;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd class=\\\"g-annotation-actions\\\"\\u003E\";\n;pug_debug_line = 81;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003C!--\";\n;pug_debug_line = 82;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"if annotation.get('_accessLevel') \\u003E= AccessType.WRITE\";\n;pug_debug_line = 83;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 83;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" a.g-annotation-edit(title='Edit annotation')\";\n;pug_debug_line = 84;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 84;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" i.icon-cog--\\u003E\";\n;pug_debug_line = 85;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"g-annotation-download\\\"\"+pug.attr(\"href\", `${apiRoot}/annotation/${annotation.id}`, true, true)+\" title=\\\"Download\\\"\"+pug.attr(\"download\", `${name}.json`, true, true)) + \"\\u003E\";\n;pug_debug_line = 86;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-download\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n;pug_debug_line = 87;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (annotation.get('_accessLevel') >= AccessType.ADMIN) {\n;pug_debug_line = 88;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-permissions\\\" title=\\\"Adjust permissions\\\"\\u003E\";\n;pug_debug_line = 89;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-lock\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\n;pug_debug_line = 90;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (annotation.get('_accessLevel') >= AccessType.WRITE) {\n;pug_debug_line = 91;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-delete\\\" title=\\\"Delete\\\"\\u003E\";\n;pug_debug_line = 92;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-cancel\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var annotation = $$obj[pug_index1];\n;pug_debug_line = 40;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nvar name = annotation.get('annotation').name;\nvar creatorModel = users.get(annotation.get('creatorId'));\nvar creator = creatorModel ? creatorModel.get('login') : annotation.get('creatorId');\nvar updatedModel = users.get(annotation.get('updatedId'));\nvar updater = updatedModel ? updatedModel.get('login') : annotation.get('updatedId');\n;pug_debug_line = 46;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctr\" + (\" class=\\\"g-annotation-row\\\"\"+pug.attr(\"data-annotation-id\", annotation.id, true, true)) + \"\\u003E\";\n;pug_debug_line = 47;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003C!--\";\n;pug_debug_line = 48;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"td.g-annotation-select\";\n;pug_debug_line = 49;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 49;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" input(type='checkbox', title='Select annotation for bulk actions')--\\u003E\";\n;pug_debug_line = 50;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd class=\\\"g-annotation-toggle\\\"\\u003E\";\n;pug_debug_line = 51;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"class\", pug.classes([\"g-annotation-toggle-select\",canDraw ? 'disabled' : ''], [false,true]), false, true)+\" title=\\\"Show annotation\\\"\") + \"\\u003E\";\n;pug_debug_line = 52;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (drawn.has(annotation.id)) {\n;pug_debug_line = 53;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-eye\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n}\nelse {\n;pug_debug_line = 55;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-eye-off\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Ftd\\u003E\";\n;pug_debug_line = 56;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\n// iterate confList.columns || []\n;(function(){\n var $$obj = confList.columns || [];\n if ('number' == typeof $$obj.length) {\n for (var pug_index3 = 0, $$l = $$obj.length; pug_index3 < $$l; pug_index3++) {\n var column = $$obj[pug_index3];\n;pug_debug_line = 57;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.type !== 'record' || column.value !== 'controls') {\n;pug_debug_line = 58;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nvar value;\nif (column.type === 'record' && column.value === 'creator') {\n value = creator;\n} else if (column.type === 'record' && column.value === 'updatedId') {\n value = updater;\n} else if (column.type === 'metadata') {\n value = annotation.get('annotation').attributes || {};\n column.value.split('.').forEach((part) => {\n value = (value || {})[part];\n });\n} else {\n value = column.type === 'record' ? annotation.get(column.value) || annotation.get('annotation')[column.value] : '';\n}\n;pug_debug_line = 72;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd\" + (\" class=\\\"g-annotation-entry\\\"\"+pug.attr(\"title\", value, true, true)) + \"\\u003E\";\n;pug_debug_line = 73;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.format === 'user') {\n;pug_debug_line = 74;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", `#user/${annotation.get(column.value) || annotation.get(column.value + 'Id')}`, true, true)) + \"\\u003E\";\n;pug_debug_line = 75;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (column.format === 'date') {\n;pug_debug_line = 77;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = (new Date(value)).toLocaleString()) ? \"\" : pug_interp));\n}\nelse {\n;pug_debug_line = 79;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Ftd\\u003E\";\n}\n }\n } else {\n var $$l = 0;\n for (var pug_index3 in $$obj) {\n $$l++;\n var column = $$obj[pug_index3];\n;pug_debug_line = 57;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.type !== 'record' || column.value !== 'controls') {\n;pug_debug_line = 58;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nvar value;\nif (column.type === 'record' && column.value === 'creator') {\n value = creator;\n} else if (column.type === 'record' && column.value === 'updatedId') {\n value = updater;\n} else if (column.type === 'metadata') {\n value = annotation.get('annotation').attributes || {};\n column.value.split('.').forEach((part) => {\n value = (value || {})[part];\n });\n} else {\n value = column.type === 'record' ? annotation.get(column.value) || annotation.get('annotation')[column.value] : '';\n}\n;pug_debug_line = 72;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd\" + (\" class=\\\"g-annotation-entry\\\"\"+pug.attr(\"title\", value, true, true)) + \"\\u003E\";\n;pug_debug_line = 73;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (column.format === 'user') {\n;pug_debug_line = 74;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", `#user/${annotation.get(column.value) || annotation.get(column.value + 'Id')}`, true, true)) + \"\\u003E\";\n;pug_debug_line = 75;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse\nif (column.format === 'date') {\n;pug_debug_line = 77;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = (new Date(value)).toLocaleString()) ? \"\" : pug_interp));\n}\nelse {\n;pug_debug_line = 79;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = value) ? \"\" : pug_interp));\n}\npug_html = pug_html + \"\\u003C\\u002Ftd\\u003E\";\n}\n }\n }\n}).call(this);\n\n;pug_debug_line = 80;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ctd class=\\\"g-annotation-actions\\\"\\u003E\";\n;pug_debug_line = 81;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003C!--\";\n;pug_debug_line = 82;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"if annotation.get('_accessLevel') \\u003E= AccessType.WRITE\";\n;pug_debug_line = 83;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 83;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" a.g-annotation-edit(title='Edit annotation')\";\n;pug_debug_line = 84;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\n\";\n;pug_debug_line = 84;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \" i.icon-cog--\\u003E\";\n;pug_debug_line = 85;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"g-annotation-download\\\"\"+pug.attr(\"href\", `${apiRoot}/annotation/${annotation.id}`, true, true)+\" title=\\\"Download\\\"\"+pug.attr(\"download\", `${name}.json`, true, true)) + \"\\u003E\";\n;pug_debug_line = 86;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-download\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n;pug_debug_line = 87;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (annotation.get('_accessLevel') >= AccessType.ADMIN) {\n;pug_debug_line = 88;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-permissions\\\" title=\\\"Adjust permissions\\\"\\u003E\";\n;pug_debug_line = 89;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-lock\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\n;pug_debug_line = 90;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\nif (annotation.get('_accessLevel') >= AccessType.WRITE) {\n;pug_debug_line = 91;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-annotation-delete\\\" title=\\\"Delete\\\"\\u003E\";\n;pug_debug_line = 92;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Flarge_image_annotation\\u002Ftemplates\\u002FannotationListWidget.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-cancel\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\";\n}}.call(this,\"AccessType\" in locals_for_with?locals_for_with.AccessType:typeof AccessType!==\"undefined\"?AccessType:undefined,\"Date\" in locals_for_with?locals_for_with.Date:typeof Date!==\"undefined\"?Date:undefined,\"accessLevel\" in locals_for_with?locals_for_with.accessLevel:typeof accessLevel!==\"undefined\"?accessLevel:undefined,\"annotations\" in locals_for_with?locals_for_with.annotations:typeof annotations!==\"undefined\"?annotations:undefined,\"apiRoot\" in locals_for_with?locals_for_with.apiRoot:typeof apiRoot!==\"undefined\"?apiRoot:undefined,\"canDraw\" in locals_for_with?locals_for_with.canDraw:typeof canDraw!==\"undefined\"?canDraw:undefined,\"confList\" in locals_for_with?locals_for_with.confList:typeof confList!==\"undefined\"?confList:undefined,\"creationAccess\" in locals_for_with?locals_for_with.creationAccess:typeof creationAccess!==\"undefined\"?creationAccess:undefined,\"drawn\" in locals_for_with?locals_for_with.drawn:typeof drawn!==\"undefined\"?drawn:undefined,\"item\" in locals_for_with?locals_for_with.item:typeof item!==\"undefined\"?item:undefined,\"users\" in locals_for_with?locals_for_with.users:typeof users!==\"undefined\"?users:undefined));} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;};\nmodule.exports = template;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/templates/annotationListWidget.pug","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@girder/large_image_annotation/stylesheets/annotationListWidget.styl\n// module id = 62\n// module chunks = 0","import * as annotations from './annotations';\nimport * as collections from './collections';\nimport * as models from './models';\nimport * as views from './views';\n\nexport {\n annotations,\n collections,\n models,\n views\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/index.js","import convert from './convert';\nimport * as convertFeatures from './convertFeatures';\nimport rotate from './rotate';\nimport style from './style';\nimport * as geometry from './geometry';\nimport * as defaults from './defaults';\nimport * as geojs from './geojs';\n\nexport {\n convert,\n convertFeatures,\n rotate,\n style,\n geometry,\n defaults,\n geojs\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/index.js","import * as types from './types';\nimport * as coordinates from './coordinates';\nimport common from './common';\nimport convert from './convert';\n\nexport {\n types,\n coordinates,\n common,\n convert\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/index.js","import _ from 'underscore';\n\nimport common from '../common';\nimport pointCoordinate from '../coordinates/point';\n\n/**\n * Convert a geojs point annotation to the large_image\n * annotation schema.\n */\nfunction point(annotation) {\n const element = common(annotation);\n\n return _.extend(element, {\n type: 'point',\n center: pointCoordinate(annotation.coordinates()[0])\n });\n}\n\nexport default point;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/point.js","import rectangle from './rectangle';\n\n/**\n * Convert a geojs ellipse annotation to the large_image\n * annotation schema.\n */\nfunction ellipse(annotation) {\n const element = rectangle(annotation);\n element.type = 'ellipse';\n return element;\n}\n\nexport default ellipse;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/ellipse.js","import rectangle from './rectangle';\n\n/**\n * Convert a geojs circle annotation to the large_image\n * annotation schema.\n */\nfunction circle(annotation) {\n const element = rectangle(annotation);\n element.type = 'circle';\n element.radius = Math.max(element.width, element.height) / 2;\n delete element.width;\n delete element.height;\n delete element.rotation;\n delete element.normal;\n return element;\n}\n\nexport default circle;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/circle.js","import _ from 'underscore';\n\nimport common from '../common';\nimport array from '../coordinates/array';\n\n/**\n * Convert a geojs polygon annotation to the large_image\n * annotation schema.\n */\nfunction polygon(annotation) {\n const element = common(annotation, 'polyline');\n let coordinates = annotation.coordinates();\n const holes = coordinates.inner ? coordinates.inner.map((h) => array(h)) : undefined;\n coordinates = array(coordinates.outer || coordinates);\n\n return _.extend(element, {\n type: 'polyline',\n closed: true,\n points: coordinates,\n holes\n });\n}\n\nexport default polygon;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/polygon.js","import _ from 'underscore';\n\nimport common from '../common';\nimport array from '../coordinates/array';\n\n/**\n * Convert a geojs line annotation to the large_image\n * annotation schema.\n */\nfunction line(annotation) {\n const element = common(annotation, 'polyline');\n const coordinates = array(annotation.coordinates());\n\n return _.extend(element, {\n type: 'polyline',\n closed: !!annotation.style('closed'),\n points: coordinates\n });\n}\n\nexport default line;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/types/line.js","import point from './point';\nimport array from './array';\n\nexport {\n point,\n array\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/annotations/geojs/coordinates/index.js","import AnnotationCollection from './AnnotationCollection';\n\nexport {\n AnnotationCollection\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/collections/index.js","import AnnotationModel from './AnnotationModel';\n\nexport {\n AnnotationModel\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/models/index.js","import * as viewers from '@girder/large_image/views/imageViewerWidget';\n\nimport ConfigView from './configView';\nimport HierarchyWidget from './hierarchyWidget';\nimport ImageViewerSelectWidget from './imageViewerSelectWidget';\nimport ItemListWidget from './itemList';\nimport ImageViewerWidgetAnnotationExtension from './imageViewerWidget/base';\nimport * as extensions from './imageViewerWidget';\n\nfor (var key in viewers) {\n viewers[key] = viewers[key].extend(ImageViewerWidgetAnnotationExtension);\n if (extensions[key]) {\n viewers[key] = extensions[key](viewers[key]);\n }\n}\n\nexport {\n ConfigView,\n HierarchyWidget,\n ImageViewerSelectWidget,\n ItemListWidget,\n viewers as ViewerWidget\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/index.js","module.exports = (__webpack_require__(0))(115);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/@girder/large_image/views/imageViewerWidget/index.js from dll-reference girder_plugin_large_image\n// module id = 75\n// module chunks = 0","import $ from 'jquery';\n\nimport {wrap} from '@girder/core/utilities/PluginUtils';\nimport {restRequest} from '@girder/core/rest';\nimport AccessWidget from '@girder/core/views/widgets/AccessWidget';\nimport HierarchyWidget from '@girder/core/views/widgets/HierarchyWidget';\n\nimport AnnotationModel from '../models/AnnotationModel';\n\nwrap(HierarchyWidget, 'render', function (render) {\n render.call(this);\n\n if (this.parentModel.get('_modelType') === 'folder') {\n ownAnnotation(this, this.parentModel.id);\n }\n});\n\nfunction ownAnnotation(root, folderId) {\n restRequest({\n type: 'GET',\n url: 'annotation/folder/' + folderId + '/present',\n data: {\n recurse: true\n }\n }).done((ownsAnnot) => {\n if (ownsAnnot) {\n addAccessControl(root);\n }\n });\n}\n\nfunction addAccessControl(root) {\n if (root.$('.g-edit-annotation-access').length === 0) {\n if (root.$('.g-folder-actions-menu > .divider').length > 0) {\n root.$('.g-folder-actions-menu > .divider').before(\n '
  • ' +\n '' +\n '' +\n 'Annotation access control' +\n '' +\n '
  • '\n );\n } else {\n root.$('ul.g-folder-actions-menu').append(\n '
  • ' +\n '' +\n '' +\n 'Annotation access control' +\n '' +\n '
  • '\n );\n }\n root.events['click .g-edit-annotation-access'] = editAnnotAccess;\n root.delegateEvents();\n }\n}\n\nfunction editAnnotAccess() {\n restRequest({\n type: 'GET',\n url: 'annotation/folder/' + this.parentModel.get('_id'),\n data: {\n recurse: true,\n limit: 1\n }\n }).done((resp) => {\n const model = new AnnotationModel(resp[0]);\n model.get('annotation').name = 'Your Annotations';\n model.save = () => {};\n model.updateAccess = (settings) => {\n const access = {\n access: model.get('access'),\n public: model.get('public'),\n publicFlags: model.get('publicFlags')\n };\n const defaultUpdateModel = new AnnotationModel();\n defaultUpdateModel.id = this.parentModel.get('_id');\n defaultUpdateModel.altUrl = 'annotation/folder';\n defaultUpdateModel.set(access);\n defaultUpdateModel.updateAccess(settings);\n model.trigger('g:accessListSaved');\n };\n model.fetchAccess(true)\n .done(() => {\n new AccessWidget({// eslint-disable-line no-new\n el: $('#g-dialog-container'),\n modelType: 'annotation',\n model,\n hideRecurseOption: false,\n parentView: this,\n noAccessFlag: true\n });\n });\n });\n}\n\nexport default HierarchyWidget;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/hierarchyWidget.js","module.exports = (__webpack_require__(0))(215);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/HierarchyWidget.js from dll-reference girder_plugin_large_image\n// module id = 77\n// module chunks = 0","import $ from 'jquery';\nimport _ from 'underscore';\n\nimport {restRequest} from '@girder/core/rest';\nimport {wrap} from '@girder/core/utilities/PluginUtils';\nimport ItemListWidget from '@girder/core/views/widgets/ItemListWidget';\n\nimport largeImageAnnotationConfig from './configView';\n\nimport '../stylesheets/itemList.styl';\n\nwrap(ItemListWidget, 'render', function (render) {\n render.apply(this, _.rest(arguments));\n\n function addLargeImageAnnotationBadge(item, parent, numAnnotations, flag) {\n const thumbnail = $('.large_image_thumbnail[g-item-cid=\"' + item.cid + '\"]', parent).first();\n if (!thumbnail.length) {\n return;\n }\n\n let badge = thumbnail.find('.large_image_annotation_badge');\n if (badge.length === 0) {\n badge = $(`
    `).appendTo(thumbnail);\n }\n // update badge\n badge\n .attr('title', !flag ? `${numAnnotations} annotation${numAnnotations === 1 ? '' : 's'}` : 'Referenced by an annotation')\n .text(numAnnotations)\n .toggleClass('hidden', !numAnnotations);\n }\n\n largeImageAnnotationConfig.getSettings((settings) => {\n // don't render or already rendered\n if (settings['large_image.show_thumbnails'] === false || this.$('.large_image_annotation_badge').length > 0) {\n return;\n }\n const items = this.collection.toArray();\n const hasAnyLargeImage = _.some(items, (item) => item.has('largeImage'));\n\n if (!hasAnyLargeImage || this._inFetch || this._needsFetch) {\n return;\n }\n\n const needCounts = items.filter((item) => item._annotationCount === undefined && item.has('largeImage')).map((item) => {\n item._annotationCount = null; // pending\n delete item._annotationReferenced;\n return item.id;\n });\n let promise;\n if (!needCounts.length) {\n promise = $.Deferred().resolve({});\n } else {\n promise = restRequest({\n type: 'POST',\n url: 'annotation/counts',\n data: {\n items: needCounts.join(',')\n },\n headers: {'X-HTTP-Method-Override': 'GET'},\n error: null\n }).done((resp) => {\n Object.entries(resp).forEach(([id, count]) => {\n if (id === 'referenced') {\n Object.keys(count).forEach((rid) => {\n if (this.collection.get(rid)) {\n this.collection.get(rid)._annotationReferenced = true;\n }\n });\n } else if (this.collection.get(id)) {\n this.collection.get(id)._annotationCount = count;\n }\n });\n });\n }\n promise.then(() => {\n this.collection.forEach((item) => {\n if (item._annotationCount !== undefined) {\n if (!item._annotationReferenced) {\n addLargeImageAnnotationBadge(item, this.$el, item._annotationCount);\n } else {\n addLargeImageAnnotationBadge(item, this.$el, '*', true);\n }\n }\n });\n return null;\n });\n });\n});\n\nexport default ItemListWidget;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/itemList.js","module.exports = (__webpack_require__(0))(217);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/ItemListWidget.js from dll-reference girder_plugin_large_image\n// module id = 79\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@girder/large_image_annotation/stylesheets/itemList.styl\n// module id = 80\n// module chunks = 0","import _ from 'underscore';\n\nvar ImageViewerWidgetAnnotationExtension = {\n /**\n * Returns whether or not the view supports drawing and rendering\n * annotations.\n */\n annotationAPI: _.constant(false),\n\n /**\n * Render an annotation model on the image.\n *\n * @param {AnnotationModel} annotation\n */\n drawAnnotation: function (/* annotation */) {\n throw new Error('Viewer does not support drawing annotations');\n },\n\n /**\n * Remove an annotation from the image. This simply\n * finds a layer with the given id and removes it because\n * each annotation is contained in its own layer. If\n * the annotation is not drawn, this is a noop.\n *\n * @param {AnnotationModel} annotation\n */\n removeAnnotation: function (/* annotation */) {\n throw new Error('Viewer does not support drawing annotations');\n },\n\n /**\n * Set the image interaction mode to region drawing mode. This\n * method takes an optional `model` argument where the region will\n * be stored when created by the user. In any case, this method\n * returns a promise that resolves to an array defining the region:\n * [ left, top, width, height ]\n *\n * @param {Backbone.Model} [model] A model to set the region to\n * @returns {Promise}\n */\n drawRegion: function (/* model */) {\n throw new Error('Viewer does not support drawing annotations');\n },\n\n /**\n * Set the image interaction mode to draw the given type of annotation.\n *\n * @param {string} type An annotation type\n * @param {object} [options]\n * @param {boolean} [options.trigger=true]\n * Trigger a global event after creating each annotation element.\n * @returns {Promise}\n * Resolves to an array of generated annotation elements.\n */\n startDrawMode: function (/* type, options */) {\n throw new Error('Viewer does not support drawing annotations');\n }\n};\n\nexport default ImageViewerWidgetAnnotationExtension;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/imageViewerWidget/base.js","import geojs from './geojs';\n\nexport {\n geojs\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/imageViewerWidget/index.js","import $ from 'jquery';\nimport _ from 'underscore';\nimport Backbone from 'backbone';\n\nimport events from '@girder/core/events';\nimport {wrap} from '@girder/core/utilities/PluginUtils';\nimport {restRequest} from '@girder/core/rest';\n\nimport convertAnnotation from '../../annotations/geojs/convert';\n\n/**\n * Generate a new \"random\" element id (24 random 16 digits).\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return s4() + s4() + s4() + s4() + s4() + s4();\n}\n\nvar GeojsImageViewerWidgetExtension = function (viewer) {\n wrap(viewer, 'initialize', function (initialize) {\n var settings = arguments[1];\n\n this._annotations = {};\n this._featureOpacity = {};\n this._unclampBoundsForOverlay = true;\n this._globalAnnotationOpacity = settings.globalAnnotationOpacity || 1.0;\n this._globalAnnotationFillOpacity = settings.globalAnnotationFillOpacity || 1.0;\n this._highlightFeatureSizeLimit = settings.highlightFeatureSizeLimit || 10000;\n this.listenTo(events, 's:widgetDrawRegionEvent', this.drawRegion);\n this.listenTo(events, 's:widgetClearRegion', this.clearRegion);\n this.listenTo(events, 'g:startDrawMode', this.startDrawMode);\n this._hoverEvents = settings.hoverEvents;\n return initialize.apply(this, _.rest(arguments));\n });\n\n return viewer.extend({\n _postRender: function () {\n // the feature layer is for annotations that are loaded\n this.featureLayer = this.viewer.createLayer('feature', {\n features: ['point', 'line', 'polygon', 'marker']\n });\n this.setGlobalAnnotationOpacity(this._globalAnnotationOpacity);\n this.setGlobalAnnotationFillOpacity(this._globalAnnotationFillOpacity);\n // the annotation layer is for annotations that are actively drawn\n this.annotationLayer = this.viewer.createLayer('annotation', {\n annotations: ['point', 'line', 'rectangle', 'ellipse', 'circle', 'polygon'],\n showLabels: false\n });\n var geo = window.geo; // this makes the style checker happy\n this.viewer.geoOn(geo.event.pan, () => {\n this.setBounds();\n });\n },\n\n annotationAPI: _.constant(true),\n\n /**\n * @returns whether to clamp viewer bounds when image overlays are\n * rendered\n */\n getUnclampBoundsForOverlay: function () {\n return this._unclampBoundsForOverlay;\n },\n\n /**\n *\n * @param {bool} newValue Set whether to clamp viewer bounds when image\n * overlays are rendered.\n */\n setUnclampBoundsForOverlay: function (newValue) {\n this._unclampBoundsForOverlay = newValue;\n },\n\n /**\n * Given an image overlay annotation element, compute and return\n * a proj-string representation of its transform specification.\n * @param {object} overlay A image annotation element.\n * @returns a proj-string representing how to overlay should be\n * transformed.\n */\n _getOverlayTransformProjString: function (overlay) {\n const transformInfo = overlay.transform || {};\n let xOffset = transformInfo.xoffset || 0;\n let yOffset = transformInfo.yoffset || 0;\n const matrix = transformInfo.matrix || [[1, 0], [0, 1]];\n let s11 = matrix[0][0];\n let s12 = matrix[0][1];\n let s21 = matrix[1][0];\n let s22 = matrix[1][1];\n\n const scale = 2 ** this._getOverlayRelativeScale(overlay);\n if (scale && scale !== 1) {\n s11 /= scale;\n s12 /= scale;\n s21 /= scale;\n s22 /= scale;\n xOffset *= scale;\n yOffset *= scale;\n }\n\n let projString = '+proj=longlat +axis=enu';\n if (xOffset !== 0) {\n // negate x offset so positive values specified in the annotation\n // move overlays to the right\n xOffset = -1 * xOffset;\n projString = projString + ` +xoff=${xOffset}`;\n }\n if (yOffset !== 0) {\n projString = projString + ` +yoff=${yOffset}`;\n }\n if (s11 !== 1 || s12 !== 0 || s21 !== 0 || s22 !== 1) {\n // add affine matrix vals to projection string if not identity matrix\n projString = projString + ` +s11=${1 / s11} +s12=${s12} +s21=${s21} +s22=${1 / s22}`;\n }\n return projString;\n },\n\n /**\n * Given an overlay with a transform matrix, compute an approximate\n * scale compaared to the base.\n *\n * @param {object} overlay The overlay annotation record.\n * @returns {number} The approximate scale as an integer power of two.\n */\n _getOverlayRelativeScale: function (overlay) {\n const transformInfo = overlay.transform || {};\n const matrix = transformInfo.matrix || [[1, 0], [0, 1]];\n const s11 = matrix[0][0];\n const s12 = matrix[0][1];\n const s21 = matrix[1][0];\n const s22 = matrix[1][1];\n\n const scale = Math.sqrt(Math.abs(s11 * s22 - s12 * s21)) || 1;\n return Math.floor(Math.log2(scale));\n },\n\n /**\n * @returns The number of currently drawn overlay elements across\n * all annotations.\n */\n _countDrawnImageOverlays: function () {\n let numOverlays = 0;\n _.each(this._annotations, (value, key, obj) => {\n const annotationOverlays = value.overlays || [];\n numOverlays += annotationOverlays.length;\n });\n return numOverlays;\n },\n\n /**\n * Set additional parameters for pixelmap overlays.\n * @param {object} layerParams An object containing layer parameters. This should already have\n * generic properties for overlay annotations set, such as the URL, opacity, etc.\n * @param {object} pixelmapElement A pixelmap annotation element\n * @param {number} levelDifference The difference in zoom level between the base image and the overlay\n * @returns An object containing parameters needed to create a pixelmap layer.\n */\n _addPixelmapLayerParams(layerParams, pixelmapElement, levelDifference) {\n // For pixelmap overlays, there are additional parameters to set\n layerParams.keepLower = false;\n if (_.isFunction(layerParams.url) || levelDifference) {\n layerParams.url = (x, y, z) => 'api/v1/item/' + pixelmapElement.girderId + `/tiles/zxy/${z - levelDifference}/${x}/${y}?encoding=PNG`;\n } else {\n layerParams.url = layerParams.url + '?encoding=PNG';\n }\n let pixelmapData = pixelmapElement.values;\n if (pixelmapElement.boundaries) {\n const valuesWithBoundaries = new Array(pixelmapData.length * 2);\n for (let i = 0; i < pixelmapData.length; i++) {\n valuesWithBoundaries[i * 2] = valuesWithBoundaries[i * 2 + 1] = pixelmapData[i];\n }\n pixelmapData = valuesWithBoundaries;\n }\n layerParams.data = pixelmapData;\n const categoryMap = pixelmapElement.categories;\n const boundaries = pixelmapElement.boundaries;\n layerParams.style = {\n color: (d, i) => {\n if (d < 0 || d >= categoryMap.length) {\n console.warn(`No category found at index ${d} in the category map.`);\n return 'rgba(0, 0, 0, 0)';\n }\n let color;\n const category = categoryMap[d];\n if (boundaries) {\n color = (i % 2 === 0) ? category.fillColor : category.strokeColor;\n } else {\n color = category.fillColor;\n }\n return color;\n }\n };\n return layerParams;\n },\n\n /**\n * Generate layer parameters for an image overlay layer\n * @param {object} overlayImageMetadata metadata such as size, tile size, and levels for the overlay image\n * @param {string} overlayImageId ID of a girder image item\n * @param {object} overlay information about the overlay such as opacity\n * @returns layer params for the image overlay layer\n */\n _generateOverlayLayerParams(overlayImageMetadata, overlayImageId, overlay) {\n const geo = window.geo;\n const params = geo.util.pixelCoordinateParams(\n this.viewer.node(), overlayImageMetadata.sizeX, overlayImageMetadata.sizeY, overlayImageMetadata.tileWidth, overlayImageMetadata.tileHeight\n );\n params.layer.useCredentials = true;\n params.layer.url = `api/v1/item/${overlayImageId}/tiles/zxy/{z}/{x}/{y}`;\n if (this._countDrawnImageOverlays() <= 6) {\n params.layer.autoshareRenderer = false;\n } else {\n params.layer.renderer = 'canvas';\n }\n params.layer.opacity = overlay.opacity || 1;\n params.layer.opacity *= this._globalAnnotationOpacity;\n\n let levelDifference = this.levels - overlayImageMetadata.levels;\n\n levelDifference -= this._getOverlayRelativeScale(overlay);\n\n if (this.levels !== overlayImageMetadata.levels) {\n params.layer.url = (x, y, z) => 'api/v1/item/' + overlayImageId + `/tiles/zxy/${z - levelDifference}/${x}/${y}`;\n params.layer.minLevel = levelDifference;\n params.layer.maxLevel += levelDifference;\n\n params.layer.tilesMaxBounds = (level) => {\n var scale = Math.pow(2, params.layer.maxLevel - level);\n return {\n x: Math.floor(overlayImageMetadata.sizeX / scale),\n y: Math.floor(overlayImageMetadata.sizeY / scale)\n };\n };\n params.layer.tilesAtZoom = (level) => {\n var scale = Math.pow(2, params.layer.maxLevel - level);\n return {\n x: Math.ceil(overlayImageMetadata.sizeX / overlayImageMetadata.tileWidth / scale),\n y: Math.ceil(overlayImageMetadata.sizeY / overlayImageMetadata.tileHeight / scale)\n };\n };\n }\n if (overlay.type === 'pixelmap') {\n params.layer = this._addPixelmapLayerParams(params.layer, overlay, levelDifference);\n } else if (overlay.hasAlpha) {\n params.layer.keepLower = false;\n params.layer.url = (x, y, z) => 'api/v1/item/' + overlayImageId + `/tiles/zxy/${z - levelDifference}/${x}/${y}?encoding=PNG`;\n }\n return params.layer;\n },\n\n /**\n * Render an annotation model on the image. Currently, this is limited\n * to annotation types that can be (1) directly converted into geojson\n * primitives, (2) be represented as heatmaps, or (3) shown as image\n * overlays.\n *\n * Internally, this generates a new feature layer for the annotation\n * that is referenced by the annotation id. All \"elements\" contained\n * inside this annotation are drawn in the referenced layer.\n *\n * @param {AnnotationModel} annotation\n * @param {object} [options]\n * @param {boolean} [options.fetch=true] Enable fetching the annotation\n * from the server, including paging the results. If false, it is\n * assumed the elements already exist on the annotation object. This\n * is useful for temporarily showing annotations that are not\n * propagated to the server.\n */\n drawAnnotation: function (annotation, options) {\n if (!this.viewer) {\n return;\n }\n var geo = window.geo;\n options = _.defaults(options || {}, {fetch: true});\n var geojson = annotation.geojson();\n const overlays = annotation.overlays() || [];\n var present = _.has(this._annotations, annotation.id);\n var centroidFeature;\n let immediateUpdate = false;\n if (present) {\n _.each(this._annotations[annotation.id].features, (feature, idx) => {\n if (idx || !annotation._centroids || feature.data().length !== annotation._centroids.data.length) {\n if (feature._ownLayer) {\n feature.layer().map().deleteLayer(feature.layer());\n } else {\n this.featureLayer.deleteFeature(feature);\n immediateUpdate = true;\n }\n } else {\n centroidFeature = feature;\n }\n });\n if (this._annotations[annotation.id].overlays) {\n // Ensure that overlay elements that have been deleted are not rendered on a re-draw\n _.each(this._annotations[annotation.id].overlays, (overlay) => {\n const oldOverlayIds = this._annotations[annotation.id].overlays.map((overlay) => overlay.id);\n const updatedOverlayIds = overlays.map((overlay) => overlay.id);\n _.each(oldOverlayIds, (id) => {\n if (!updatedOverlayIds.includes(id)) {\n const overlayLayer = this.viewer.layers().find((layer) => layer.id() === id);\n this.viewer.deleteLayer(overlayLayer);\n }\n });\n });\n }\n }\n this._annotations[annotation.id] = {\n features: centroidFeature ? [centroidFeature] : [],\n options: options,\n annotation: annotation,\n overlays: overlays\n };\n if (options.fetch && (!present || annotation.refresh() || annotation._inFetch === 'centroids')) {\n annotation.off('g:fetched', null, this).on('g:fetched', () => {\n // Trigger an event indicating to the listener that\n // mouseover states should reset.\n this.trigger(\n 'g:mouseResetAnnotation',\n annotation\n );\n this.drawAnnotation(annotation);\n }, this);\n this.setBounds({[annotation.id]: this._annotations[annotation.id]});\n if (annotation._inFetch === 'centroids') {\n return;\n }\n }\n annotation.refresh(false);\n var featureList = this._annotations[annotation.id].features;\n // draw centroids except for otherwise shown values\n if (annotation._centroids && !centroidFeature) {\n const feature = this.featureLayer.createFeature('point');\n featureList.push(feature);\n feature.data(annotation._centroids.data).position((d, i) => ({\n x: annotation._centroids.centroids.x[i],\n y: annotation._centroids.centroids.y[i]\n })).style({\n radius: (d, i) => {\n let r = annotation._centroids.centroids.r[i];\n if (!r) {\n return 8;\n }\n // the given value is the diagonal of the bounding box, so\n // to convert it to a circle radius means it must be\n // divided by 2 or by 2 * 4/pi.\n r /= 2.5 * this.viewer.unitsPerPixel(this.viewer.zoom());\n return r;\n },\n stroke: (d, i) => {\n return !annotation._shownIds || !annotation._shownIds.has(annotation._centroids.centroids.id[i]);\n },\n strokeColor: (d, i) => {\n const s = annotation._centroids.centroids.s[i];\n return annotation._centroids.props[s].strokeColor;\n },\n strokeOpacity: (d, i) => {\n const s = annotation._centroids.centroids.s[i];\n return annotation._centroids.props[s].strokeOpacity;\n },\n strokeWidth: (d, i) => {\n const s = annotation._centroids.centroids.s[i];\n return annotation._centroids.props[s].strokeWidth;\n },\n fill: (d, i) => {\n return !annotation._shownIds || !annotation._shownIds.has(annotation._centroids.centroids.id[i]);\n },\n fillColor: (d, i) => {\n const s = annotation._centroids.centroids.s[i];\n return annotation._centroids.props[s].fillColor;\n },\n fillOpacity: (d, i) => {\n const s = annotation._centroids.centroids.s[i];\n return annotation._centroids.props[s].fillOpacity;\n }\n });\n // bind an event so zoom updates radius\n annotation._centroidLastZoom = undefined;\n feature.geoOn(geo.event.pan, () => {\n if (this.viewer.zoom() !== annotation._centroidLastZoom) {\n annotation._centroidLastZoom = this.viewer.zoom();\n if (feature.verticesPerFeature) {\n const scale = 2.5 * this.viewer.unitsPerPixel(this.viewer.zoom());\n const vpf = feature.verticesPerFeature(),\n count = feature.data().length,\n radius = new Float32Array(vpf * count);\n for (var i = 0, j = 0; i < count; i += 1) {\n let r = annotation._centroids.centroids.r[i];\n if (r) {\n r /= scale;\n } else {\n r = 8;\n }\n for (var k = 0; k < vpf; k += 1, j += 1) {\n radius[j] = r;\n }\n }\n feature.updateStyleFromArray('radius', radius, true);\n } else {\n feature.modified().draw();\n }\n }\n });\n }\n // draw overlays\n if (this.getUnclampBoundsForOverlay() && this._annotations[annotation.id].overlays.length > 0) {\n this.viewer.clampBoundsY(false);\n this.viewer.clampBoundsX(false);\n }\n _.each(this._annotations[annotation.id].overlays, (overlay) => {\n const overlayItemId = overlay.girderId;\n restRequest({\n url: `item/${overlayItemId}/tiles`\n }).done((response) => {\n // Since overlay layers are created asynchronously, we need to ensure that an attempt\n // to draw the same overlays happening at roughly the same time does not create\n // extra layers\n const conflictingLayers = this.viewer.layers().filter(\n (layer) => layer.id() === overlay.id);\n if (conflictingLayers.length > 0) {\n _.each(conflictingLayers, (layer) => {\n this.viewer.deleteLayer(layer);\n });\n }\n const params = this._generateOverlayLayerParams(response, overlayItemId, overlay);\n const layerType = (overlay.type === 'pixelmap') ? 'pixelmap' : 'osm';\n const proj = this._getOverlayTransformProjString(overlay);\n const overlayLayer = this.viewer.createLayer(layerType, Object.assign({}, params, {id: overlay.id, gcs: proj}));\n this.annotationLayer.moveToTop();\n this.trigger('g:drawOverlayAnnotation', overlay, overlayLayer);\n const featureEvents = geo.event.feature;\n overlayLayer.geoOn(\n [\n featureEvents.mousedown,\n featureEvents.mouseup,\n featureEvents.mouseclick,\n featureEvents.mouseoff,\n featureEvents.mouseon,\n featureEvents.mouseover,\n featureEvents.mouseout\n ],\n (evt) => this._onMouseFeature(evt, annotation.elements().get(overlay.id), overlayLayer)\n );\n this.viewer.scheduleAnimationFrame(this.viewer.draw, true);\n }).fail((response) => {\n console.error(`There was an error overlaying image with ID ${overlayItemId}`);\n });\n });\n this._featureOpacity[annotation.id] = {};\n geo.createFileReader('geojsonReader', {layer: this.featureLayer})\n .read(geojson, (features) => {\n if (features.length === 0) {\n features = annotation.non_geojson(this.featureLayer);\n if (features.length) {\n this.featureLayer.map().draw();\n }\n }\n _.each(features || [], (feature) => {\n var events = geo.event.feature;\n featureList.push(feature);\n\n feature.selectionAPI(this._hoverEvents);\n\n feature.geoOn(\n [\n events.mousedown,\n events.mouseup,\n events.mouseclick,\n events.mouseoff,\n events.mouseon,\n events.mouseover,\n events.mouseout\n ],\n (evt) => this._onMouseFeature(evt)\n );\n\n // store the original opacities for the elements in each feature\n const data = feature.data();\n if (annotation._centroids) {\n annotation._shownIds = new Set(feature.data().map((d) => d.id));\n }\n if (data.length <= this._highlightFeatureSizeLimit && !annotation._centroids) {\n this._featureOpacity[annotation.id][feature.featureType] = feature.data()\n .map(({id, properties}) => {\n return {\n id,\n fillOpacity: properties.fillOpacity,\n strokeOpacity: properties.strokeOpacity\n };\n });\n }\n });\n this._mutateFeaturePropertiesForHighlight(annotation.id, features);\n if (annotation._centroids && featureList[0]) {\n if (featureList[0].verticesPerFeature) {\n this.viewer.scheduleAnimationFrame(() => {\n const vpf = featureList[0].verticesPerFeature(),\n count = featureList[0].data().length,\n shown = new Float32Array(vpf * count);\n for (let i = 0, j = 0; i < count; i += 1) {\n const val = annotation._shownIds.has(annotation._centroids.centroids.id[i]) ? 0 : 1;\n for (let k = 0; k < vpf; k += 1, j += 1) {\n shown[j] = val;\n }\n }\n featureList[0].updateStyleFromArray({\n stroke: shown,\n fill: shown\n }, undefined, true);\n });\n } else {\n featureList[0].modified();\n }\n }\n this.viewer.scheduleAnimationFrame(this.viewer.draw, true);\n });\n if (immediateUpdate) {\n this.featureLayer._update();\n }\n },\n\n /**\n * Highlight the given annotation/element by reducing the opacity of all\n * other elements by 75%. For performance reasons, features with a large\n * number of elements are not modified. The limit for this behavior is\n * configurable via the constructor option `highlightFeatureSizeLimit`.\n *\n * Both arguments are optional. If no element is provided, then all\n * elements in the given annotation are highlighted. If no annotation\n * is provided, then highlighting state is reset and the original\n * opacities are used for all elements.\n *\n * @param {string?} annotation The id of the annotation to highlight\n * @param {string?} element The id of the element to highlight\n */\n highlightAnnotation: function (annotation, element) {\n if (annotation !== this._highlightAnnotation || element !== this._highlightElement) {\n this._highlightAnnotation = annotation;\n this._highlightElement = element;\n _.each(this._annotations, (layer, annotationId) => {\n const features = layer.features;\n this._mutateFeaturePropertiesForHighlight(annotationId, features);\n });\n this.viewer.scheduleAnimationFrame(this.viewer.draw);\n }\n return this;\n },\n\n /**\n * Hide the given annotation/element by settings its opacity to 0. See\n * highlightAnnotation for caveats.\n *\n * If either argument is not provided, hiding is turned off.\n *\n * @param {string?} annotation The id of the annotation to hide\n * @param {string?} element The id of the element to hide\n */\n hideAnnotation: function (annotation, element) {\n this._hideAnnotation = annotation;\n this._hideElement = element;\n _.each(this._annotations, (layer, annotationId) => {\n const features = layer.features;\n this._mutateFeaturePropertiesForHighlight(annotationId, features);\n });\n this.viewer.scheduleAnimationFrame(this.viewer.draw);\n return this;\n },\n\n /**\n * Use geojs's `updateStyleFromArray` to modify the opacities of alli\n * elements in a feature. This method uses the private attributes\n * `_highlightAnntotation` and `_highlightElement` to determine which\n * element to modify.\n */\n _mutateFeaturePropertiesForHighlight: function (annotationId, features) {\n _.each(features, (feature) => {\n const data = this._featureOpacity[annotationId][feature.featureType];\n if (!data) {\n // skip highlighting code on features with a lot of entities because\n // this slows down interactivity considerably.\n return;\n }\n var prop = {\n datalen: data.length,\n annotationId: annotationId,\n fillOpacity: this._globalAnnotationFillOpacity,\n highlightannot: this._highlightAnnotation,\n highlightelem: this._highlightElement,\n hideannot: this._hideAnnotation,\n hideelem: this._hideElement\n };\n\n if (_.isMatch(feature._lastFeatureProp, prop)) {\n return;\n }\n\n // pre-allocate arrays for performance\n const fillOpacityArray = new Array(data.length);\n const strokeOpacityArray = new Array(data.length);\n\n for (let i = 0; i < data.length; i += 1) {\n const id = data[i].id;\n const fillOpacity = data[i].fillOpacity * this._globalAnnotationFillOpacity;\n const strokeOpacity = data[i].strokeOpacity;\n if (this._hideAnnotation && annotationId === this._hideAnnotation && id === this._hideElement) {\n fillOpacityArray[i] = 0;\n strokeOpacityArray[i] = 0;\n } else if (!this._highlightAnnotation ||\n (!this._highlightElement && annotationId === this._highlightAnnotation) ||\n this._highlightElement === id) {\n fillOpacityArray[i] = fillOpacity;\n strokeOpacityArray[i] = strokeOpacity;\n } else {\n fillOpacityArray[i] = fillOpacity * 0.25;\n strokeOpacityArray[i] = strokeOpacity * 0.25;\n }\n }\n\n feature.updateStyleFromArray('fillOpacity', fillOpacityArray);\n feature.updateStyleFromArray('strokeOpacity', strokeOpacityArray);\n feature._lastFeatureProp = prop;\n });\n // Also modify opacity of image overlay layers\n const overlays = this._annotations[annotationId].overlays || null;\n if (overlays) {\n _.each(overlays, (overlay) => {\n const overlayLayer = this.viewer.layers().find((layer) => layer.id() === overlay.id);\n if (overlayLayer) {\n let newOpacity = (overlay.opacity || 1) * this._globalAnnotationOpacity;\n if (this._highlightAnnotation && annotationId !== this._highlightAnnotation) {\n newOpacity = newOpacity * 0.25;\n }\n overlayLayer.opacity(newOpacity);\n }\n });\n }\n },\n\n /**\n * When the image visible bounds change, or an annotation is first created,\n * set the view information for any annotation which requires it.\n *\n * @param {object} [annotations] If set, a dictionary where the keys are\n * annotation ids and the values are an object which includes the\n * annotation options and a reference to the annotation. If not\n * specified, use `this._annotations` and update the view for all\n * relevant annotatioins.\n */\n setBounds: function (annotations) {\n var zoom = this.viewer.zoom(),\n bounds = this.viewer.bounds(),\n zoomRange = this.viewer.zoomRange();\n _.each(annotations || this._annotations, (annotation) => {\n if (annotation.options.fetch && annotation.annotation.setView) {\n annotation.annotation.setView(bounds, zoom, zoomRange.max, undefined, this.sizeX, this.sizeY);\n }\n });\n },\n\n /**\n * Remove an annotation from the image. If the annotation is not\n * drawn, this does nothing.\n *\n * @param {AnnotationModel} annotation\n */\n removeAnnotation: function (annotation) {\n annotation.off('g:fetched', null, this);\n // Trigger an event indicating to the listener that\n // mouseover states should reset.\n this.trigger(\n 'g:mouseResetAnnotation',\n annotation\n );\n if (_.has(this._annotations, annotation.id)) {\n _.each(this._annotations[annotation.id].features, (feature) => {\n if (feature._ownLayer) {\n feature.layer().map().deleteLayer(feature.layer());\n } else {\n this.featureLayer.deleteFeature(feature);\n }\n });\n _.each(this._annotations[annotation.id].overlays, (overlay) => {\n // Use filter instead of find to protect against multiple layers\n // for the same overlay element.\n const overlayLayers = this.viewer.layers().filter(\n (layer) => layer.id() === overlay.id);\n _.each(overlayLayers, (layer) => {\n this.trigger('g:removeOverlayAnnotation', overlay, layer);\n this.viewer.deleteLayer(layer);\n });\n });\n delete this._annotations[annotation.id];\n delete this._featureOpacity[annotation.id];\n\n // If removing an overlay annotation results in no more overlays drawn, and we've\n // previously un-clamped bounds for overlays, re-clamp bounds\n if (this._countDrawnImageOverlays() === 0 && this.getUnclampBoundsForOverlay()) {\n this.viewer.clampBoundsY(true);\n this.viewer.clampBoundsX(true);\n }\n this.viewer.scheduleAnimationFrame(this.viewer.draw);\n }\n },\n\n /**\n * Combine two regions into a multipolygon region.\n */\n _mergeRegions(origval, addval) {\n if (!origval || !origval.length || origval.length < 2 || origval === [-1, -1, -1, -1]) {\n return addval;\n }\n if (origval.length === 4) {\n origval = [\n origval[0], origval[1],\n origval[0] + origval[2], origval[1],\n origval[0] + origval[2], origval[1] + origval[3],\n origval[0], origval[1] + origval[3]\n ];\n } else if (origval.length === 6) {\n origval = [\n origval[0] - origval[3], origval[1] - origval[4],\n origval[0] + origval[3], origval[1] - origval[4],\n origval[0] + origval[3], origval[1] + origval[4],\n origval[0] - origval[3], origval[1] + origval[4]\n ];\n }\n if (addval.length === 4) {\n addval = [\n addval[0], addval[1],\n addval[0] + addval[2], addval[1],\n addval[0] + addval[2], addval[1] + addval[3],\n addval[0], addval[1] + addval[3]\n ];\n } else if (addval.length === 6) {\n addval = [\n addval[0] - addval[3], addval[1] - addval[4],\n addval[0] + addval[3], addval[1] - addval[4],\n addval[0] + addval[3], addval[1] + addval[4],\n addval[0] - addval[3], addval[1] + addval[4]\n ];\n }\n if (origval.length === 2 && addval.length === 2) {\n addval = [addval[0], addval[1], -1, -1];\n }\n return origval.concat([-1, -1]).concat(addval);\n },\n\n /**\n * Set the image interaction mode to region drawing mode. This\n * method takes an optional `model` argument where the region will\n * be stored when created by the user. In any case, this method\n * returns a promise that resolves to an array defining the region:\n * [ left, top, width, height ]\n *\n * @param {Backbone.Model|Object} [model] A model to set the region to,\n * or an object with model, mode, add, and submitCtrl.\n * @param {string} [drawMode='rectangle'] An annotation drawing mode.\n * @param {boolean} [addToExisting=false] If truthy, add the new\n * annotation to any existing annotation making a multipolygon.\n * @returns {$.Promise}\n */\n drawRegion: function (model, drawMode, addToExisting) {\n let submitCtrl, origEvent;\n if (model && model.model && model.add !== undefined) {\n drawMode = model.mode;\n addToExisting = model.add;\n submitCtrl = model.submitCtrl;\n origEvent = model.event;\n model = model.model;\n }\n model = model || new Backbone.Model();\n const startMode = ['polygon', 'line', 'point', 'rectangle'].includes(drawMode) ? drawMode : (drawMode === 'polyline' ? 'line' : (origEvent ? drawMode : 'rectangle'));\n return this.startDrawMode(startMode, {trigger: false, signalModeChange: true}).then((elements) => {\n /*\n * Strictly speaking, the rectangle drawn here could be\n * rotated, but for simplicity we will set the region model\n * assuming it is not. To be more precise, we could expand the\n * region to contain the whole rotated rectangle. A better\n * solution would be to add a draw parameter to geojs that\n * draws a rectangle aligned with the image coordinates.\n */\n var element = elements[0];\n let values = '-1,-1,-1,-1';\n switch (drawMode) {\n case 'point':\n values = [Math.round(element.center[0]), Math.round(element.center[1])];\n break;\n case 'line':\n values = element.points.map(([x, y, z]) => [Math.round(x), Math.round(y)]).flat();\n values = values.slice(0, 4);\n values.push(-2);\n values.push(-2);\n values.push(-2);\n values.push(-2);\n break;\n case 'polyline':\n values = element.points.map(([x, y, z]) => [Math.round(x), Math.round(y)]).flat();\n values.push(-2);\n values.push(-2);\n while (values.length > 0 && values.length <= 6) {\n values.push(-2);\n values.push(-2);\n }\n break;\n case 'polygon':\n values = element.points.map(([x, y, z]) => [Math.round(x), Math.round(y)]).flat();\n while (values.length > 0 && values.length <= 6) {\n values.push(values[0]);\n values.push(values[1]);\n }\n break;\n default:\n var left = Math.round(element.center[0] - element.width / 2);\n var top = Math.round(element.center[1] - element.height / 2);\n var width = Math.round(element.width);\n var height = Math.round(element.height);\n values = [left, top, width, height];\n break;\n }\n if (addToExisting) {\n values = this._mergeRegions(model.get('value'), values);\n }\n model.set('value', values, {trigger: true});\n events.trigger('li:drawRegionUpdate', {values: values, submit: submitCtrl, originalEvent: origEvent});\n return model.get('value');\n });\n },\n\n clearRegion: function (model) {\n if (model) {\n model.set('value', [-1, -1, -1, -1], {trigger: true});\n }\n },\n\n /**\n * Set the image interaction mode to draw the given type of annotation.\n *\n * @param {string} type An annotation type, or null to turn off\n * drawing.\n * @param {object} [options]\n * @param {boolean} [options.trigger=true] Trigger a global event after\n * creating each annotation element.\n * @param {boolean} [options.keepExisting=false] If true, don't\n * remove extant annotations.\n * @param {object} [options.modeOptions] Additional options to pass to\n * the annotationLayer mode.\n * @returns {$.Promise}\n * Resolves to an array of generated annotation elements.\n */\n startDrawMode: function (type, options) {\n var layer = this.annotationLayer;\n var elements = [];\n var annotations = [];\n var defer = $.Deferred();\n var element;\n\n layer.geoOff(window.geo.event.annotation.mode);\n layer.mode(null);\n layer.geoOff(window.geo.event.annotation.state);\n options = _.defaults(options || {}, {trigger: true});\n if (!options.keepExisting) {\n layer.removeAllAnnotations();\n }\n layer.geoOn(\n window.geo.event.annotation.state,\n (evt) => {\n if (evt.annotation.state() !== window.geo.annotation.state.done) {\n return;\n }\n layer.geoOff(window.geo.event.annotation.mode);\n const opts = {};\n if (layer.currentBooleanOperation) {\n opts.currentBooleanOperation = layer.currentBooleanOperation();\n }\n element = convertAnnotation(evt.annotation);\n if (!element.id) {\n element.id = guid();\n }\n elements.push(element);\n annotations.push(evt.annotation);\n\n if (options.trigger) {\n events.trigger('g:annotationCreated', element, evt.annotation, opts);\n }\n\n layer.removeAllAnnotations();\n layer.geoOff(window.geo.event.annotation.state);\n defer.resolve(elements, annotations, opts);\n }\n );\n layer.mode(type, undefined, options.modeOptions);\n layer.geoOn(window.geo.event.annotation.mode, (evt) => {\n layer.geoOff(window.geo.event.annotation.state);\n layer.geoOff(window.geo.event.annotation.mode);\n if (options.signalModeChange) {\n events.trigger('li:drawModeChange', {event: evt});\n }\n defer.reject();\n });\n return defer.promise();\n },\n\n setGlobalAnnotationOpacity: function (opacity) {\n this._globalAnnotationOpacity = opacity;\n if (this.featureLayer) {\n this.featureLayer.opacity(opacity);\n }\n Object.values(this._annotations).forEach((annot) => annot.features.forEach((feature) => {\n if (feature._ownLayer) {\n feature.layer().opacity(opacity);\n }\n }));\n _.each(this._annotations, (annotation) => {\n _.each(annotation.overlays, (overlay) => {\n const overlayLayer = this.viewer.layers().find((layer) => layer.id() === overlay.id);\n if (overlayLayer) {\n const overlayOpacity = overlay.opacity || 1;\n overlayLayer.opacity(opacity * overlayOpacity);\n }\n });\n });\n return this;\n },\n\n setGlobalAnnotationFillOpacity: function (opacity) {\n this._globalAnnotationFillOpacity = opacity;\n if (this.featureLayer) {\n _.each(this._annotations, (layer, annotationId) => {\n const features = layer.features;\n this._mutateFeaturePropertiesForHighlight(annotationId, features);\n });\n this.viewer.scheduleAnimationFrame(this.viewer.draw);\n }\n return this;\n },\n\n _setEventTypes: function () {\n var events = window.geo.event.feature;\n this._eventTypes = {\n [events.mousedown]: 'g:mouseDownAnnotation',\n [events.mouseup]: 'g:mouseUpAnnotation',\n [events.mouseclick]: 'g:mouseClickAnnotation',\n [events.mouseoff]: 'g:mouseOffAnnotation',\n [events.mouseon]: 'g:mouseOnAnnotation',\n [events.mouseover]: 'g:mouseOverAnnotation',\n [events.mouseout]: 'g:mouseOutAnnotation'\n };\n },\n\n _onMouseFeature: function (evt, overlay, overlayLayer) {\n var properties = evt.data.properties || {};\n var eventType;\n\n if (!this._eventTypes) {\n this._setEventTypes();\n }\n if (properties.element && properties.annotation) {\n eventType = this._eventTypes[evt.event];\n\n if (eventType) {\n this.trigger(\n eventType,\n properties.element,\n properties.annotation,\n evt\n );\n }\n } else if (overlay && overlayLayer) {\n // handle events for overlay layers like pixelmaps\n eventType = this._eventTypes[evt.event];\n if (eventType) {\n const overlayEventType = eventType + 'Overlay';\n this.trigger(overlayEventType, overlay, overlayLayer, evt);\n }\n }\n },\n\n _guid: guid\n });\n};\n\nexport default GeojsImageViewerWidgetExtension;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@girder/large_image_annotation/views/imageViewerWidget/geojs.js"],"sourceRoot":""}