nxt-dropzone-wrapper 16.0.0-alpha.3 → 16.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,173 @@
1
+ /* eslint-disable @angular-eslint/no-output-rename */
2
+ import { Component, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { DropzoneDirective } from './dropzone.directive';
4
+ import { NXT_DROPZONE_LISTENERS } from './dropzone.interfaces';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "./dropzone.directive";
8
+ class DropzoneComponent {
9
+ constructor() {
10
+ /** Disables / detaches Dropzone from the element */
11
+ this.disabled = false;
12
+ /** Message to show for the user on the upload area */
13
+ this.message = 'Click or drag files to upload';
14
+ /** Placeholder image to be shown as the upload area */
15
+ this.placeholder = '';
16
+ /** Use 'dropzone' class (use provided default styles) */
17
+ this.useDropzoneClass = true;
18
+ this.DZ_INIT = new EventEmitter();
19
+ this.DZ_DROP = new EventEmitter();
20
+ this.DZ_DRAGSTART = new EventEmitter();
21
+ this.DZ_DRAGEND = new EventEmitter();
22
+ this.DZ_DRAGENTER = new EventEmitter();
23
+ this.DZ_DRAGOVER = new EventEmitter();
24
+ this.DZ_DRAGLEAVE = new EventEmitter();
25
+ this.DZ_PASTE = new EventEmitter();
26
+ this.DZ_RESET = new EventEmitter();
27
+ this.DZ_ADDEDFILE = new EventEmitter();
28
+ this.DZ_ADDEDFILES = new EventEmitter();
29
+ this.DZ_REMOVEDFILE = new EventEmitter();
30
+ this.DZ_THUMBNAIL = new EventEmitter();
31
+ this.DZ_ERROR = new EventEmitter();
32
+ this.DZ_ERRORMULTIPLE = new EventEmitter();
33
+ this.DZ_PROCESSING = new EventEmitter();
34
+ this.DZ_PROCESSINGMULTIPLE = new EventEmitter();
35
+ this.DZ_UPLOADPROGRESS = new EventEmitter();
36
+ this.DZ_TOTALUPLOADPROGRESS = new EventEmitter();
37
+ this.DZ_SENDING = new EventEmitter();
38
+ this.DZ_SENDINGMULTIPLE = new EventEmitter();
39
+ // eslint-disable-next-line @typescript-eslint/ban-types
40
+ this.DZ_SUCCESS = new EventEmitter();
41
+ this.DZ_SUCCESSMULTIPLE = new EventEmitter();
42
+ this.DZ_CANCELED = new EventEmitter();
43
+ this.DZ_CANCELEDMULTIPLE = new EventEmitter();
44
+ this.DZ_COMPLETE = new EventEmitter();
45
+ this.DZ_COMPLETEMULTIPLE = new EventEmitter();
46
+ this.DZ_MAXFILESEXCEEDED = new EventEmitter();
47
+ this.DZ_MAXFILESREACHED = new EventEmitter();
48
+ this.DZ_QUEUECOMPLETE = new EventEmitter();
49
+ }
50
+ /** @internal */
51
+ ngOnInit() { }
52
+ /** @internal */
53
+ getPlaceholder() {
54
+ return 'url(' + encodeURI(this.placeholder) + ')';
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: DropzoneComponent, selector: "nxt-dropzone", inputs: { disabled: "disabled", config: "config", message: "message", placeholder: "placeholder", useDropzoneClass: "useDropzoneClass" }, outputs: { DZ_INIT: "init", DZ_DROP: "drop", DZ_DRAGSTART: "dragStart", DZ_DRAGEND: "dragEnd", DZ_DRAGENTER: "dragEnter", DZ_DRAGOVER: "dragOver", DZ_DRAGLEAVE: "dragLeave", DZ_PASTE: "paste", DZ_RESET: "reset", DZ_ADDEDFILE: "addedFile", DZ_ADDEDFILES: "addedFiles", DZ_REMOVEDFILE: "removedFile", DZ_THUMBNAIL: "thumbnail", DZ_ERROR: "error", DZ_ERRORMULTIPLE: "errorMultiple", DZ_PROCESSING: "processing", DZ_PROCESSINGMULTIPLE: "processingMultiple", DZ_UPLOADPROGRESS: "uploadProgress", DZ_TOTALUPLOADPROGRESS: "totalUploadProgress", DZ_SENDING: "sending", DZ_SENDINGMULTIPLE: "sendingMultiple", DZ_SUCCESS: "success", DZ_SUCCESSMULTIPLE: "successMultiple", DZ_CANCELED: "canceled", DZ_CANCELEDMULTIPLE: "canceledMultiple", DZ_COMPLETE: "complete", DZ_COMPLETEMULTIPLE: "completeMultiple", DZ_MAXFILESEXCEEDED: "maxFilesExceeded", DZ_MAXFILESREACHED: "maxFilesReached", DZ_QUEUECOMPLETE: "queueComplete" }, providers: [{
58
+ provide: NXT_DROPZONE_LISTENERS,
59
+ useValue: forwardRef(() => DropzoneComponent)
60
+ }], viewQueries: [{ propertyName: "directiveRef", first: true, predicate: DropzoneDirective, descendants: true }], ngImport: i0, template: "<div class=\"dz-wrapper\"\n [class.dropzone]=\"useDropzoneClass\"\n [nxtDropzone]=\"config\"\n [disabled]=\"disabled\">\n <div class=\"dz-message\"\n [class.disabled]=\"disabled\"\n [class.dz-placeholder]=\"placeholder\">\n <div class=\"dz-text\"\n [innerHTML]=\"config?.dictDefaultMessage || message\"></div>\n\n <div *ngIf=\"placeholder\"\n class=\"dz-image\"\n [style.background-image]=\"getPlaceholder()\"></div>\n </div>\n\n <ng-content></ng-content>\n</div>\n", styles: ["nxt-dropzone{display:flex;width:100%;height:auto}nxt-dropzone>.dropzone.dz-wrapper{overflow:auto;width:100%;min-height:0;max-height:100%;padding:0;border:none;color:#666;background:transparent;border-radius:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:16px}nxt-dropzone>.dropzone.dz-wrapper .dz-message{overflow:auto;min-height:60px;max-height:100%;border:2px dashed #aaa;background-color:#eee;display:flex;align-items:center;justify-content:center;margin:0;border-radius:5px;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-text{padding:8px 16px;text-align:center}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-image{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:50% 50%}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled{cursor:not-allowed}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled .dz-text{opacity:.5}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder{position:relative;border-color:#aaa0;transition:border-color .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder .dz-text{position:absolute;z-index:1;opacity:0;font-weight:700;background-color:#ffffff80;transition:filter .25s ease-in-out,opacity .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled){border-color:#aaa}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-text{opacity:1}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-image{filter:blur(8px)}nxt-dropzone>.dropzone.dz-wrapper .dz-preview{margin:0}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-details{padding:24px}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress{width:80%;border:1px solid #aaa;border-radius:5px;overflow:hidden}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress .dz-upload{background-color:#666}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span{display:block;overflow:hidden;width:100%;max-width:100%;text-overflow:ellipsis}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span:hover{overflow:visible;white-space:normal;word-wrap:break-word}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-image{border-radius:5px;overflow:hidden;min-width:120px;min-height:120px;width:auto;height:auto}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-message{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview{width:100%;height:100%;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image img{display:block;width:100%;height:auto;margin:0}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-error-message{top:50%;left:50%;transform:translate(-50%) translateY(100%)}nxt-dropzone>.dropzone.dz-wrapper.dz-single.dz-started .dz-message{display:none}nxt-dropzone>.dropzone.dz-wrapper.dz-multiple.dz-started .dz-message{display:flex}\n", "@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px solid rgba(0,0,0,.8);border-radius:5px;padding:20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:3em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom,#eee,#ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:#000000e6;line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:#fffc}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:#fff6;padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{transform:scale(1.05);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px;background:rgba(0,0,0,.8);border-radius:50%}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px;fill:#fff}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:20px;top:50%;margin-top:-10px;left:15%;right:15%;border:3px solid rgba(0,0,0,.8);background:rgba(0,0,0,.8);border-radius:10px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#fff;display:block;position:relative;height:100%;width:0;transition:width .3s ease-in-out;border-radius:17px}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#b10606;padding:.5em 1em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:\"\";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b10606}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DropzoneDirective, selector: "[nxtDropzone]", inputs: ["disabled", "nxtDropzone"], outputs: ["init", "drop", "dragStart", "dragEnd", "dragEnter", "dragOver", "dragLeave", "paste", "reset", "addedFile", "addedFiles", "removedFile", "thumbnail", "error", "errorMultiple", "processing", "processingMultiple", "uploadProgress", "totalUploadProgress", "sending", "sendingMultiple", "success", "successMultiple", "canceled", "canceledMultiple", "complete", "completeMultiple", "maxFilesExceeded", "maxFilesReached", "queueComplete"], exportAs: ["nxtDropzone"] }], encapsulation: i0.ViewEncapsulation.None }); }
61
+ }
62
+ export { DropzoneComponent };
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DropzoneComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ selector: 'nxt-dropzone', encapsulation: ViewEncapsulation.None, providers: [{
66
+ provide: NXT_DROPZONE_LISTENERS,
67
+ useValue: forwardRef(() => DropzoneComponent)
68
+ }], template: "<div class=\"dz-wrapper\"\n [class.dropzone]=\"useDropzoneClass\"\n [nxtDropzone]=\"config\"\n [disabled]=\"disabled\">\n <div class=\"dz-message\"\n [class.disabled]=\"disabled\"\n [class.dz-placeholder]=\"placeholder\">\n <div class=\"dz-text\"\n [innerHTML]=\"config?.dictDefaultMessage || message\"></div>\n\n <div *ngIf=\"placeholder\"\n class=\"dz-image\"\n [style.background-image]=\"getPlaceholder()\"></div>\n </div>\n\n <ng-content></ng-content>\n</div>\n", styles: ["nxt-dropzone{display:flex;width:100%;height:auto}nxt-dropzone>.dropzone.dz-wrapper{overflow:auto;width:100%;min-height:0;max-height:100%;padding:0;border:none;color:#666;background:transparent;border-radius:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:16px}nxt-dropzone>.dropzone.dz-wrapper .dz-message{overflow:auto;min-height:60px;max-height:100%;border:2px dashed #aaa;background-color:#eee;display:flex;align-items:center;justify-content:center;margin:0;border-radius:5px;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-text{padding:8px 16px;text-align:center}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-image{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:50% 50%}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled{cursor:not-allowed}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled .dz-text{opacity:.5}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder{position:relative;border-color:#aaa0;transition:border-color .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder .dz-text{position:absolute;z-index:1;opacity:0;font-weight:700;background-color:#ffffff80;transition:filter .25s ease-in-out,opacity .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled){border-color:#aaa}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-text{opacity:1}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-image{filter:blur(8px)}nxt-dropzone>.dropzone.dz-wrapper .dz-preview{margin:0}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-details{padding:24px}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress{width:80%;border:1px solid #aaa;border-radius:5px;overflow:hidden}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress .dz-upload{background-color:#666}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span{display:block;overflow:hidden;width:100%;max-width:100%;text-overflow:ellipsis}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span:hover{overflow:visible;white-space:normal;word-wrap:break-word}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-image{border-radius:5px;overflow:hidden;min-width:120px;min-height:120px;width:auto;height:auto}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-message{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview{width:100%;height:100%;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image img{display:block;width:100%;height:auto;margin:0}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-error-message{top:50%;left:50%;transform:translate(-50%) translateY(100%)}nxt-dropzone>.dropzone.dz-wrapper.dz-single.dz-started .dz-message{display:none}nxt-dropzone>.dropzone.dz-wrapper.dz-multiple.dz-started .dz-message{display:flex}\n", "@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px solid rgba(0,0,0,.8);border-radius:5px;padding:20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:3em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom,#eee,#ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:#000000e6;line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:#fffc}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:#fff6;padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{transform:scale(1.05);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px;background:rgba(0,0,0,.8);border-radius:50%}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px;fill:#fff}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:20px;top:50%;margin-top:-10px;left:15%;right:15%;border:3px solid rgba(0,0,0,.8);background:rgba(0,0,0,.8);border-radius:10px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#fff;display:block;position:relative;height:100%;width:0;transition:width .3s ease-in-out;border-radius:17px}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#b10606;padding:.5em 1em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:\"\";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b10606}\n"] }]
69
+ }], ctorParameters: function () { return []; }, propDecorators: { disabled: [{
70
+ type: Input
71
+ }], config: [{
72
+ type: Input
73
+ }], message: [{
74
+ type: Input
75
+ }], placeholder: [{
76
+ type: Input
77
+ }], useDropzoneClass: [{
78
+ type: Input
79
+ }], DZ_INIT: [{
80
+ type: Output,
81
+ args: ['init']
82
+ }], DZ_DROP: [{
83
+ type: Output,
84
+ args: ['drop']
85
+ }], DZ_DRAGSTART: [{
86
+ type: Output,
87
+ args: ['dragStart']
88
+ }], DZ_DRAGEND: [{
89
+ type: Output,
90
+ args: ['dragEnd']
91
+ }], DZ_DRAGENTER: [{
92
+ type: Output,
93
+ args: ['dragEnter']
94
+ }], DZ_DRAGOVER: [{
95
+ type: Output,
96
+ args: ['dragOver']
97
+ }], DZ_DRAGLEAVE: [{
98
+ type: Output,
99
+ args: ['dragLeave']
100
+ }], DZ_PASTE: [{
101
+ type: Output,
102
+ args: ['paste']
103
+ }], DZ_RESET: [{
104
+ type: Output,
105
+ args: ['reset']
106
+ }], DZ_ADDEDFILE: [{
107
+ type: Output,
108
+ args: ['addedFile']
109
+ }], DZ_ADDEDFILES: [{
110
+ type: Output,
111
+ args: ['addedFiles']
112
+ }], DZ_REMOVEDFILE: [{
113
+ type: Output,
114
+ args: ['removedFile']
115
+ }], DZ_THUMBNAIL: [{
116
+ type: Output,
117
+ args: ['thumbnail']
118
+ }], DZ_ERROR: [{
119
+ type: Output,
120
+ args: ['error']
121
+ }], DZ_ERRORMULTIPLE: [{
122
+ type: Output,
123
+ args: ['errorMultiple']
124
+ }], DZ_PROCESSING: [{
125
+ type: Output,
126
+ args: ['processing']
127
+ }], DZ_PROCESSINGMULTIPLE: [{
128
+ type: Output,
129
+ args: ['processingMultiple']
130
+ }], DZ_UPLOADPROGRESS: [{
131
+ type: Output,
132
+ args: ['uploadProgress']
133
+ }], DZ_TOTALUPLOADPROGRESS: [{
134
+ type: Output,
135
+ args: ['totalUploadProgress']
136
+ }], DZ_SENDING: [{
137
+ type: Output,
138
+ args: ['sending']
139
+ }], DZ_SENDINGMULTIPLE: [{
140
+ type: Output,
141
+ args: ['sendingMultiple']
142
+ }], DZ_SUCCESS: [{
143
+ type: Output,
144
+ args: ['success']
145
+ }], DZ_SUCCESSMULTIPLE: [{
146
+ type: Output,
147
+ args: ['successMultiple']
148
+ }], DZ_CANCELED: [{
149
+ type: Output,
150
+ args: ['canceled']
151
+ }], DZ_CANCELEDMULTIPLE: [{
152
+ type: Output,
153
+ args: ['canceledMultiple']
154
+ }], DZ_COMPLETE: [{
155
+ type: Output,
156
+ args: ['complete']
157
+ }], DZ_COMPLETEMULTIPLE: [{
158
+ type: Output,
159
+ args: ['completeMultiple']
160
+ }], DZ_MAXFILESEXCEEDED: [{
161
+ type: Output,
162
+ args: ['maxFilesExceeded']
163
+ }], DZ_MAXFILESREACHED: [{
164
+ type: Output,
165
+ args: ['maxFilesReached']
166
+ }], DZ_QUEUECOMPLETE: [{
167
+ type: Output,
168
+ args: ['queueComplete']
169
+ }], directiveRef: [{
170
+ type: ViewChild,
171
+ args: [DropzoneDirective]
172
+ }] } });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcHpvbmUtd3JhcHBlci9zcmMvbGliL2Ryb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ryb3B6b25lLXdyYXBwZXIvc3JjL2xpYi9kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3hELE9BQU8sRUFBcUMsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTs7OztBQUVqRyxNQWFhLGlCQUFpQjtJQThEMUI7UUE1REEsb0RBQW9EO1FBQzNDLGFBQVEsR0FBWSxLQUFLLENBQUE7UUFLbEMsc0RBQXNEO1FBQzdDLFlBQU8sR0FBVywrQkFBK0IsQ0FBQTtRQUMxRCx1REFBdUQ7UUFDOUMsZ0JBQVcsR0FBVyxFQUFFLENBQUE7UUFFakMseURBQXlEO1FBQ2hELHFCQUFnQixHQUFZLElBQUksQ0FBQTtRQUVoQixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQTtRQUV0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQTtRQUNsQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDOUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDeEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFBO1FBQzdDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQTtRQUMxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDaEQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFFeEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7UUFFL0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQTtRQUN2RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFBO1FBQ3hELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUE7UUFDNUQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQTtRQUV0RSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTJDLENBQUE7UUFDOUQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQTZDLENBQUE7UUFFbkYsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQTtRQUNqRCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQTtRQUV2RSxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQTtRQUMxRSwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQTtRQUVqRixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXFELENBQUE7UUFDMUUsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXVELENBQUE7UUFFaEksd0RBQXdEO1FBQzVCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBNEMsQ0FBQTtRQUNqRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQTtRQUV2RSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFBO1FBQy9DLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFBO1FBRXpFLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUE7UUFDL0Msd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUE7UUFFakUsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUE7UUFDaEUsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUE7UUFFbEUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtJQUk3RCxDQUFDO0lBRWpCLGdCQUFnQjtJQUNoQixRQUFRLEtBQVcsQ0FBQztJQUVwQixnQkFBZ0I7SUFDaEIsY0FBYztRQUNWLE9BQU8sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ3JELENBQUM7OEdBdEVRLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdrQ0FMZixDQUFDO2dCQUNSLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDaEQsQ0FBQyx3RUE4RFMsaUJBQWlCLGdEQzlFaEMsa2lCQWlCQTs7U0RDYSxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFiN0IsU0FBUzsrQkFDSSxjQUFjLGlCQU1ULGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQzs0QkFDUixPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzt5QkFDaEQsQ0FBQzswRUFLTyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRW1CLE9BQU87c0JBQS9CLE1BQU07dUJBQUMsTUFBTTtnQkFFVyxPQUFPO3NCQUEvQixNQUFNO3VCQUFDLE1BQU07Z0JBQ2dCLFlBQVk7c0JBQXpDLE1BQU07dUJBQUMsV0FBVztnQkFDUyxVQUFVO3NCQUFyQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ2EsWUFBWTtzQkFBekMsTUFBTTt1QkFBQyxXQUFXO2dCQUNVLFdBQVc7c0JBQXZDLE1BQU07dUJBQUMsVUFBVTtnQkFDWSxZQUFZO3NCQUF6QyxNQUFNO3VCQUFDLFdBQVc7Z0JBQ08sUUFBUTtzQkFBakMsTUFBTTt1QkFBQyxPQUFPO2dCQUVXLFFBQVE7c0JBQWpDLE1BQU07dUJBQUMsT0FBTztnQkFFZSxZQUFZO3NCQUF6QyxNQUFNO3VCQUFDLFdBQVc7Z0JBQ1ksYUFBYTtzQkFBM0MsTUFBTTt1QkFBQyxZQUFZO2dCQUNZLGNBQWM7c0JBQTdDLE1BQU07dUJBQUMsYUFBYTtnQkFDUyxZQUFZO3NCQUF6QyxNQUFNO3VCQUFDLFdBQVc7Z0JBRU8sUUFBUTtzQkFBakMsTUFBTTt1QkFBQyxPQUFPO2dCQUNtQixnQkFBZ0I7c0JBQWpELE1BQU07dUJBQUMsZUFBZTtnQkFFUSxhQUFhO3NCQUEzQyxNQUFNO3VCQUFDLFlBQVk7Z0JBQ21CLHFCQUFxQjtzQkFBM0QsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBRU8saUJBQWlCO3NCQUFuRCxNQUFNO3VCQUFDLGdCQUFnQjtnQkFDZ0Isc0JBQXNCO3NCQUE3RCxNQUFNO3VCQUFDLHFCQUFxQjtnQkFFRCxVQUFVO3NCQUFyQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ21CLGtCQUFrQjtzQkFBckQsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBR0csVUFBVTtzQkFBckMsTUFBTTt1QkFBQyxTQUFTO2dCQUNtQixrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUVJLFdBQVc7c0JBQXZDLE1BQU07dUJBQUMsVUFBVTtnQkFDbUIsbUJBQW1CO3NCQUF2RCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFRyxXQUFXO3NCQUF2QyxNQUFNO3VCQUFDLFVBQVU7Z0JBQ21CLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRVcsbUJBQW1CO3NCQUF2RCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFDVSxrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUVTLGdCQUFnQjtzQkFBakQsTUFBTTt1QkFBQyxlQUFlO2dCQUVPLFlBQVk7c0JBQXpDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWUgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRHJvcHpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3B6b25lLmRpcmVjdGl2ZSdcbmltcG9ydCB7IERyb3B6b25lQ29uZmlnLCBEcm9wem9uZUxpc3RlbmVycywgTlhUX0RST1BaT05FX0xJU1RFTkVSUyB9IGZyb20gJy4vZHJvcHpvbmUuaW50ZXJmYWNlcydcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdueHQtZHJvcHpvbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wem9uZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL2Ryb3B6b25lLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kcm9wem9uZS9kaXN0L2Ryb3B6b25lLmNzcydcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBOWFRfRFJPUFpPTkVfTElTVEVORVJTLFxuICAgICAgICB1c2VWYWx1ZTogZm9yd2FyZFJlZigoKSA9PiBEcm9wem9uZUNvbXBvbmVudClcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wem9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRHJvcHpvbmVMaXN0ZW5lcnMge1xuXG4gICAgLyoqIERpc2FibGVzIC8gZGV0YWNoZXMgRHJvcHpvbmUgZnJvbSB0aGUgZWxlbWVudCAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2VcblxuICAgIC8qKiBDdXN0b20gY29uZmlnIHRvIG92ZXJyaWRlIHRoZSBnbG9iYWwgZGVmYXVsdHMgKi9cbiAgICBASW5wdXQoKSBjb25maWc/OiBEcm9wem9uZUNvbmZpZ1xuXG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBmb3IgdGhlIHVzZXIgb24gdGhlIHVwbG9hZCBhcmVhICovXG4gICAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nID0gJ0NsaWNrIG9yIGRyYWcgZmlsZXMgdG8gdXBsb2FkJ1xuICAgIC8qKiBQbGFjZWhvbGRlciBpbWFnZSB0byBiZSBzaG93biBhcyB0aGUgdXBsb2FkIGFyZWEgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJydcblxuICAgIC8qKiBVc2UgJ2Ryb3B6b25lJyBjbGFzcyAodXNlIHByb3ZpZGVkIGRlZmF1bHQgc3R5bGVzKSAqL1xuICAgIEBJbnB1dCgpIHVzZURyb3B6b25lQ2xhc3M6IGJvb2xlYW4gPSB0cnVlXG5cbiAgICBAT3V0cHV0KCdpbml0JykgcmVhZG9ubHkgRFpfSU5JVCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmU+KClcblxuICAgIEBPdXRwdXQoJ2Ryb3AnKSByZWFkb25seSBEWl9EUk9QID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnU3RhcnQnKSByZWFkb25seSBEWl9EUkFHU1RBUlQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdFbmQnKSByZWFkb25seSBEWl9EUkFHRU5EID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnRW50ZXInKSByZWFkb25seSBEWl9EUkFHRU5URVIgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdPdmVyJykgcmVhZG9ubHkgRFpfRFJBR09WRVIgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdMZWF2ZScpIHJlYWRvbmx5IERaX0RSQUdMRUFWRSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgncGFzdGUnKSByZWFkb25seSBEWl9QQVNURSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG5cbiAgICBAT3V0cHV0KCdyZXNldCcpIHJlYWRvbmx5IERaX1JFU0VUID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgICBAT3V0cHV0KCdhZGRlZEZpbGUnKSByZWFkb25seSBEWl9BRERFREZJTEUgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ2FkZGVkRmlsZXMnKSByZWFkb25seSBEWl9BRERFREZJTEVTID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdyZW1vdmVkRmlsZScpIHJlYWRvbmx5IERaX1JFTU9WRURGSUxFID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCd0aHVtYm5haWwnKSByZWFkb25seSBEWl9USFVNQk5BSUwgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZ10+KClcblxuICAgIEBPdXRwdXQoJ2Vycm9yJykgcmVhZG9ubHkgRFpfRVJST1IgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZyB8IEVycm9yXT4oKVxuICAgIEBPdXRwdXQoJ2Vycm9yTXVsdGlwbGUnKSByZWFkb25seSBEWl9FUlJPUk1VTFRJUExFID0gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIHN0cmluZyB8IEVycm9yXT4oKVxuXG4gICAgQE91dHB1dCgncHJvY2Vzc2luZycpIHJlYWRvbmx5IERaX1BST0NFU1NJTkcgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ3Byb2Nlc3NpbmdNdWx0aXBsZScpIHJlYWRvbmx5IERaX1BST0NFU1NJTkdNVUxUSVBMRSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3VwbG9hZFByb2dyZXNzJykgcmVhZG9ubHkgRFpfVVBMT0FEUFJPR1JFU1MgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIG51bWJlciwgbnVtYmVyXT4oKVxuICAgIEBPdXRwdXQoJ3RvdGFsVXBsb2FkUHJvZ3Jlc3MnKSByZWFkb25seSBEWl9UT1RBTFVQTE9BRFBST0dSRVNTID0gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0+KClcblxuICAgIEBPdXRwdXQoJ3NlbmRpbmcnKSByZWFkb25seSBEWl9TRU5ESU5HID0gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBYTUxIdHRwUmVxdWVzdCwgRm9ybURhdGFdPigpXG4gICAgQE91dHB1dCgnc2VuZGluZ011bHRpcGxlJykgcmVhZG9ubHkgRFpfU0VORElOR01VTFRJUExFID0gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIFhNTEh0dHBSZXF1ZXN0LCBGb3JtRGF0YV0+KClcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgQE91dHB1dCgnc3VjY2VzcycpIHJlYWRvbmx5IERaX1NVQ0NFU1MgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIE9iamVjdCB8IHN0cmluZ10+KClcbiAgICBAT3V0cHV0KCdzdWNjZXNzTXVsdGlwbGUnKSByZWFkb25seSBEWl9TVUNDRVNTTVVMVElQTEUgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdjYW5jZWxlZCcpIHJlYWRvbmx5IERaX0NBTkNFTEVEID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdjYW5jZWxlZE11bHRpcGxlJykgcmVhZG9ubHkgRFpfQ0FOQ0VMRURNVUxUSVBMRSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ2NvbXBsZXRlJykgcmVhZG9ubHkgRFpfQ09NUExFVEUgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ2NvbXBsZXRlTXVsdGlwbGUnKSByZWFkb25seSBEWl9DT01QTEVURU1VTFRJUExFID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGVbXT4oKVxuXG4gICAgQE91dHB1dCgnbWF4RmlsZXNFeGNlZWRlZCcpIHJlYWRvbmx5IERaX01BWEZJTEVTRVhDRUVERUQgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ21heEZpbGVzUmVhY2hlZCcpIHJlYWRvbmx5IERaX01BWEZJTEVTUkVBQ0hFRCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3F1ZXVlQ29tcGxldGUnKSByZWFkb25seSBEWl9RVUVVRUNPTVBMRVRFID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgICBAVmlld0NoaWxkKERyb3B6b25lRGlyZWN0aXZlKSBkaXJlY3RpdmVSZWY/OiBEcm9wem9uZURpcmVjdGl2ZVxuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAndXJsKCcgKyBlbmNvZGVVUkkodGhpcy5wbGFjZWhvbGRlcikgKyAnKSdcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHotd3JhcHBlclwiXG4gICAgW2NsYXNzLmRyb3B6b25lXT1cInVzZURyb3B6b25lQ2xhc3NcIlxuICAgIFtueHREcm9wem9uZV09XCJjb25maWdcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkei1tZXNzYWdlXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLmR6LXBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkei10ZXh0XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29uZmlnPy5kaWN0RGVmYXVsdE1lc3NhZ2UgfHwgbWVzc2FnZVwiPjwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBjbGFzcz1cImR6LWltYWdlXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImdldFBsYWNlaG9sZGVyKClcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,332 @@
1
+ /* eslint-disable @angular-eslint/no-output-rename */
2
+ import { isPlatformBrowser } from '@angular/common';
3
+ import { Directive, EventEmitter, HostBinding, Inject, Input, Optional, Output, PLATFORM_ID } from '@angular/core';
4
+ import Dropzone from 'dropzone';
5
+ import { DropzoneEvents, internalChanges, NXT_DROPZONE_CONFIG, NXT_DROPZONE_LISTENERS, _DropzoneConfig } from './dropzone.interfaces';
6
+ import * as i0 from "@angular/core";
7
+ class DropzoneDirective {
8
+ /** Disables / detaches Dropzone from the element */
9
+ set disabled(val) {
10
+ val = !!val;
11
+ if (val != this._disabled && this.instance) {
12
+ if (val)
13
+ this.zone.runOutsideAngular(() => {
14
+ this.instance.disable();
15
+ });
16
+ else
17
+ this.zone.runOutsideAngular(() => {
18
+ this.instance.enable();
19
+ });
20
+ }
21
+ this._disabled = val;
22
+ }
23
+ get disabled() {
24
+ return this._disabled;
25
+ }
26
+ get dropzone() {
27
+ return this.instance;
28
+ }
29
+ /** @internal */
30
+ get isSingle() {
31
+ return this._params?.maxFiles === 1;
32
+ }
33
+ /** @internal */
34
+ get isMultiple() {
35
+ return this._params?.maxFiles !== 1;
36
+ }
37
+ constructor(zone, elementRef, differs, platformId, defaults, component) {
38
+ this.zone = zone;
39
+ this.elementRef = elementRef;
40
+ this.differs = differs;
41
+ this.platformId = platformId;
42
+ this.defaults = defaults;
43
+ this.component = component;
44
+ this._disabled = false;
45
+ this._params = this.defaults
46
+ ? new _DropzoneConfig(this.defaults)
47
+ : undefined;
48
+ this.configDiff = this.differs.find(this.config || {}).create();
49
+ this.paramDiff = this.differs.find(this._params || {}).create();
50
+ this.DZ_INIT = this.component?.DZ_INIT
51
+ ?? new EventEmitter();
52
+ this.DZ_DROP = this.component?.DZ_DROP
53
+ ?? new EventEmitter();
54
+ this.DZ_DRAGSTART = this.component?.DZ_DRAGSTART
55
+ ?? new EventEmitter();
56
+ this.DZ_DRAGEND = this.component?.DZ_DRAGEND
57
+ ?? new EventEmitter();
58
+ this.DZ_DRAGENTER = this.component?.DZ_DRAGENTER
59
+ ?? new EventEmitter();
60
+ this.DZ_DRAGOVER = this.component?.DZ_DRAGOVER
61
+ ?? new EventEmitter();
62
+ this.DZ_DRAGLEAVE = this.component?.DZ_DRAGLEAVE
63
+ ?? new EventEmitter();
64
+ this.DZ_PASTE = this.component?.DZ_PASTE
65
+ ?? new EventEmitter();
66
+ this.DZ_RESET = this.component?.DZ_RESET
67
+ ?? new EventEmitter();
68
+ this.DZ_ADDEDFILE = this.component?.DZ_ADDEDFILE
69
+ ?? new EventEmitter();
70
+ this.DZ_ADDEDFILES = this.component?.DZ_ADDEDFILES
71
+ ?? new EventEmitter();
72
+ this.DZ_REMOVEDFILE = this.component?.DZ_REMOVEDFILE
73
+ ?? new EventEmitter();
74
+ this.DZ_THUMBNAIL = this.component?.DZ_THUMBNAIL
75
+ ?? new EventEmitter();
76
+ this.DZ_ERROR = this.component?.DZ_ERROR
77
+ ?? new EventEmitter();
78
+ this.DZ_ERRORMULTIPLE = this.component?.DZ_ERRORMULTIPLE
79
+ ?? new EventEmitter();
80
+ this.DZ_PROCESSING = this.component?.DZ_PROCESSING
81
+ ?? new EventEmitter();
82
+ this.DZ_PROCESSINGMULTIPLE = this.component?.DZ_PROCESSINGMULTIPLE
83
+ ?? new EventEmitter();
84
+ this.DZ_UPLOADPROGRESS = this.component?.DZ_UPLOADPROGRESS
85
+ ?? new EventEmitter();
86
+ this.DZ_TOTALUPLOADPROGRESS = this.component?.DZ_TOTALUPLOADPROGRESS
87
+ ?? new EventEmitter();
88
+ this.DZ_SENDING = this.component?.DZ_SENDING
89
+ ?? new EventEmitter();
90
+ this.DZ_SENDINGMULTIPLE = this.component?.DZ_SENDINGMULTIPLE
91
+ ?? new EventEmitter();
92
+ this.DZ_SUCCESS = this.component?.DZ_SUCCESS
93
+ // eslint-disable-next-line @typescript-eslint/ban-types
94
+ ?? new EventEmitter();
95
+ this.DZ_SUCCESSMULTIPLE = this.component?.DZ_SUCCESSMULTIPLE
96
+ ?? new EventEmitter();
97
+ this.DZ_CANCELED = this.component?.DZ_CANCELED
98
+ ?? new EventEmitter();
99
+ this.DZ_CANCELEDMULTIPLE = this.component?.DZ_CANCELEDMULTIPLE
100
+ ?? new EventEmitter();
101
+ this.DZ_COMPLETE = this.component?.DZ_COMPLETE
102
+ ?? new EventEmitter();
103
+ this.DZ_COMPLETEMULTIPLE = this.component?.DZ_COMPLETEMULTIPLE
104
+ ?? new EventEmitter();
105
+ this.DZ_MAXFILESEXCEEDED = this.component?.DZ_MAXFILESEXCEEDED
106
+ ?? new EventEmitter();
107
+ this.DZ_MAXFILESREACHED = this.component?.DZ_MAXFILESREACHED
108
+ ?? new EventEmitter();
109
+ this.DZ_QUEUECOMPLETE = this.component?.DZ_QUEUECOMPLETE
110
+ ?? new EventEmitter();
111
+ }
112
+ /** @internal */
113
+ ngOnInit() {
114
+ this.initInstance();
115
+ }
116
+ /** @internal */
117
+ ngOnDestroy() {
118
+ this.destroyInstance();
119
+ }
120
+ /** @internal */
121
+ ngDoCheck() {
122
+ const changes = this.configDiff.diff(this.config || {});
123
+ if (changes) {
124
+ let newParams = this.defaults
125
+ ? new _DropzoneConfig(this.defaults)
126
+ : undefined;
127
+ if (newParams && this.config)
128
+ newParams.assign(this.config);
129
+ else if (this.config)
130
+ newParams = new _DropzoneConfig(this.config);
131
+ const d = this.paramDiff.diff(newParams || {});
132
+ if (d) {
133
+ this._params = newParams;
134
+ let hasChanges = false;
135
+ d.forEachItem(r => {
136
+ if (!internalChanges.has(r.key) && r.currentValue !== r.previousValue)
137
+ hasChanges = true;
138
+ });
139
+ if (hasChanges) {
140
+ this.destroyInstance();
141
+ this.initInstance();
142
+ }
143
+ }
144
+ }
145
+ }
146
+ /** @internal */
147
+ reset(cancel) {
148
+ if (this.instance) {
149
+ this.zone.runOutsideAngular(() => {
150
+ this.instance.removeAllFiles(cancel);
151
+ });
152
+ }
153
+ }
154
+ initInstance() {
155
+ if (!isPlatformBrowser(this.platformId) || !this._params) {
156
+ return;
157
+ }
158
+ this.zone.runOutsideAngular(() => {
159
+ this.instance = new Dropzone(this.elementRef.nativeElement, this._params);
160
+ });
161
+ if (this.disabled) {
162
+ this.instance.disable();
163
+ }
164
+ if (this.DZ_INIT.observed) {
165
+ this.zone.run(() => {
166
+ this.DZ_INIT.emit(this.instance);
167
+ });
168
+ }
169
+ // Add auto reset handling for events
170
+ this.instance.on('success', () => {
171
+ if ((this._params?.autoReset ?? -1) >= 0) {
172
+ setTimeout(() => this.reset(), this._params?.autoReset);
173
+ }
174
+ });
175
+ this.instance.on('error', () => {
176
+ if ((this._params?.errorReset ?? -1) >= 0) {
177
+ setTimeout(() => this.reset(), this._params?.errorReset);
178
+ }
179
+ });
180
+ this.instance.on('canceled', () => {
181
+ if ((this._params?.cancelReset ?? -1) >= 0) {
182
+ setTimeout(() => this.reset(), this._params?.cancelReset);
183
+ }
184
+ });
185
+ // Add native Dropzone event handling
186
+ DropzoneEvents.forEach((eventName) => {
187
+ this.instance.on(eventName.toLowerCase(), (...args) => {
188
+ args = (args.length === 1) ? args[0] : args;
189
+ const output = `DZ_${eventName.toUpperCase()}`;
190
+ const emitter = this[output];
191
+ if (emitter.observed) {
192
+ this.zone.run(() => {
193
+ emitter.emit(args);
194
+ });
195
+ }
196
+ });
197
+ });
198
+ }
199
+ destroyInstance() {
200
+ if (this.instance) {
201
+ this.zone.runOutsideAngular(() => {
202
+ this.instance.destroy();
203
+ });
204
+ this.instance = undefined;
205
+ }
206
+ }
207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: PLATFORM_ID }, { token: NXT_DROPZONE_CONFIG, optional: true }, { token: NXT_DROPZONE_LISTENERS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
208
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DropzoneDirective, selector: "[nxtDropzone]", inputs: { disabled: "disabled", config: ["nxtDropzone", "config"] }, outputs: { DZ_INIT: "init", DZ_DROP: "drop", DZ_DRAGSTART: "dragStart", DZ_DRAGEND: "dragEnd", DZ_DRAGENTER: "dragEnter", DZ_DRAGOVER: "dragOver", DZ_DRAGLEAVE: "dragLeave", DZ_PASTE: "paste", DZ_RESET: "reset", DZ_ADDEDFILE: "addedFile", DZ_ADDEDFILES: "addedFiles", DZ_REMOVEDFILE: "removedFile", DZ_THUMBNAIL: "thumbnail", DZ_ERROR: "error", DZ_ERRORMULTIPLE: "errorMultiple", DZ_PROCESSING: "processing", DZ_PROCESSINGMULTIPLE: "processingMultiple", DZ_UPLOADPROGRESS: "uploadProgress", DZ_TOTALUPLOADPROGRESS: "totalUploadProgress", DZ_SENDING: "sending", DZ_SENDINGMULTIPLE: "sendingMultiple", DZ_SUCCESS: "success", DZ_SUCCESSMULTIPLE: "successMultiple", DZ_CANCELED: "canceled", DZ_CANCELEDMULTIPLE: "canceledMultiple", DZ_COMPLETE: "complete", DZ_COMPLETEMULTIPLE: "completeMultiple", DZ_MAXFILESEXCEEDED: "maxFilesExceeded", DZ_MAXFILESREACHED: "maxFilesReached", DZ_QUEUECOMPLETE: "queueComplete" }, host: { properties: { "class.dz-single": "this.isSingle", "class.dz-multiple": "this.isMultiple" } }, exportAs: ["nxtDropzone"], ngImport: i0 }); }
209
+ }
210
+ export { DropzoneDirective };
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DropzoneDirective, decorators: [{
212
+ type: Directive,
213
+ args: [{
214
+ selector: '[nxtDropzone]',
215
+ exportAs: 'nxtDropzone'
216
+ }]
217
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: Object, decorators: [{
218
+ type: Inject,
219
+ args: [PLATFORM_ID]
220
+ }] }, { type: undefined, decorators: [{
221
+ type: Optional
222
+ }, {
223
+ type: Inject,
224
+ args: [NXT_DROPZONE_CONFIG]
225
+ }] }, { type: undefined, decorators: [{
226
+ type: Optional
227
+ }, {
228
+ type: Inject,
229
+ args: [NXT_DROPZONE_LISTENERS]
230
+ }] }]; }, propDecorators: { disabled: [{
231
+ type: Input
232
+ }], config: [{
233
+ type: Input,
234
+ args: ['nxtDropzone']
235
+ }], DZ_INIT: [{
236
+ type: Output,
237
+ args: ['init']
238
+ }], DZ_DROP: [{
239
+ type: Output,
240
+ args: ['drop']
241
+ }], DZ_DRAGSTART: [{
242
+ type: Output,
243
+ args: ['dragStart']
244
+ }], DZ_DRAGEND: [{
245
+ type: Output,
246
+ args: ['dragEnd']
247
+ }], DZ_DRAGENTER: [{
248
+ type: Output,
249
+ args: ['dragEnter']
250
+ }], DZ_DRAGOVER: [{
251
+ type: Output,
252
+ args: ['dragOver']
253
+ }], DZ_DRAGLEAVE: [{
254
+ type: Output,
255
+ args: ['dragLeave']
256
+ }], DZ_PASTE: [{
257
+ type: Output,
258
+ args: ['paste']
259
+ }], DZ_RESET: [{
260
+ type: Output,
261
+ args: ['reset']
262
+ }], DZ_ADDEDFILE: [{
263
+ type: Output,
264
+ args: ['addedFile']
265
+ }], DZ_ADDEDFILES: [{
266
+ type: Output,
267
+ args: ['addedFiles']
268
+ }], DZ_REMOVEDFILE: [{
269
+ type: Output,
270
+ args: ['removedFile']
271
+ }], DZ_THUMBNAIL: [{
272
+ type: Output,
273
+ args: ['thumbnail']
274
+ }], DZ_ERROR: [{
275
+ type: Output,
276
+ args: ['error']
277
+ }], DZ_ERRORMULTIPLE: [{
278
+ type: Output,
279
+ args: ['errorMultiple']
280
+ }], DZ_PROCESSING: [{
281
+ type: Output,
282
+ args: ['processing']
283
+ }], DZ_PROCESSINGMULTIPLE: [{
284
+ type: Output,
285
+ args: ['processingMultiple']
286
+ }], DZ_UPLOADPROGRESS: [{
287
+ type: Output,
288
+ args: ['uploadProgress']
289
+ }], DZ_TOTALUPLOADPROGRESS: [{
290
+ type: Output,
291
+ args: ['totalUploadProgress']
292
+ }], DZ_SENDING: [{
293
+ type: Output,
294
+ args: ['sending']
295
+ }], DZ_SENDINGMULTIPLE: [{
296
+ type: Output,
297
+ args: ['sendingMultiple']
298
+ }], DZ_SUCCESS: [{
299
+ type: Output,
300
+ args: ['success']
301
+ }], DZ_SUCCESSMULTIPLE: [{
302
+ type: Output,
303
+ args: ['successMultiple']
304
+ }], DZ_CANCELED: [{
305
+ type: Output,
306
+ args: ['canceled']
307
+ }], DZ_CANCELEDMULTIPLE: [{
308
+ type: Output,
309
+ args: ['canceledMultiple']
310
+ }], DZ_COMPLETE: [{
311
+ type: Output,
312
+ args: ['complete']
313
+ }], DZ_COMPLETEMULTIPLE: [{
314
+ type: Output,
315
+ args: ['completeMultiple']
316
+ }], DZ_MAXFILESEXCEEDED: [{
317
+ type: Output,
318
+ args: ['maxFilesExceeded']
319
+ }], DZ_MAXFILESREACHED: [{
320
+ type: Output,
321
+ args: ['maxFilesReached']
322
+ }], DZ_QUEUECOMPLETE: [{
323
+ type: Output,
324
+ args: ['queueComplete']
325
+ }], isSingle: [{
326
+ type: HostBinding,
327
+ args: ['class.dz-single']
328
+ }], isMultiple: [{
329
+ type: HostBinding,
330
+ args: ['class.dz-multiple']
331
+ }] } });
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcHpvbmUtd3JhcHBlci9zcmMvbGliL2Ryb3B6b25lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBdUIsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE4QyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuTCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxFQUFpQyxjQUFjLEVBQXFCLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTs7QUFFdkwsTUFJYSxpQkFBaUI7SUFLMUIsb0RBQW9EO0lBQ3BELElBQWEsUUFBUSxDQUFDLEdBQVk7UUFDOUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDWCxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEMsSUFBSSxHQUFHO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO29CQUM3QixJQUFJLENBQUMsUUFBUyxDQUFDLE9BQU8sRUFBRSxDQUFBO2dCQUM1QixDQUFDLENBQUMsQ0FBQTs7Z0JBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxRQUFTLENBQUMsTUFBTSxFQUFFLENBQUE7Z0JBQzNCLENBQUMsQ0FBQyxDQUFBO1NBQ1Q7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtJQUN4QixDQUFD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RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDcEMsQ0FBQyxDQUFDLENBQUE7U0FDTDtRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsUUFBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFBO2FBQzFEO1FBQ0wsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsUUFBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO2FBQzNEO1FBQ0wsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsUUFBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxD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QUFNO3VCQUFDLFNBQVM7Z0JBRW1CLGtCQUFrQjtzQkFBckQsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBR0csVUFBVTtzQkFBckMsTUFBTTt1QkFBQyxTQUFTO2dCQUdtQixrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUdJLFdBQVc7c0JBQXZDLE1BQU07dUJBQUMsVUFBVTtnQkFFbUIsbUJBQW1CO3NCQUF2RCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFHRyxXQUFXO3NCQUF2QyxNQUFNO3VCQUFDLFVBQVU7Z0JBRW1CLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBR1csbUJBQW1CO3NCQUF2RCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFVSxrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUdTLGdCQUFnQjtzQkFBakQsTUFBTTt1QkFBQyxlQUFlO2dCQVNuQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsaUJBQWlCO2dCQU8xQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWUgKi9cbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBEb0NoZWNrLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBLZXlWYWx1ZURpZmZlcnMsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCBEcm9wem9uZSBmcm9tICdkcm9wem9uZSdcbmltcG9ydCB7IERyb3B6b25lQ29uZmlnLCBEcm9wem9uZUV2ZW50LCBEcm9wem9uZUV2ZW50cywgRHJvcHpvbmVMaXN0ZW5lcnMsIGludGVybmFsQ2hhbmdlcywgTlhUX0RST1BaT05FX0NPTkZJRywgTlhUX0RST1BaT05FX0xJU1RFTkVSUywgX0Ryb3B6b25lQ29uZmlnIH0gZnJvbSAnLi9kcm9wem9uZS5pbnRlcmZhY2VzJ1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tueHREcm9wem9uZV0nLFxuICAgIGV4cG9ydEFzOiAnbnh0RHJvcHpvbmUnXG59KVxuZXhwb3J0IGNsYXNzIERyb3B6b25lRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERvQ2hlY2ssIERyb3B6b25lTGlzdGVuZXJzIHtcblxuICAgIHByaXZhdGUgaW5zdGFuY2U/OiBEcm9wem9uZVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZVxuICAgIC8qKiBEaXNhYmxlcyAvIGRldGFjaGVzIERyb3B6b25lIGZyb20gdGhlIGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHZhbCA9ICEhdmFsXG4gICAgICAgIGlmICh2YWwgIT0gdGhpcy5fZGlzYWJsZWQgJiYgdGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKHZhbClcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5kaXNhYmxlKClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UhLmVuYWJsZSgpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbFxuICAgIH1cbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZFxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcmFtcyA9IHRoaXMuZGVmYXVsdHNcbiAgICAgICAgPyBuZXcgX0Ryb3B6b25lQ29uZmlnKHRoaXMuZGVmYXVsdHMpXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgLyoqIENhbiBiZSB1c2VkIHRvIHByb3ZpZGUgb3B0aW9uYWwgY3VzdG9tIGNvbmZpZyAqL1xuICAgIEBJbnB1dCgnbnh0RHJvcHpvbmUnKSBjb25maWc/OiBEcm9wem9uZUNvbmZpZ1xuXG4gICAgcHJpdmF0ZSBjb25maWdEaWZmID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5jb25maWcgfHwge30pLmNyZWF0ZSgpXG4gICAgcHJpdmF0ZSBwYXJhbURpZmYgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLl9wYXJhbXMgfHwge30pLmNyZWF0ZSgpXG5cbiAgICBAT3V0cHV0KCdpbml0JykgcmVhZG9ubHkgRFpfSU5JVCA9IHRoaXMuY29tcG9uZW50Py5EWl9JTklUXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmU+KClcblxuICAgIEBPdXRwdXQoJ2Ryb3AnKSByZWFkb25seSBEWl9EUk9QID0gdGhpcy5jb21wb25lbnQ/LkRaX0RST1BcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnU3RhcnQnKSByZWFkb25seSBEWl9EUkFHU1RBUlQgPSB0aGlzLmNvbXBvbmVudD8uRFpfRFJBR1NUQVJUXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgnZHJhZ0VuZCcpIHJlYWRvbmx5IERaX0RSQUdFTkQgPSB0aGlzLmNvbXBvbmVudD8uRFpfRFJBR0VORFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdFbnRlcicpIHJlYWRvbmx5IERaX0RSQUdFTlRFUiA9IHRoaXMuY29tcG9uZW50Py5EWl9EUkFHRU5URVJcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnT3ZlcicpIHJlYWRvbmx5IERaX0RSQUdPVkVSID0gdGhpcy5jb21wb25lbnQ/LkRaX0RSQUdPVkVSXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgnZHJhZ0xlYXZlJykgcmVhZG9ubHkgRFpfRFJBR0xFQVZFID0gdGhpcy5jb21wb25lbnQ/LkRaX0RSQUdMRUFWRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ3Bhc3RlJykgcmVhZG9ubHkgRFpfUEFTVEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfUEFTVEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcblxuICAgIEBPdXRwdXQoJ3Jlc2V0JykgcmVhZG9ubHkgRFpfUkVTRVQgPSB0aGlzLmNvbXBvbmVudD8uRFpfUkVTRVRcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgICBAT3V0cHV0KCdhZGRlZEZpbGUnKSByZWFkb25seSBEWl9BRERFREZJTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfQURERURGSUxFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnYWRkZWRGaWxlcycpIHJlYWRvbmx5IERaX0FEREVERklMRVMgPSB0aGlzLmNvbXBvbmVudD8uRFpfQURERURGSUxFU1xuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ3JlbW92ZWRGaWxlJykgcmVhZG9ubHkgRFpfUkVNT1ZFREZJTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfUkVNT1ZFREZJTEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCd0aHVtYm5haWwnKSByZWFkb25seSBEWl9USFVNQk5BSUwgPSB0aGlzLmNvbXBvbmVudD8uRFpfVEhVTUJOQUlMXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W0Ryb3B6b25lLkRyb3B6b25lRmlsZSwgc3RyaW5nXT4oKVxuXG4gICAgQE91dHB1dCgnZXJyb3InKSByZWFkb25seSBEWl9FUlJPUiA9IHRoaXMuY29tcG9uZW50Py5EWl9FUlJPUlxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZyB8IEVycm9yXT4oKVxuICAgIEBPdXRwdXQoJ2Vycm9yTXVsdGlwbGUnKSByZWFkb25seSBEWl9FUlJPUk1VTFRJUExFID0gdGhpcy5jb21wb25lbnQ/LkRaX0VSUk9STVVMVElQTEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIHN0cmluZyB8IEVycm9yXT4oKVxuXG4gICAgQE91dHB1dCgncHJvY2Vzc2luZycpIHJlYWRvbmx5IERaX1BST0NFU1NJTkcgPSB0aGlzLmNvbXBvbmVudD8uRFpfUFJPQ0VTU0lOR1xuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ3Byb2Nlc3NpbmdNdWx0aXBsZScpIHJlYWRvbmx5IERaX1BST0NFU1NJTkdNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9QUk9DRVNTSU5HTVVMVElQTEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGVbXT4oKVxuXG4gICAgQE91dHB1dCgndXBsb2FkUHJvZ3Jlc3MnKSByZWFkb25seSBEWl9VUExPQURQUk9HUkVTUyA9IHRoaXMuY29tcG9uZW50Py5EWl9VUExPQURQUk9HUkVTU1xuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIG51bWJlciwgbnVtYmVyXT4oKVxuICAgIEBPdXRwdXQoJ3RvdGFsVXBsb2FkUHJvZ3Jlc3MnKSByZWFkb25seSBEWl9UT1RBTFVQTE9BRFBST0dSRVNTID0gdGhpcy5jb21wb25lbnQ/LkRaX1RPVEFMVVBMT0FEUFJPR1JFU1NcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0+KClcblxuICAgIEBPdXRwdXQoJ3NlbmRpbmcnKSByZWFkb25seSBEWl9TRU5ESU5HID0gdGhpcy5jb21wb25lbnQ/LkRaX1NFTkRJTkdcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBYTUxIdHRwUmVxdWVzdCwgRm9ybURhdGFdPigpXG4gICAgQE91dHB1dCgnc2VuZGluZ011bHRpcGxlJykgcmVhZG9ubHkgRFpfU0VORElOR01VTFRJUExFID0gdGhpcy5jb21wb25lbnQ/LkRaX1NFTkRJTkdNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGVbXSwgWE1MSHR0cFJlcXVlc3QsIEZvcm1EYXRhXT4oKVxuXG4gICAgQE91dHB1dCgnc3VjY2VzcycpIHJlYWRvbmx5IERaX1NVQ0NFU1MgPSB0aGlzLmNvbXBvbmVudD8uRFpfU1VDQ0VTU1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIE9iamVjdCB8IHN0cmluZ10+KClcbiAgICBAT3V0cHV0KCdzdWNjZXNzTXVsdGlwbGUnKSByZWFkb25seSBEWl9TVUNDRVNTTVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfU1VDQ0VTU01VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ2NhbmNlbGVkJykgcmVhZG9ubHkgRFpfQ0FOQ0VMRUQgPSB0aGlzLmNvbXBvbmVudD8uRFpfQ0FOQ0VMRURcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdjYW5jZWxlZE11bHRpcGxlJykgcmVhZG9ubHkgRFpfQ0FOQ0VMRURNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9DQU5DRUxFRE1VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ2NvbXBsZXRlJykgcmVhZG9ubHkgRFpfQ09NUExFVEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfQ09NUExFVEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdjb21wbGV0ZU11bHRpcGxlJykgcmVhZG9ubHkgRFpfQ09NUExFVEVNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9DT01QTEVURU1VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ21heEZpbGVzRXhjZWVkZWQnKSByZWFkb25seSBEWl9NQVhGSUxFU0VYQ0VFREVEID0gdGhpcy5jb21wb25lbnQ/LkRaX01BWEZJTEVTRVhDRUVERURcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdtYXhGaWxlc1JlYWNoZWQnKSByZWFkb25seSBEWl9NQVhGSUxFU1JFQUNIRUQgPSB0aGlzLmNvbXBvbmVudD8uRFpfTUFYRklMRVNSRUFDSEVEXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3F1ZXVlQ29tcGxldGUnKSByZWFkb25seSBEWl9RVUVVRUNPTVBMRVRFID0gdGhpcy5jb21wb25lbnQ/LkRaX1FVRVVFQ09NUExFVEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgICBnZXQgZHJvcHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlXG4gICAgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHotc2luZ2xlJylcbiAgICBnZXQgaXNTaW5nbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbXM/Lm1heEZpbGVzID09PSAxXG4gICAgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHotbXVsdGlwbGUnKVxuICAgIGdldCBpc011bHRpcGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1zPy5tYXhGaWxlcyAhPT0gMVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KE5YVF9EUk9QWk9ORV9DT05GSUcpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdHM/OiBEcm9wem9uZUNvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChOWFRfRFJPUFpPTkVfTElTVEVORVJTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudD86IERyb3B6b25lTGlzdGVuZXJzXG4gICAgKSB7IH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0SW5zdGFuY2UoKVxuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95SW5zdGFuY2UoKVxuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmNvbmZpZ0RpZmYuZGlmZih0aGlzLmNvbmZpZyB8fCB7fSBhcyBhbnkpXG5cbiAgICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdQYXJhbXMgPSB0aGlzLmRlZmF1bHRzXG4gICAgICAgICAgICAgICAgPyBuZXcgX0Ryb3B6b25lQ29uZmlnKHRoaXMuZGVmYXVsdHMpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIGlmIChuZXdQYXJhbXMgJiYgdGhpcy5jb25maWcpXG4gICAgICAgICAgICAgICAgbmV3UGFyYW1zLmFzc2lnbih0aGlzLmNvbmZpZylcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29uZmlnKVxuICAgICAgICAgICAgICAgIG5ld1BhcmFtcyA9IG5ldyBfRHJvcHpvbmVDb25maWcodGhpcy5jb25maWcpXG4gICAgICAgICAgICBjb25zdCBkID0gdGhpcy5wYXJhbURpZmYuZGlmZihuZXdQYXJhbXMgfHwge30gYXMgYW55KVxuICAgICAgICAgICAgaWYgKGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbXMgPSBuZXdQYXJhbXNcbiAgICAgICAgICAgICAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgZC5mb3JFYWNoSXRlbShyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnRlcm5hbENoYW5nZXMuaGFzKHIua2V5IGFzIGFueSkgJiYgci5jdXJyZW50VmFsdWUgIT09IHIucHJldmlvdXNWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lJbnN0YW5jZSgpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdEluc3RhbmNlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcmVzZXQoY2FuY2VsPzogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5yZW1vdmVBbGxGaWxlcyhjYW5jZWwpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0SW5zdGFuY2UoKSB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5fcGFyYW1zKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlID0gbmV3IERyb3B6b25lKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl9wYXJhbXMpXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UhLmRpc2FibGUoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuRFpfSU5JVC5vYnNlcnZlZCkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5EWl9JTklULmVtaXQodGhpcy5pbnN0YW5jZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYXV0byByZXNldCBoYW5kbGluZyBmb3IgZXZlbnRzXG4gICAgICAgIHRoaXMuaW5zdGFuY2UhLm9uKCdzdWNjZXNzJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCh0aGlzLl9wYXJhbXM/LmF1dG9SZXNldCA/PyAtMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpLCB0aGlzLl9wYXJhbXM/LmF1dG9SZXNldClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICB0aGlzLmluc3RhbmNlIS5vbignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoKHRoaXMuX3BhcmFtcz8uZXJyb3JSZXNldCA/PyAtMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpLCB0aGlzLl9wYXJhbXM/LmVycm9yUmVzZXQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZSEub24oJ2NhbmNlbGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCh0aGlzLl9wYXJhbXM/LmNhbmNlbFJlc2V0ID8/IC0xKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc2V0KCksIHRoaXMuX3BhcmFtcz8uY2FuY2VsUmVzZXQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gQWRkIG5hdGl2ZSBEcm9wem9uZSBldmVudCBoYW5kbGluZ1xuICAgICAgICBEcm9wem9uZUV2ZW50cy5mb3JFYWNoKChldmVudE5hbWU6IERyb3B6b25lRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UhLm9uKGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLCAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICBhcmdzID0gKGFyZ3MubGVuZ3RoID09PSAxKSA/IGFyZ3NbMF0gOiBhcmdzXG5cbiAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBgRFpfJHtldmVudE5hbWUudG9VcHBlckNhc2UoKX1gXG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbWl0dGVyID0gdGhpc1tvdXRwdXQgYXMga2V5b2YgRHJvcHpvbmVEaXJlY3RpdmVdIGFzIEV2ZW50RW1pdHRlcjxhbnk+XG5cbiAgICAgICAgICAgICAgICBpZiAoZW1pdHRlci5vYnNlcnZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChhcmdzKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95SW5zdGFuY2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UhLmRlc3Ryb3koKVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxufVxuIl19