valtech-components 2.0.565 → 2.0.566
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.
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +55 -13
- package/esm2022/lib/components/molecules/card/card.component.mjs +125 -82
- package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +48 -18
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +49 -21
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +68 -18
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +49 -19
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/fesm2022/valtech-components.mjs +380 -163
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +24 -5
- package/lib/components/molecules/card/card.component.d.ts +24 -5
- package/lib/components/molecules/email-input/email-input.component.d.ts +25 -6
- package/lib/components/molecules/password-input/password-input.component.d.ts +25 -6
- package/lib/components/molecules/select-input/select-input.component.d.ts +26 -6
- package/lib/components/molecules/text-input/text-input.component.d.ts +26 -26
- package/package.json +1 -1
|
@@ -162,7 +162,7 @@ export class DocsCodeExampleComponent {
|
|
|
162
162
|
</div>
|
|
163
163
|
}
|
|
164
164
|
</div>
|
|
165
|
-
`, isInline: true, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.
|
|
165
|
+
`, isInline: true, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.75em;line-height:1.5;color:#24292f;white-space:inherit;word-break:normal;tab-size:2}.docs-code-example__code .token{text-decoration:none!important}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#6a737d}.docs-code-example__code .token.punctuation{color:#24292f}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#005cc5}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#22863a}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#24292f}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#d73a49}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#6f42c1}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#e36209}@media (max-width: 600px){.docs-code-example{border-radius:8px}.docs-code-example__tab-list{font-size:11px}.docs-code-example__pre{max-height:20rem}.docs-code-example__code{font-size:.7em}}@media (prefers-color-scheme: dark){.docs-code-example{background:#21252b;border-color:#3b4048;box-shadow:0 4px 15px #0009}.docs-code-example__header{background:#21252b;border-color:#3b4048}.docs-code-example__title{color:#c9d1d9}.docs-code-example__preview{background:#161b22;border-color:#3b4048}.docs-code-example__tabs{background:#1a1a1a}.docs-code-example__tab-list{border-color:#3b4048}.docs-code-example__tab{color:#8b949e}.docs-code-example__tab:hover{background:#21252b}.docs-code-example__tab--active{background:#282c34;color:#c9d1d9;border-color:#3b4048;border-bottom-color:#282c34}.docs-code-example__code-panel,.docs-code-example__pre{background:#161b22}.docs-code-example__code{color:#c9d1d9}.docs-code-example__copy-btn{--background: rgba(0, 0, 0, .4)}.docs-code-example__copy-btn:hover{--background: rgba(0, 0, 0, .6)}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#8b949e}.docs-code-example__code .token.punctuation{color:#c9d1d9}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#79c0ff}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#7ee787}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#c9d1d9}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#ff7b72}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#d2a8ff}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#ffa657}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
166
166
|
}
|
|
167
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsCodeExampleComponent, decorators: [{
|
|
168
168
|
type: Component,
|
|
@@ -245,11 +245,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
245
245
|
</div>
|
|
246
246
|
}
|
|
247
247
|
</div>
|
|
248
|
-
`, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.
|
|
248
|
+
`, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.75em;line-height:1.5;color:#24292f;white-space:inherit;word-break:normal;tab-size:2}.docs-code-example__code .token{text-decoration:none!important}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#6a737d}.docs-code-example__code .token.punctuation{color:#24292f}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#005cc5}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#22863a}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#24292f}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#d73a49}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#6f42c1}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#e36209}@media (max-width: 600px){.docs-code-example{border-radius:8px}.docs-code-example__tab-list{font-size:11px}.docs-code-example__pre{max-height:20rem}.docs-code-example__code{font-size:.7em}}@media (prefers-color-scheme: dark){.docs-code-example{background:#21252b;border-color:#3b4048;box-shadow:0 4px 15px #0009}.docs-code-example__header{background:#21252b;border-color:#3b4048}.docs-code-example__title{color:#c9d1d9}.docs-code-example__preview{background:#161b22;border-color:#3b4048}.docs-code-example__tabs{background:#1a1a1a}.docs-code-example__tab-list{border-color:#3b4048}.docs-code-example__tab{color:#8b949e}.docs-code-example__tab:hover{background:#21252b}.docs-code-example__tab--active{background:#282c34;color:#c9d1d9;border-color:#3b4048;border-bottom-color:#282c34}.docs-code-example__code-panel,.docs-code-example__pre{background:#161b22}.docs-code-example__code{color:#c9d1d9}.docs-code-example__copy-btn{--background: rgba(0, 0, 0, .4)}.docs-code-example__copy-btn:hover{--background: rgba(0, 0, 0, .6)}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#8b949e}.docs-code-example__code .token.punctuation{color:#c9d1d9}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#79c0ff}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#7ee787}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#c9d1d9}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#ff7b72}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#d2a8ff}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#ffa657}}\n"] }]
|
|
249
249
|
}], propDecorators: { props: [{
|
|
250
250
|
type: Input
|
|
251
251
|
}], previewTpl: [{
|
|
252
252
|
type: ContentChild,
|
|
253
253
|
args: ['preview']
|
|
254
254
|
}] } });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1jb2RlLWV4YW1wbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9kb2NzLWNvZGUtZXhhbXBsZS9kb2NzLWNvZGUtZXhhbXBsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUscUVBQXFFO0FBQ3JFLE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sK0JBQStCLENBQUM7QUFDdkMsT0FBTywrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8saUNBQWlDLENBQUM7OztBQUV6QyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUV6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBMGJILE1BQU0sT0FBTyx3QkFBd0I7SUF6YnJDO1FBMGJXLFVBQUssR0FBNEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFJN0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxD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c0JBQWxDLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uLCBJb25CdXR0b24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY29weU91dGxpbmUsIGNoZWNrbWFya091dGxpbmUsIG9wZW5PdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgRG9jc0NvZGVFeGFtcGxlTWV0YWRhdGEsIERvY3NDb2RlVGFiIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFByaXNtLmpzIGltcG9ydHMgKHNhbWUgcGF0dGVybiBhcyBjb2RlLWRpc3BsYXkgYW5kIHBsYWluLWNvZGUtYm94KVxuaW1wb3J0ICogYXMgUHJpc20gZnJvbSAncHJpc21qcyc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS10eXBlc2NyaXB0JztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWphdmFzY3JpcHQnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tY3NzJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXNjc3MnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tYmFzaCc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1qc29uJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLW1hcmt1cCc7XG5cbmFkZEljb25zKHsgY29weU91dGxpbmUsIGNoZWNrbWFya091dGxpbmUsIG9wZW5PdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1kb2NzLWNvZGUtZXhhbXBsZVxuICpcbiAqIEEgY29kZSBleGFtcGxlIGNvbXBvbmVudCB3aXRoIHRhYnMsIHByZXZpZXcsIGFuZCBjb3B5IGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy1jb2RlLWV4YW1wbGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ0Jhc2ljIEJ1dHRvbicsXG4gKiAgICAgdGFiczogW1xuICogICAgICAgeyBsYWJlbDogJ0hUTUwnLCBsYW5ndWFnZTogJ2h0bWwnLCBjb2RlOiAnPHZhbC1idXR0b24+Q2xpY2sgbWU8L3ZhbC1idXR0b24+JyB9LFxuICogICAgICAgeyBsYWJlbDogJ1R5cGVTY3JpcHQnLCBsYW5ndWFnZTogJ3R5cGVzY3JpcHQnLCBjb2RlOiAnaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAuLi4nIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogPlxuICogICA8bmctdGVtcGxhdGUgI3ByZXZpZXc+XG4gKiAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInsgbGFiZWw6ICdDbGljayBtZScgfVwiPjwvdmFsLWJ1dHRvbj5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqIDwvdmFsLWRvY3MtY29kZS1leGFtcGxlPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLWNvZGUtZXhhbXBsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvbkJ1dHRvbl0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlXCIgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCI+XG4gICAgICA8IS0tIEhlYWRlciAtLT5cbiAgICAgIEBpZiAocHJvcHMudGl0bGUgfHwgcHJvcHMuZGVzY3JpcHRpb24gfHwgcHJvcHMuZXh0ZXJuYWxMaW5rKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9faGVhZGVyXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy50aXRsZSkge1xuICAgICAgICAgICAgPGg0IGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX3RpdGxlXCI+e3sgcHJvcHMudGl0bGUgfX08L2g0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlX19kZXNjcmlwdGlvblwiPnt7IHByb3BzLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzLmV4dGVybmFsTGluaykge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGlua1wiXG4gICAgICAgICAgICAgIFtocmVmXT1cInByb3BzLmV4dGVybmFsTGluay51cmxcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgcHJvcHMuZXh0ZXJuYWxMaW5rLmxhYmVsIHx8ICdPcGVuIGluIFN0YWNrQmxpdHonIH19XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwib3Blbi1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFByZXZpZXcgLS0+XG4gICAgICBAaWYgKHByZXZpZXdUcGwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlX19wcmV2aWV3XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGFicyAtLT5cbiAgICAgIEBpZiAocHJvcHMudGFicz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fdGFic1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fdGFiLWxpc3RcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgQGZvciAodGFiIG9mIHByb3BzLnRhYnM7IHRyYWNrIHRhYi5sYWJlbDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX3RhYlwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRvY3MtY29kZS1leGFtcGxlX190YWItLWFjdGl2ZV09XCJhY3RpdmVUYWIoKSA9PT0gaVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZVRhYi5zZXQoaSlcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlVGFiKCkgPT09IGlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDb2RlIFBhbmVsIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fY29kZS1wYW5lbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlX19jb2RlLWhlYWRlclwiPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dDb3B5QnV0dG9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX2NvcHktYnRuXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29waWVkKCkgPyAnQ29kZSBjb3BpZWQnIDogJ0NvcHkgY29kZSdcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlDb2RlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICBzbG90PVwiaWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY29waWVkKCkgPyAnY2hlY2ttYXJrLW91dGxpbmUnIDogJ2NvcHktb3V0bGluZSdcIlxuICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwcmVcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fcHJlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRvY3MtY29kZS1leGFtcGxlX19wcmUtLWxpbmUtbnVtYmVyc109XCJwcm9wcy5zaG93TGluZU51bWJlcnNcIlxuICAgICAgICAgICAgPjxjb2RlXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2xhbmd1YWdlLScgKyBjdXJyZW50VGFiKCkubGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhpZ2hsaWdodGVkQ29kZSgpXCJcbiAgICAgICAgICAgID48L2NvZGU+PC9wcmU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmRvY3MtY29kZS1leGFtcGxlIHtcbiAgICAgIG1hcmdpbjogMS41cmVtIDA7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjJmNmY3O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19oZWFkZXIge1xuICAgICAgcGFkZGluZzogMXJlbSAxLjI1cmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmY2Zjc7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIG1hcmdpbjogMCAwIDAuMjVyZW0gMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzFhMWExYSk7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19kZXNjcmlwdGlvbiB7XG4gICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2NjYpO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGluayB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDAuMjVyZW07XG4gICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIGNvbG9yOiAjNTU1O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGluazpob3ZlciB7XG4gICAgICBjb2xvcjogIzFhMWExYTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGluayBpb24taWNvbiB7XG4gICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fcHJldmlldyB7XG4gICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmY2Zjc7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX190YWJzIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmNmY5ZmE7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX190YWItbGlzdCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAycHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YyZjZmNztcbiAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX190YWIge1xuICAgICAgcGFkZGluZzogMTBweCAxOHB4IDhweCAxOHB4O1xuICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsICdTRiBNb25vJywgTW9uYWNvLCBtb25vc3BhY2U7XG4gICAgICBmb250LXNpemU6IDAuOTVlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBjb2xvcjogIzg5OTM5NjtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwIDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMsIGNvbG9yIDAuMnM7XG4gICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZThlZWYyO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fdGFiLS1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGNvbG9yOiAjMTk0MjJkO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2YyZjZmNztcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmZmZmO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLXBhbmVsIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLWhlYWRlciB7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgdG9wOiAxMHB4O1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgei1pbmRleDogMTA7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb3B5LWJ0biB7XG4gICAgICAtLXBhZGRpbmctc3RhcnQ6IDJweDtcbiAgICAgIC0tcGFkZGluZy1lbmQ6IDJweDtcbiAgICAgIG1pbi13aWR0aDogMjhweDtcbiAgICAgIG1pbi1oZWlnaHQ6IDI4cHg7XG4gICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICB3aWR0aDogMjhweDtcbiAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLXBhbmVsOmhvdmVyIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29weS1idG4ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvcHktYnRuOmhvdmVyIHtcbiAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fcHJlIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcbiAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgbWF4LWhlaWdodDogMzByZW07XG4gICAgICBtaW4taGVpZ2h0OiAzcmVtO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19wcmUtLWxpbmUtbnVtYmVycyB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgICBjb3VudGVyLXJlc2V0OiBsaW5lO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCAnU0YgTW9ubycsIE1vbmFjbywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICAgICAgZm9udC1zaXplOiAwLjg1ZW07XG4gICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgY29sb3I6ICMyNDI5MmY7XG4gICAgICB3aGl0ZS1zcGFjZTogaW5oZXJpdDtcbiAgICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgICAgIHRhYi1zaXplOiAyO1xuICAgIH1cblxuICAgIC8qIFByaXNtLmpzIHN5bnRheCBoaWdobGlnaHRpbmcgLSBMaWdodCB0aGVtZSAoR2l0SHViIHN0eWxlKSAqL1xuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jb21tZW50LFxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucHJvbG9nLFxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZG9jdHlwZSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmNkYXRhIHtcbiAgICAgIGNvbG9yOiAjNmE3MzdkO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucHVuY3R1YXRpb24ge1xuICAgICAgY29sb3I6ICMyNDI5MmY7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5wcm9wZXJ0eSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnRhZyxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmJvb2xlYW4sXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5udW1iZXIsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jb25zdGFudCxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnN5bWJvbCxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmRlbGV0ZWQge1xuICAgICAgY29sb3I6ICMwMDVjYzU7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5zZWxlY3RvcixcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0dHItbmFtZSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnN0cmluZyxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmNoYXIsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5idWlsdGluLFxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uaW5zZXJ0ZWQge1xuICAgICAgY29sb3I6ICMyMjg2M2E7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5vcGVyYXRvcixcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmVudGl0eSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnVybCB7XG4gICAgICBjb2xvcjogIzI0MjkyZjtcbiAgICB9XG5cbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0cnVsZSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0dHItdmFsdWUsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5rZXl3b3JkIHtcbiAgICAgIGNvbG9yOiAjZDczYTQ5O1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZnVuY3Rpb24sXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jbGFzcy1uYW1lIHtcbiAgICAgIGNvbG9yOiAjNmY0MmMxO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucmVnZXgsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5pbXBvcnRhbnQsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi52YXJpYWJsZSB7XG4gICAgICBjb2xvcjogI2UzNjIwOTtcbiAgICB9XG5cbiAgICAvKiBSZXNwb25zaXZlICovXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICB9XG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYi1saXN0IHtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgfVxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19wcmUge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyMHJlbTtcbiAgICAgIH1cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIERhcmsgbW9kZSAqL1xuICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMyMTI1MmI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNiNDA0ODtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9faGVhZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzIxMjUyYjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2I0MDQ4O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RpdGxlIHtcbiAgICAgICAgY29sb3I6ICNjOWQxZDk7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fcHJldmlldyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxNjFiMjI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNiNDA0ODtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX190YWJzIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX190YWItbGlzdCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNiNDA0ODtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX190YWIge1xuICAgICAgICBjb2xvcjogIzhiOTQ5ZTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX190YWI6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMjEyNTJiO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYi0tYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzI4MmMzNDtcbiAgICAgICAgY29sb3I6ICNjOWQxZDk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNiNDA0ODtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzI4MmMzNDtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLXBhbmVsIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzE2MWIyMjtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19wcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMTYxYjIyO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUge1xuICAgICAgICBjb2xvcjogI2M5ZDFkOTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb3B5LWJ0biB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvcHktYnRuOmhvdmVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICB9XG5cbiAgICAgIC8qIERhcmsgbW9kZSBzeW50YXggaGlnaGxpZ2h0aW5nICovXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmNvbW1lbnQsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnByb2xvZyxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZG9jdHlwZSxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uY2RhdGEge1xuICAgICAgICBjb2xvcjogIzhiOTQ5ZTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5wdW5jdHVhdGlvbiB7XG4gICAgICAgIGNvbG9yOiAjYzlkMWQ5O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnByb3BlcnR5LFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi50YWcsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmJvb2xlYW4sXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLm51bWJlcixcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uY29uc3RhbnQsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnN5bWJvbCxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZGVsZXRlZCB7XG4gICAgICAgIGNvbG9yOiAjNzljMGZmO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnNlbGVjdG9yLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5hdHRyLW5hbWUsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnN0cmluZyxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uY2hhcixcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uYnVpbHRpbixcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uaW5zZXJ0ZWQge1xuICAgICAgICBjb2xvcjogIzdlZTc4NztcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5vcGVyYXRvcixcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZW50aXR5LFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi51cmwge1xuICAgICAgICBjb2xvcjogI2M5ZDFkOTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5hdHJ1bGUsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0dHItdmFsdWUsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2ZmN2I3MjtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5mdW5jdGlvbixcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uY2xhc3MtbmFtZSB7XG4gICAgICAgIGNvbG9yOiAjZDJhOGZmO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnJlZ2V4LFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5pbXBvcnRhbnQsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnZhcmlhYmxlIHtcbiAgICAgICAgY29sb3I6ICNmZmE2NTc7XG4gICAgICB9XG4gICAgfVxuICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jc0NvZGVFeGFtcGxlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvcHM6IERvY3NDb2RlRXhhbXBsZU1ldGFkYXRhID0geyB0YWJzOiBbXSB9O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3ByZXZpZXcnKSBwcmV2aWV3VHBsPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcm90ZWN0ZWQgYWN0aXZlVGFiID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgY29waWVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgY3VycmVudFRhYigpOiBEb2NzQ29kZVRhYiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGFic1t0aGlzLmFjdGl2ZVRhYigpXSB8fCB7IGxhYmVsOiAnJywgY29kZTogJycsIGxhbmd1YWdlOiAndGV4dCcgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoaWdobGlnaHRlZENvZGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLmN1cnJlbnRUYWIoKTtcbiAgICBjb25zdCBsYW5nID0gdGhpcy5ub3JtYWxpemVMYW5ndWFnZSh0YWIubGFuZ3VhZ2UpO1xuICAgIGNvbnN0IGdyYW1tYXIgPSBQcmlzbS5sYW5ndWFnZXNbbGFuZ107XG5cbiAgICBpZiAoIWdyYW1tYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmVzY2FwZUh0bWwodGFiLmNvZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBQcmlzbS5oaWdobGlnaHQodGFiLmNvZGUsIGdyYW1tYXIsIGxhbmcpO1xuICB9XG5cbiAgYXN5bmMgY29weUNvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuY3VycmVudFRhYigpLmNvZGU7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvZGUpO1xuICAgICAgdGhpcy5jb3BpZWQuc2V0KHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvcGllZC5zZXQoZmFsc2UpLCAyMDAwKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IGNvZGU6JywgZXJyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZUxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsaWFzZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB0czogJ3R5cGVzY3JpcHQnLFxuICAgICAganM6ICdqYXZhc2NyaXB0JyxcbiAgICAgIGh0bWw6ICdtYXJrdXAnLFxuICAgICAgeG1sOiAnbWFya3VwJyxcbiAgICAgIHNoOiAnYmFzaCcsXG4gICAgICBzaGVsbDogJ2Jhc2gnLFxuICAgIH07XG4gICAgcmV0dXJuIGFsaWFzZXNbbGFuZ3VhZ2UudG9Mb3dlckNhc2UoKV0gfHwgbGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXNjYXBlSHRtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi50ZXh0Q29udGVudCA9IHRleHQ7XG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gIH1cbn1cbiJdfQ==
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1jb2RlLWV4YW1wbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9kb2NzLWNvZGUtZXhhbXBsZS9kb2NzLWNvZGUtZXhhbXBsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUscUVBQXFFO0FBQ3JFLE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sK0JBQStCLENBQUM7QUFDdkMsT0FBTywrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8saUNBQWlDLENBQUM7OztBQUV6QyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUV6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBMGJILE1BQU0sT0FBTyx3QkFBd0I7SUF6YnJDO1FBMGJXLFVBQUssR0FBNEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFJN0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxD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c0JBQWxDLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uLCBJb25CdXR0b24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY29weU91dGxpbmUsIGNoZWNrbWFya091dGxpbmUsIG9wZW5PdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgRG9jc0NvZGVFeGFtcGxlTWV0YWRhdGEsIERvY3NDb2RlVGFiIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFByaXNtLmpzIGltcG9ydHMgKHNhbWUgcGF0dGVybiBhcyBjb2RlLWRpc3BsYXkgYW5kIHBsYWluLWNvZGUtYm94KVxuaW1wb3J0ICogYXMgUHJpc20gZnJvbSAncHJpc21qcyc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS10eXBlc2NyaXB0JztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWphdmFzY3JpcHQnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tY3NzJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXNjc3MnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tYmFzaCc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1qc29uJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLW1hcmt1cCc7XG5cbmFkZEljb25zKHsgY29weU91dGxpbmUsIGNoZWNrbWFya091dGxpbmUsIG9wZW5PdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1kb2NzLWNvZGUtZXhhbXBsZVxuICpcbiAqIEEgY29kZSBleGFtcGxlIGNvbXBvbmVudCB3aXRoIHRhYnMsIHByZXZpZXcsIGFuZCBjb3B5IGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy1jb2RlLWV4YW1wbGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ0Jhc2ljIEJ1dHRvbicsXG4gKiAgICAgdGFiczogW1xuICogICAgICAgeyBsYWJlbDogJ0hUTUwnLCBsYW5ndWFnZTogJ2h0bWwnLCBjb2RlOiAnPHZhbC1idXR0b24+Q2xpY2sgbWU8L3ZhbC1idXR0b24+JyB9LFxuICogICAgICAgeyBsYWJlbDogJ1R5cGVTY3JpcHQnLCBsYW5ndWFnZTogJ3R5cGVzY3JpcHQnLCBjb2RlOiAnaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAuLi4nIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogPlxuICogICA8bmctdGVtcGxhdGUgI3ByZXZpZXc+XG4gKiAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInsgbGFiZWw6ICdDbGljayBtZScgfVwiPjwvdmFsLWJ1dHRvbj5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqIDwvdmFsLWRvY3MtY29kZS1leGFtcGxlPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLWNvZGUtZXhhbXBsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvbkJ1dHRvbl0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlXCIgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCI+XG4gICAgICA8IS0tIEhlYWRlciAtLT5cbiAgICAgIEBpZiAocHJvcHMudGl0bGUgfHwgcHJvcHMuZGVzY3JpcHRpb24gfHwgcHJvcHMuZXh0ZXJuYWxMaW5rKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9faGVhZGVyXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy50aXRsZSkge1xuICAgICAgICAgICAgPGg0IGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX3RpdGxlXCI+e3sgcHJvcHMudGl0bGUgfX08L2g0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlX19kZXNjcmlwdGlvblwiPnt7IHByb3BzLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzLmV4dGVybmFsTGluaykge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGlua1wiXG4gICAgICAgICAgICAgIFtocmVmXT1cInByb3BzLmV4dGVybmFsTGluay51cmxcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgcHJvcHMuZXh0ZXJuYWxMaW5rLmxhYmVsIHx8ICdPcGVuIGluIFN0YWNrQmxpdHonIH19XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwib3Blbi1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFByZXZpZXcgLS0+XG4gICAgICBAaWYgKHByZXZpZXdUcGwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlX19wcmV2aWV3XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGFicyAtLT5cbiAgICAgIEBpZiAocHJvcHMudGFicz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fdGFic1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fdGFiLWxpc3RcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgQGZvciAodGFiIG9mIHByb3BzLnRhYnM7IHRyYWNrIHRhYi5sYWJlbDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX3RhYlwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRvY3MtY29kZS1leGFtcGxlX190YWItLWFjdGl2ZV09XCJhY3RpdmVUYWIoKSA9PT0gaVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZVRhYi5zZXQoaSlcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlVGFiKCkgPT09IGlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDb2RlIFBhbmVsIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fY29kZS1wYW5lbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3MtY29kZS1leGFtcGxlX19jb2RlLWhlYWRlclwiPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dDb3B5QnV0dG9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX2NvcHktYnRuXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29waWVkKCkgPyAnQ29kZSBjb3BpZWQnIDogJ0NvcHkgY29kZSdcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlDb2RlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICBzbG90PVwiaWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY29waWVkKCkgPyAnY2hlY2ttYXJrLW91dGxpbmUnIDogJ2NvcHktb3V0bGluZSdcIlxuICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwcmVcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLWNvZGUtZXhhbXBsZV9fcHJlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRvY3MtY29kZS1leGFtcGxlX19wcmUtLWxpbmUtbnVtYmVyc109XCJwcm9wcy5zaG93TGluZU51bWJlcnNcIlxuICAgICAgICAgICAgPjxjb2RlXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2xhbmd1YWdlLScgKyBjdXJyZW50VGFiKCkubGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhpZ2hsaWdodGVkQ29kZSgpXCJcbiAgICAgICAgICAgID48L2NvZGU+PC9wcmU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmRvY3MtY29kZS1leGFtcGxlIHtcbiAgICAgIG1hcmdpbjogMS41cmVtIDA7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjJmNmY3O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19oZWFkZXIge1xuICAgICAgcGFkZGluZzogMXJlbSAxLjI1cmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmY2Zjc7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIG1hcmdpbjogMCAwIDAuMjVyZW0gMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzFhMWExYSk7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19kZXNjcmlwdGlvbiB7XG4gICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2NjYpO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGluayB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDAuMjVyZW07XG4gICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIGNvbG9yOiAjNTU1O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGluazpob3ZlciB7XG4gICAgICBjb2xvcjogIzFhMWExYTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fZXh0ZXJuYWwtbGluayBpb24taWNvbiB7XG4gICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fcHJldmlldyB7XG4gICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmY2Zjc7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX190YWJzIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmNmY5ZmE7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX190YWItbGlzdCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAycHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YyZjZmNztcbiAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX190YWIge1xuICAgICAgcGFkZGluZzogMTBweCAxOHB4IDhweCAxOHB4O1xuICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsICdTRiBNb25vJywgTW9uYWNvLCBtb25vc3BhY2U7XG4gICAgICBmb250LXNpemU6IDAuOTVlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBjb2xvcjogIzg5OTM5NjtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwIDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMsIGNvbG9yIDAuMnM7XG4gICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZThlZWYyO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fdGFiLS1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGNvbG9yOiAjMTk0MjJkO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2YyZjZmNztcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmZmZmO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLXBhbmVsIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLWhlYWRlciB7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgdG9wOiAxMHB4O1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgei1pbmRleDogMTA7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb3B5LWJ0biB7XG4gICAgICAtLXBhZGRpbmctc3RhcnQ6IDJweDtcbiAgICAgIC0tcGFkZGluZy1lbmQ6IDJweDtcbiAgICAgIG1pbi13aWR0aDogMjhweDtcbiAgICAgIG1pbi1oZWlnaHQ6IDI4cHg7XG4gICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICB3aWR0aDogMjhweDtcbiAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlLXBhbmVsOmhvdmVyIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29weS1idG4ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvcHktYnRuOmhvdmVyIHtcbiAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fcHJlIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcbiAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgbWF4LWhlaWdodDogMzByZW07XG4gICAgICBtaW4taGVpZ2h0OiAzcmVtO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19wcmUtLWxpbmUtbnVtYmVycyB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgICBjb3VudGVyLXJlc2V0OiBsaW5lO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCAnU0YgTW9ubycsIE1vbmFjbywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICAgICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgY29sb3I6ICMyNDI5MmY7XG4gICAgICB3aGl0ZS1zcGFjZTogaW5oZXJpdDtcbiAgICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgICAgIHRhYi1zaXplOiAyO1xuICAgIH1cblxuICAgIC8qIFByaXNtLmpzIHN5bnRheCBoaWdobGlnaHRpbmcgLSBMaWdodCB0aGVtZSAoR2l0SHViIHN0eWxlKSAqL1xuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jb21tZW50LFxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucHJvbG9nLFxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZG9jdHlwZSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmNkYXRhIHtcbiAgICAgIGNvbG9yOiAjNmE3MzdkO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucHVuY3R1YXRpb24ge1xuICAgICAgY29sb3I6ICMyNDI5MmY7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5wcm9wZXJ0eSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnRhZyxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmJvb2xlYW4sXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5udW1iZXIsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jb25zdGFudCxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnN5bWJvbCxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmRlbGV0ZWQge1xuICAgICAgY29sb3I6ICMwMDVjYzU7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5zZWxlY3RvcixcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0dHItbmFtZSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnN0cmluZyxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmNoYXIsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5idWlsdGluLFxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uaW5zZXJ0ZWQge1xuICAgICAgY29sb3I6ICMyMjg2M2E7XG4gICAgfVxuXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5vcGVyYXRvcixcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmVudGl0eSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnVybCB7XG4gICAgICBjb2xvcjogIzI0MjkyZjtcbiAgICB9XG5cbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0cnVsZSxcbiAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0dHItdmFsdWUsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5rZXl3b3JkIHtcbiAgICAgIGNvbG9yOiAjZDczYTQ5O1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uZnVuY3Rpb24sXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jbGFzcy1uYW1lIHtcbiAgICAgIGNvbG9yOiAjNmY0MmMxO1xuICAgIH1cblxuICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucmVnZXgsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5pbXBvcnRhbnQsXG4gICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi52YXJpYWJsZSB7XG4gICAgICBjb2xvcjogI2UzNjIwOTtcbiAgICB9XG5cbiAgICAvKiBSZXNwb25zaXZlICovXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICB9XG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYi1saXN0IHtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgfVxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19wcmUge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyMHJlbTtcbiAgICAgIH1cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogRGFyayBtb2RlICovXG4gICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgICAgLmRvY3MtY29kZS1leGFtcGxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzIxMjUyYjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2I0MDQ4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMjEyNTJiO1xuICAgICAgICBib3JkZXItY29sb3I6ICMzYjQwNDg7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fdGl0bGUge1xuICAgICAgICBjb2xvcjogI2M5ZDFkOTtcbiAgICAgIH1cblxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19wcmV2aWV3IHtcbiAgICAgICAgYmFja2dyb3VuZDogIzE2MWIyMjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2I0MDQ4O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYnMge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYi1saXN0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2I0MDQ4O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYiB7XG4gICAgICAgIGNvbG9yOiAjOGI5NDllO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3RhYjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMyMTI1MmI7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fdGFiLS1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMjgyYzM0O1xuICAgICAgICBjb2xvcjogI2M5ZDFkOTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2I0MDQ4O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjMjgyYzM0O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUtcGFuZWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMTYxYjIyO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX3ByZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxNjFiMjI7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSB7XG4gICAgICAgIGNvbG9yOiAjYzlkMWQ5O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvcHktYnRuIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29weS1idG46aG92ZXIge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICAgIH1cblxuICAgICAgLyogRGFyayBtb2RlIHN5bnRheCBoaWdobGlnaHRpbmcgKi9cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uY29tbWVudCxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucHJvbG9nLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5kb2N0eXBlLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jZGF0YSB7XG4gICAgICAgIGNvbG9yOiAjOGI5NDllO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnB1bmN0dWF0aW9uIHtcbiAgICAgICAgY29sb3I6ICNjOWQxZDk7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucHJvcGVydHksXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnRhZyxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uYm9vbGVhbixcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ubnVtYmVyLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jb25zdGFudCxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uc3ltYm9sLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5kZWxldGVkIHtcbiAgICAgICAgY29sb3I6ICM3OWMwZmY7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uc2VsZWN0b3IsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0dHItbmFtZSxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uc3RyaW5nLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jaGFyLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5idWlsdGluLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5pbnNlcnRlZCB7XG4gICAgICAgIGNvbG9yOiAjN2VlNzg3O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLm9wZXJhdG9yLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5lbnRpdHksXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLnVybCB7XG4gICAgICAgIGNvbG9yOiAjYzlkMWQ5O1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmF0cnVsZSxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4uYXR0ci12YWx1ZSxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ua2V5d29yZCB7XG4gICAgICAgIGNvbG9yOiAjZmY3YjcyO1xuICAgICAgfVxuXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmZ1bmN0aW9uLFxuICAgICAgLmRvY3MtY29kZS1leGFtcGxlX19jb2RlIC50b2tlbi5jbGFzcy1uYW1lIHtcbiAgICAgICAgY29sb3I6ICNkMmE4ZmY7XG4gICAgICB9XG5cbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4ucmVnZXgsXG4gICAgICAuZG9jcy1jb2RlLWV4YW1wbGVfX2NvZGUgLnRva2VuLmltcG9ydGFudCxcbiAgICAgIC5kb2NzLWNvZGUtZXhhbXBsZV9fY29kZSAudG9rZW4udmFyaWFibGUge1xuICAgICAgICBjb2xvcjogI2ZmYTY1NztcbiAgICAgIH1cbiAgICB9XG4gIGBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NzQ29kZUV4YW1wbGVDb21wb25lbnQge1xuICBASW5wdXQoKSBwcm9wczogRG9jc0NvZGVFeGFtcGxlTWV0YWRhdGEgPSB7IHRhYnM6IFtdIH07XG5cbiAgQENvbnRlbnRDaGlsZCgncHJldmlldycpIHByZXZpZXdUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByb3RlY3RlZCBhY3RpdmVUYWIgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBjb3BpZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBjdXJyZW50VGFiKCk6IERvY3NDb2RlVGFiIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50YWJzW3RoaXMuYWN0aXZlVGFiKCldIHx8IHsgbGFiZWw6ICcnLCBjb2RlOiAnJywgbGFuZ3VhZ2U6ICd0ZXh0JyB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGhpZ2hsaWdodGVkQ29kZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRhYiA9IHRoaXMuY3VycmVudFRhYigpO1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLm5vcm1hbGl6ZUxhbmd1YWdlKHRhYi5sYW5ndWFnZSk7XG4gICAgY29uc3QgZ3JhbW1hciA9IFByaXNtLmxhbmd1YWdlc1tsYW5nXTtcblxuICAgIGlmICghZ3JhbW1hcikge1xuICAgICAgcmV0dXJuIHRoaXMuZXNjYXBlSHRtbCh0YWIuY29kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByaXNtLmhpZ2hsaWdodCh0YWIuY29kZSwgZ3JhbW1hciwgbGFuZyk7XG4gIH1cblxuICBhc3luYyBjb3B5Q29kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5jdXJyZW50VGFiKCkuY29kZTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29kZSk7XG4gICAgICB0aGlzLmNvcGllZC5zZXQodHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29waWVkLnNldChmYWxzZSksIDIwMDApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvcHkgY29kZTonLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxpYXNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHRzOiAndHlwZXNjcmlwdCcsXG4gICAgICBqczogJ2phdmFzY3JpcHQnLFxuICAgICAgaHRtbDogJ21hcmt1cCcsXG4gICAgICB4bWw6ICdtYXJrdXAnLFxuICAgICAgc2g6ICdiYXNoJyxcbiAgICAgIHNoZWxsOiAnYmFzaCcsXG4gICAgfTtcbiAgICByZXR1cm4gYWxpYXNlc1tsYW5ndWFnZS50b0xvd2VyQ2FzZSgpXSB8fCBsYW5ndWFnZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVIdG1sKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcbiAgfVxufVxuIl19
|
|
@@ -1,38 +1,68 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Component, inject, Input } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { IonInput } from '@ionic/angular/standalone';
|
|
5
|
+
import { PresetService } from '../../../services/presets';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/forms";
|
|
7
8
|
/**
|
|
8
9
|
* val-email-input
|
|
9
10
|
*
|
|
10
11
|
* An email input field integrated with Angular forms.
|
|
11
|
-
*
|
|
12
|
+
* Supports presets for reusable configurations.
|
|
12
13
|
*
|
|
13
|
-
* @example
|
|
14
|
-
* <val-email-input [props]="{ control: myControl, placeholder: '
|
|
14
|
+
* @example With preset (recommended):
|
|
15
|
+
* <val-email-input preset="form-field" [props]="{ control: myControl, placeholder: 'Email' }"></val-email-input>
|
|
15
16
|
*
|
|
16
|
-
* @example
|
|
17
|
-
*
|
|
18
|
-
* // In component
|
|
19
|
-
* emailProps = {
|
|
20
|
-
* control: this.emailControl,
|
|
21
|
-
* placeholder: this.langService.getText('Login', 'emailPlaceholder')
|
|
22
|
-
* };
|
|
23
|
-
* ```
|
|
17
|
+
* @example Static (backwards compatible):
|
|
18
|
+
* <val-email-input [props]="{ control: myControl, placeholder: 'Enter your email' }"></val-email-input>
|
|
24
19
|
*
|
|
25
|
-
* @input
|
|
20
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field')
|
|
21
|
+
* @input props: InputMetadata - Configuration for the input (overrides preset values)
|
|
26
22
|
*/
|
|
27
23
|
export class EmailInputComponent {
|
|
28
|
-
|
|
24
|
+
constructor() {
|
|
25
|
+
this.presets = inject(PresetService);
|
|
26
|
+
/**
|
|
27
|
+
* Input configuration object. Values here override preset values.
|
|
28
|
+
* @type {InputMetadata}
|
|
29
|
+
* @property control - The Angular FormControl for the input.
|
|
30
|
+
* @property placeholder - The placeholder text.
|
|
31
|
+
*/
|
|
32
|
+
this.props = {};
|
|
33
|
+
/**
|
|
34
|
+
* Resolved props after merging preset + explicit props.
|
|
35
|
+
*/
|
|
36
|
+
this.resolvedProps = {};
|
|
37
|
+
}
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
this.resolveProps();
|
|
40
|
+
}
|
|
41
|
+
ngOnChanges(changes) {
|
|
42
|
+
if (changes['preset'] || changes['props']) {
|
|
43
|
+
this.resolveProps();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Merge preset configuration with explicit props.
|
|
48
|
+
* Explicit props take precedence over preset values.
|
|
49
|
+
*/
|
|
50
|
+
resolveProps() {
|
|
51
|
+
const presetProps = this.preset ? this.presets.get('emailInput', this.preset) : {};
|
|
52
|
+
this.resolvedProps = {
|
|
53
|
+
...presetProps,
|
|
54
|
+
...this.props,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
29
57
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: ` <ion-input [formControl]="resolvedProps.control" type="email" [placeholder]="resolvedProps.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
31
59
|
}
|
|
32
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, decorators: [{
|
|
33
61
|
type: Component,
|
|
34
|
-
args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="
|
|
35
|
-
}], propDecorators: {
|
|
62
|
+
args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="resolvedProps.control" type="email" [placeholder]="resolvedProps.placeholder"></ion-input> ` }]
|
|
63
|
+
}], propDecorators: { preset: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], props: [{
|
|
36
66
|
type: Input
|
|
37
67
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9lbWFpbC1pbnB1dC9lbWFpbC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBVTFEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQXRCaEM7UUF1QlUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7Ozs7V0FLRztRQUNNLFVBQUssR0FBMkIsRUFBRSxDQUFDO1FBRTVDOztXQUVHO1FBQ0gsa0JBQWEsR0FBa0IsRUFBbUIsQ0FBQztLQXdCcEQ7SUF0QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUvRyxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDRyxDQUFDO0lBQ3JCLENBQUM7K0dBOUNVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDhJQWxCcEIsd0hBQXdILHlFQUR4SCxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxRQUFROzs0RkFtQjFDLG1CQUFtQjtrQkF0Qi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxZQUM1Qyx3SEFBd0g7OEJBNEJ6SCxNQUFNO3NCQUFkLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25JbnB1dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWVtYWlsLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXRdLFxuICB0ZW1wbGF0ZTogYCA8aW9uLWlucHV0IFtmb3JtQ29udHJvbF09XCJyZXNvbHZlZFByb3BzLmNvbnRyb2xcIiB0eXBlPVwiZW1haWxcIiBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlclwiPjwvaW9uLWlucHV0PiBgLFxuICBzdHlsZVVybHM6IFsnLi9lbWFpbC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWVtYWlsLWlucHV0XG4gKlxuICogQW4gZW1haWwgaW5wdXQgZmllbGQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC1lbWFpbC1pbnB1dCBwcmVzZXQ9XCJmb3JtLWZpZWxkXCIgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBwbGFjZWhvbGRlcjogJ0VtYWlsJyB9XCI+PC92YWwtZW1haWwtaW5wdXQ+XG4gKlxuICogQGV4YW1wbGUgU3RhdGljIChiYWNrd2FyZHMgY29tcGF0aWJsZSk6XG4gKiA8dmFsLWVtYWlsLWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IG15Q29udHJvbCwgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGVtYWlsJyB9XCI+PC92YWwtZW1haWwtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHkgKGUuZy4sICdmb3JtLWZpZWxkJylcbiAqIEBpbnB1dCBwcm9wczogSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnB1dCAob3ZlcnJpZGVzIHByZXNldCB2YWx1ZXMpXG4gKi9cbmV4cG9ydCBjbGFzcyBFbWFpbElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtZW1haWwtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7IGNvbnRyb2w6IGN0cmwgfVwiPjwvdmFsLWVtYWlsLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICogQHR5cGUge0lucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IHBsYWNlaG9sZGVyIC0gVGhlIHBsYWNlaG9sZGVyIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxJbnB1dE1ldGFkYXRhPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlZCBwcm9wcyBhZnRlciBtZXJnaW5nIHByZXNldCArIGV4cGxpY2l0IHByb3BzLlxuICAgKi9cbiAgcmVzb2x2ZWRQcm9wczogSW5wdXRNZXRhZGF0YSA9IHt9IGFzIElucHV0TWV0YWRhdGE7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXQgPyAodGhpcy5wcmVzZXRzLmdldCgnZW1haWxJbnB1dCcsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPElucHV0TWV0YWRhdGE+KSA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgSW5wdXRNZXRhZGF0YTtcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, inject, Input } from '@angular/core';
|
|
2
2
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { IonButton, IonIcon, IonInput } from '@ionic/angular/standalone';
|
|
4
|
+
import { PresetService } from '../../../services/presets';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../../services/icons.service";
|
|
6
7
|
import * as i2 from "@angular/forms";
|
|
@@ -8,35 +9,60 @@ import * as i2 from "@angular/forms";
|
|
|
8
9
|
* val-password-input
|
|
9
10
|
*
|
|
10
11
|
* A password input field with show/hide toggle, integrated with Angular forms.
|
|
11
|
-
*
|
|
12
|
+
* Supports presets for reusable configurations.
|
|
12
13
|
*
|
|
13
|
-
* @example
|
|
14
|
-
* <val-password-input [props]="{ control: myControl, placeholder: '
|
|
14
|
+
* @example With preset (recommended):
|
|
15
|
+
* <val-password-input preset="form-field" [props]="{ control: myControl, placeholder: 'Password' }"></val-password-input>
|
|
15
16
|
*
|
|
16
|
-
* @example
|
|
17
|
-
*
|
|
18
|
-
* // In component
|
|
19
|
-
* passwordProps = {
|
|
20
|
-
* control: this.passwordControl,
|
|
21
|
-
* placeholder: this.langService.getText('Login', 'passwordPlaceholder')
|
|
22
|
-
* };
|
|
23
|
-
* ```
|
|
17
|
+
* @example Static (backwards compatible):
|
|
18
|
+
* <val-password-input [props]="{ control: myControl, placeholder: 'Enter password' }"></val-password-input>
|
|
24
19
|
*
|
|
25
|
-
* @input
|
|
20
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field', 'login')
|
|
21
|
+
* @input props: InputMetadata - Configuration for the input (overrides preset values)
|
|
26
22
|
*/
|
|
27
23
|
export class PasswordInputComponent {
|
|
28
24
|
constructor(icon) {
|
|
25
|
+
this.presets = inject(PresetService);
|
|
26
|
+
/**
|
|
27
|
+
* Input configuration object. Values here override preset values.
|
|
28
|
+
* @type {InputMetadata}
|
|
29
|
+
* @property control - The Angular FormControl for the input.
|
|
30
|
+
* @property placeholder - The placeholder text.
|
|
31
|
+
*/
|
|
32
|
+
this.props = {};
|
|
33
|
+
/**
|
|
34
|
+
* Resolved props after merging preset + explicit props.
|
|
35
|
+
*/
|
|
36
|
+
this.resolvedProps = {};
|
|
29
37
|
this.hidePassword = true;
|
|
30
38
|
}
|
|
31
|
-
ngOnInit() {
|
|
39
|
+
ngOnInit() {
|
|
40
|
+
this.resolveProps();
|
|
41
|
+
}
|
|
42
|
+
ngOnChanges(changes) {
|
|
43
|
+
if (changes['preset'] || changes['props']) {
|
|
44
|
+
this.resolveProps();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Merge preset configuration with explicit props.
|
|
49
|
+
* Explicit props take precedence over preset values.
|
|
50
|
+
*/
|
|
51
|
+
resolveProps() {
|
|
52
|
+
const presetProps = this.preset ? this.presets.get('passwordInput', this.preset) : {};
|
|
53
|
+
this.resolvedProps = {
|
|
54
|
+
...presetProps,
|
|
55
|
+
...this.props,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
32
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordInputComponent, deps: [{ token: i1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PasswordInputComponent, isStandalone: true, selector: "val-password-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PasswordInputComponent, isStandalone: true, selector: "val-password-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
|
|
34
60
|
<div class="input-container">
|
|
35
61
|
<ion-input
|
|
36
62
|
class="sign-in__input-password"
|
|
37
|
-
[formControl]="
|
|
63
|
+
[formControl]="resolvedProps.control"
|
|
38
64
|
[type]="hidePassword ? 'password' : 'text'"
|
|
39
|
-
[placeholder]="
|
|
65
|
+
[placeholder]="resolvedProps.placeholder"
|
|
40
66
|
></ion-input>
|
|
41
67
|
<ion-button color="dark" fill="clear" (click)="hidePassword = !hidePassword" size="small">
|
|
42
68
|
<ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
|
|
@@ -50,16 +76,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
50
76
|
<div class="input-container">
|
|
51
77
|
<ion-input
|
|
52
78
|
class="sign-in__input-password"
|
|
53
|
-
[formControl]="
|
|
79
|
+
[formControl]="resolvedProps.control"
|
|
54
80
|
[type]="hidePassword ? 'password' : 'text'"
|
|
55
|
-
[placeholder]="
|
|
81
|
+
[placeholder]="resolvedProps.placeholder"
|
|
56
82
|
></ion-input>
|
|
57
83
|
<ion-button color="dark" fill="clear" (click)="hidePassword = !hidePassword" size="small">
|
|
58
84
|
<ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
|
|
59
85
|
</ion-button>
|
|
60
86
|
</div>
|
|
61
87
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.input-container{display:flex;align-items:center;flex-direction:row}\n"] }]
|
|
62
|
-
}], ctorParameters: () => [{ type: i1.IconService }], propDecorators: {
|
|
88
|
+
}], ctorParameters: () => [{ type: i1.IconService }], propDecorators: { preset: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], props: [{
|
|
63
91
|
type: Input
|
|
64
92
|
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wYXNzd29yZC1pbnB1dC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFzQjFEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQTJCakMsWUFBWSxJQUFpQjtRQTFCckIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7Ozs7V0FLRztRQUNNLFVBQUssR0FBMkIsRUFBRSxDQUFDO1FBRTVDOztXQUVHO1FBQ0gsa0JBQWEsR0FBa0IsRUFBbUIsQ0FBQztRQUVuRCxpQkFBWSxHQUFHLElBQUksQ0FBQztJQUVZLENBQUM7SUFFakMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVsSCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDRyxDQUFDO0lBQ3JCLENBQUM7K0dBbERVLHNCQUFzQjttR0FBdEIsc0JBQXNCLGlKQTlCdkI7Ozs7Ozs7Ozs7OztHQVlULG92RkFiUyxtQkFBbUIsMFRBQUUsUUFBUSw4ZUFBRSxTQUFTLG9QQUFFLE9BQU87OzRGQStCaEQsc0JBQXNCO2tCQWxDbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFDbEQ7Ozs7Ozs7Ozs7OztHQVlUO2dGQTRCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGFzc3dvcmQtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXQsIElvbkJ1dHRvbiwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICBjbGFzcz1cInNpZ24taW5fX2lucHV0LXBhc3N3b3JkXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlc29sdmVkUHJvcHMuY29udHJvbFwiXG4gICAgICAgIFt0eXBlXT1cImhpZGVQYXNzd29yZCA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlclwiXG4gICAgICA+PC9pb24taW5wdXQ+XG4gICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cImRhcmtcIiBmaWxsPVwiY2xlYXJcIiAoY2xpY2spPVwiaGlkZVBhc3N3b3JkID0gIWhpZGVQYXNzd29yZFwiIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtuYW1lXT1cImhpZGVQYXNzd29yZCA/ICdleWUtb2ZmLW91dGxpbmUnIDogJ2V5ZS1vdXRsaW5lJ1wiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Bhc3N3b3JkLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcGFzc3dvcmQtaW5wdXRcbiAqXG4gKiBBIHBhc3N3b3JkIGlucHV0IGZpZWxkIHdpdGggc2hvdy9oaWRlIHRvZ2dsZSwgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC1wYXNzd29yZC1pbnB1dCBwcmVzZXQ9XCJmb3JtLWZpZWxkXCIgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBwbGFjZWhvbGRlcjogJ1Bhc3N3b3JkJyB9XCI+PC92YWwtcGFzc3dvcmQtaW5wdXQ+XG4gKlxuICogQGV4YW1wbGUgU3RhdGljIChiYWNrd2FyZHMgY29tcGF0aWJsZSk6XG4gKiA8dmFsLXBhc3N3b3JkLWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IG15Q29udHJvbCwgcGxhY2Vob2xkZXI6ICdFbnRlciBwYXNzd29yZCcgfVwiPjwvdmFsLXBhc3N3b3JkLWlucHV0PlxuICpcbiAqIEBpbnB1dCBwcmVzZXQ6IHN0cmluZyAtIE5hbWUgb2YgcHJlc2V0IHRvIGFwcGx5IChlLmcuLCAnZm9ybS1maWVsZCcsICdsb2dpbicpXG4gKiBAaW5wdXQgcHJvcHM6IElucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW5wdXQgKG92ZXJyaWRlcyBwcmVzZXQgdmFsdWVzKVxuICovXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgaW5wdXQgY29uZmlndXJhdGlvbnNcbiAgICogdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhcHAgbGV2ZWwgdmlhIHByb3ZpZGVWYWx0ZWNoUHJlc2V0cygpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiA8dmFsLXBhc3N3b3JkLWlucHV0IHByZXNldD1cImxvZ2luXCIgW3Byb3BzXT1cInsgY29udHJvbDogY3RybCB9XCI+PC92YWwtcGFzc3dvcmQtaW5wdXQ+XG4gICAqL1xuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKiBAdHlwZSB7SW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGlucHV0LlxuICAgKiBAcHJvcGVydHkgcGxhY2Vob2xkZXIgLSBUaGUgcGxhY2Vob2xkZXIgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPElucHV0TWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBJbnB1dE1ldGFkYXRhID0ge30gYXMgSW5wdXRNZXRhZGF0YTtcblxuICBoaWRlUGFzc3dvcmQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGljb246IEljb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0ID8gKHRoaXMucHJlc2V0cy5nZXQoJ3Bhc3N3b3JkSW5wdXQnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxJbnB1dE1ldGFkYXRhPikgOiB7fTtcblxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIElucHV0TWV0YWRhdGE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,14 +3,23 @@ import { ReactiveFormsModule } from '@angular/forms';
|
|
|
3
3
|
import { applyDefaultValueToControl } from '../../../shared/utils/form-defaults';
|
|
4
4
|
import { IonSelect, IonSelectOption } from '@ionic/angular/standalone';
|
|
5
5
|
import { I18nService } from '../../../services/i18n';
|
|
6
|
+
import { PresetService } from '../../../services/presets';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/forms";
|
|
8
9
|
/**
|
|
9
10
|
* val-select-input
|
|
10
11
|
*
|
|
11
12
|
* A select/dropdown input integrated with Angular forms, using Ionic's select component.
|
|
13
|
+
* Supports presets for reusable configurations.
|
|
12
14
|
*
|
|
13
|
-
* @example
|
|
15
|
+
* @example With preset (recommended):
|
|
16
|
+
* <val-select-input preset="form-field" [props]="{
|
|
17
|
+
* control: myControl,
|
|
18
|
+
* label: 'Seleccionar',
|
|
19
|
+
* options: [{ id: '1', name: 'Opción 1' }]
|
|
20
|
+
* }"></val-select-input>
|
|
21
|
+
*
|
|
22
|
+
* @example Static (backwards compatible):
|
|
14
23
|
* <val-select-input [props]="{
|
|
15
24
|
* control: myControl,
|
|
16
25
|
* label: 'Seleccionar',
|
|
@@ -19,39 +28,78 @@ import * as i1 from "@angular/forms";
|
|
|
19
28
|
* okText: 'Aceptar'
|
|
20
29
|
* }"></val-select-input>
|
|
21
30
|
*
|
|
22
|
-
* @input
|
|
31
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field')
|
|
32
|
+
* @input props: InputMetadata - Configuration for the select input (overrides preset values)
|
|
23
33
|
*/
|
|
24
34
|
export class SearchSelectorComponent {
|
|
25
35
|
constructor() {
|
|
26
36
|
this.i18n = inject(I18nService);
|
|
37
|
+
this.presets = inject(PresetService);
|
|
38
|
+
/**
|
|
39
|
+
* Input configuration object. Values here override preset values.
|
|
40
|
+
* @type {InputMetadata}
|
|
41
|
+
* @property control - The Angular FormControl for the select input.
|
|
42
|
+
* @property label - The label for the select.
|
|
43
|
+
* @property options - The available options for the select.
|
|
44
|
+
* @property placeholder - The placeholder text.
|
|
45
|
+
* @property modalHeader - Custom header text for the modal (optional, uses label if not provided).
|
|
46
|
+
* @property cancelText - Custom cancel button text (default: 'Cancelar').
|
|
47
|
+
* @property okText - Custom OK button text (default: 'Aceptar').
|
|
48
|
+
*/
|
|
49
|
+
this.props = {};
|
|
50
|
+
/**
|
|
51
|
+
* Resolved props after merging preset + explicit props.
|
|
52
|
+
*/
|
|
53
|
+
this.resolvedProps = {};
|
|
27
54
|
}
|
|
28
55
|
ngOnInit() {
|
|
29
|
-
|
|
30
|
-
|
|
56
|
+
this.resolveProps();
|
|
57
|
+
this.setupComponent();
|
|
58
|
+
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
if (changes['preset'] || changes['props']) {
|
|
61
|
+
this.resolveProps();
|
|
62
|
+
this.setupComponent();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Merge preset configuration with explicit props.
|
|
67
|
+
* Explicit props take precedence over preset values.
|
|
68
|
+
*/
|
|
69
|
+
resolveProps() {
|
|
70
|
+
const presetProps = this.preset ? this.presets.get('selectInput', this.preset) : {};
|
|
71
|
+
this.resolvedProps = {
|
|
72
|
+
...presetProps,
|
|
73
|
+
...this.props,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
setupComponent() {
|
|
77
|
+
if (this.resolvedProps?.withDefault || this.resolvedProps?.value) {
|
|
78
|
+
applyDefaultValueToControl(this.resolvedProps);
|
|
31
79
|
}
|
|
32
80
|
// Set modal header from props or use label as fallback, then i18n default
|
|
33
|
-
const headerText = this.
|
|
81
|
+
const headerText = this.resolvedProps.modalHeader || this.resolvedProps.label || this.i18n.t('selectOption');
|
|
34
82
|
this.customModalOptions = {
|
|
35
83
|
header: headerText,
|
|
36
84
|
breakpoints: [0, 0.6],
|
|
37
85
|
initialBreakpoint: 0.6,
|
|
38
86
|
};
|
|
39
87
|
// Set button texts from props or use i18n defaults
|
|
40
|
-
this.cancelText = this.
|
|
41
|
-
this.okText = this.
|
|
88
|
+
this.cancelText = this.resolvedProps.cancelText || this.i18n.t('cancel');
|
|
89
|
+
this.okText = this.resolvedProps.okText || this.i18n.t('ok');
|
|
42
90
|
}
|
|
43
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SearchSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SearchSelectorComponent, isStandalone: true, selector: "val-select-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SearchSelectorComponent, isStandalone: true, selector: "val-select-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
|
|
45
93
|
<ion-select
|
|
46
|
-
[formControl]="
|
|
47
|
-
[label]="
|
|
94
|
+
[formControl]="resolvedProps.control"
|
|
95
|
+
[label]="resolvedProps.label"
|
|
48
96
|
[interfaceOptions]="customModalOptions"
|
|
49
97
|
interface="modal"
|
|
50
|
-
[placeholder]="[
|
|
98
|
+
[placeholder]="[resolvedProps.placeholder]"
|
|
51
99
|
[cancelText]="cancelText"
|
|
52
100
|
[okText]="okText"
|
|
53
101
|
>
|
|
54
|
-
@for (o of
|
|
102
|
+
@for (o of resolvedProps.options; track o.id) {
|
|
55
103
|
<ion-select-option [value]="o.id">{{ o.name }}</ion-select-option>
|
|
56
104
|
}
|
|
57
105
|
</ion-select>
|
|
@@ -61,20 +109,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
61
109
|
type: Component,
|
|
62
110
|
args: [{ selector: 'val-select-input', standalone: true, imports: [ReactiveFormsModule, IonSelect, IonSelectOption], template: `
|
|
63
111
|
<ion-select
|
|
64
|
-
[formControl]="
|
|
65
|
-
[label]="
|
|
112
|
+
[formControl]="resolvedProps.control"
|
|
113
|
+
[label]="resolvedProps.label"
|
|
66
114
|
[interfaceOptions]="customModalOptions"
|
|
67
115
|
interface="modal"
|
|
68
|
-
[placeholder]="[
|
|
116
|
+
[placeholder]="[resolvedProps.placeholder]"
|
|
69
117
|
[cancelText]="cancelText"
|
|
70
118
|
[okText]="okText"
|
|
71
119
|
>
|
|
72
|
-
@for (o of
|
|
120
|
+
@for (o of resolvedProps.options; track o.id) {
|
|
73
121
|
<ion-select-option [value]="o.id">{{ o.name }}</ion-select-option>
|
|
74
122
|
}
|
|
75
123
|
</ion-select>
|
|
76
124
|
` }]
|
|
77
|
-
}], propDecorators: {
|
|
125
|
+
}], propDecorators: { preset: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], props: [{
|
|
78
128
|
type: Input
|
|
79
129
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvc2VsZWN0LWlucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQXdCMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUE5Q3BDO1FBK0NVLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7Ozs7Ozs7OztXQVVHO1FBQ00sVUFBSyxHQUEyQixFQUFFLENBQUM7UUFFNUM7O1dBRUc7UUFDSCxrQkFBYSxHQUFrQixFQUFtQixDQUFDO0tBaURwRDtJQTNDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUE0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFaEgsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixHQUFHLFdBQVc7WUFDZCxHQUFHLElBQUksQ0FBQyxLQUFLO1NBQ0csQ0FBQztJQUNyQixDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakUsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCwwRUFBMEU7UUFDMUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0csSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3hCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7WUFDckIsaUJBQWlCLEVBQUUsR0FBRztTQUN2QixDQUFDO1FBRUYsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQTdFVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwrSUExQ3hCOzs7Ozs7Ozs7Ozs7OztHQWNULHlFQWZTLG1CQUFtQiwwVEFBRSxTQUFTLGtWQUFFLGVBQWU7OzRGQTJDOUMsdUJBQXVCO2tCQTlDbkMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxZQUNoRDs7Ozs7Ozs7Ozs7Ozs7R0FjVDs4QkF1Q1EsTUFBTTtzQkFBZCxLQUFLO2dCQWFHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9mb3JtLWRlZmF1bHRzJztcbmltcG9ydCB7IElvblNlbGVjdCwgSW9uU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlbGVjdC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25TZWxlY3QsIElvblNlbGVjdE9wdGlvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1zZWxlY3RcbiAgICAgIFtmb3JtQ29udHJvbF09XCJyZXNvbHZlZFByb3BzLmNvbnRyb2xcIlxuICAgICAgW2xhYmVsXT1cInJlc29sdmVkUHJvcHMubGFiZWxcIlxuICAgICAgW2ludGVyZmFjZU9wdGlvbnNdPVwiY3VzdG9tTW9kYWxPcHRpb25zXCJcbiAgICAgIGludGVyZmFjZT1cIm1vZGFsXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJbcmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlcl1cIlxuICAgICAgW2NhbmNlbFRleHRdPVwiY2FuY2VsVGV4dFwiXG4gICAgICBbb2tUZXh0XT1cIm9rVGV4dFwiXG4gICAgPlxuICAgICAgQGZvciAobyBvZiByZXNvbHZlZFByb3BzLm9wdGlvbnM7IHRyYWNrIG8uaWQpIHtcbiAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJvLmlkXCI+e3sgby5uYW1lIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgIH1cbiAgICA8L2lvbi1zZWxlY3Q+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXNlbGVjdC1pbnB1dFxuICpcbiAqIEEgc2VsZWN0L2Ryb3Bkb3duIGlucHV0IGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLCB1c2luZyBJb25pYydzIHNlbGVjdCBjb21wb25lbnQuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC1zZWxlY3QtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7XG4gKiAgIGNvbnRyb2w6IG15Q29udHJvbCxcbiAqICAgbGFiZWw6ICdTZWxlY2Npb25hcicsXG4gKiAgIG9wdGlvbnM6IFt7IGlkOiAnMScsIG5hbWU6ICdPcGNpw7NuIDEnIH1dXG4gKiB9XCI+PC92YWwtc2VsZWN0LWlucHV0PlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoYmFja3dhcmRzIGNvbXBhdGlibGUpOlxuICogPHZhbC1zZWxlY3QtaW5wdXQgW3Byb3BzXT1cIntcbiAqICAgY29udHJvbDogbXlDb250cm9sLFxuICogICBsYWJlbDogJ1NlbGVjY2lvbmFyJyxcbiAqICAgb3B0aW9uczogW3sgaWQ6ICcxJywgbmFtZTogJ09wY2nDs24gMScgfV0sXG4gKiAgIGNhbmNlbFRleHQ6ICdDYW5jZWxhcicsXG4gKiAgIG9rVGV4dDogJ0FjZXB0YXInXG4gKiB9XCI+PC92YWwtc2VsZWN0LWlucHV0PlxuICpcbiAqIEBpbnB1dCBwcmVzZXQ6IHN0cmluZyAtIE5hbWUgb2YgcHJlc2V0IHRvIGFwcGx5IChlLmcuLCAnZm9ybS1maWVsZCcpXG4gKiBAaW5wdXQgcHJvcHM6IElucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgc2VsZWN0IGlucHV0IChvdmVycmlkZXMgcHJlc2V0IHZhbHVlcylcbiAqL1xuZXhwb3J0IGNsYXNzIFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtc2VsZWN0LWlucHV0IHByZXNldD1cImZvcm0tZmllbGRcIiBbcHJvcHNdPVwieyBjb250cm9sOiBjdHJsLCBvcHRpb25zOiBvcHRzIH1cIj48L3ZhbC1zZWxlY3QtaW5wdXQ+XG4gICAqL1xuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKiBAdHlwZSB7SW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHByb3BlcnR5IGxhYmVsIC0gVGhlIGxhYmVsIGZvciB0aGUgc2VsZWN0LlxuICAgKiBAcHJvcGVydHkgb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBmb3IgdGhlIHNlbGVjdC5cbiAgICogQHByb3BlcnR5IHBsYWNlaG9sZGVyIC0gVGhlIHBsYWNlaG9sZGVyIHRleHQuXG4gICAqIEBwcm9wZXJ0eSBtb2RhbEhlYWRlciAtIEN1c3RvbSBoZWFkZXIgdGV4dCBmb3IgdGhlIG1vZGFsIChvcHRpb25hbCwgdXNlcyBsYWJlbCBpZiBub3QgcHJvdmlkZWQpLlxuICAgKiBAcHJvcGVydHkgY2FuY2VsVGV4dCAtIEN1c3RvbSBjYW5jZWwgYnV0dG9uIHRleHQgKGRlZmF1bHQ6ICdDYW5jZWxhcicpLlxuICAgKiBAcHJvcGVydHkgb2tUZXh0IC0gQ3VzdG9tIE9LIGJ1dHRvbiB0ZXh0IChkZWZhdWx0OiAnQWNlcHRhcicpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8SW5wdXRNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IElucHV0TWV0YWRhdGEgPSB7fSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gIGN1c3RvbU1vZGFsT3B0aW9uczogeyBoZWFkZXI6IHN0cmluZzsgYnJlYWtwb2ludHM6IG51bWJlcltdOyBpbml0aWFsQnJlYWtwb2ludDogbnVtYmVyIH07XG4gIGNhbmNlbFRleHQ6IHN0cmluZztcbiAgb2tUZXh0OiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0ID8gKHRoaXMucHJlc2V0cy5nZXQoJ3NlbGVjdElucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8SW5wdXRNZXRhZGF0YT4pIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzPy53aXRoRGVmYXVsdCB8fCB0aGlzLnJlc29sdmVkUHJvcHM/LnZhbHVlKSB7XG4gICAgICBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCh0aGlzLnJlc29sdmVkUHJvcHMpO1xuICAgIH1cblxuICAgIC8vIFNldCBtb2RhbCBoZWFkZXIgZnJvbSBwcm9wcyBvciB1c2UgbGFiZWwgYXMgZmFsbGJhY2ssIHRoZW4gaTE4biBkZWZhdWx0XG4gICAgY29uc3QgaGVhZGVyVGV4dCA9IHRoaXMucmVzb2x2ZWRQcm9wcy5tb2RhbEhlYWRlciB8fCB0aGlzLnJlc29sdmVkUHJvcHMubGFiZWwgfHwgdGhpcy5pMThuLnQoJ3NlbGVjdE9wdGlvbicpO1xuXG4gICAgdGhpcy5jdXN0b21Nb2RhbE9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXI6IGhlYWRlclRleHQsXG4gICAgICBicmVha3BvaW50czogWzAsIDAuNl0sXG4gICAgICBpbml0aWFsQnJlYWtwb2ludDogMC42LFxuICAgIH07XG5cbiAgICAvLyBTZXQgYnV0dG9uIHRleHRzIGZyb20gcHJvcHMgb3IgdXNlIGkxOG4gZGVmYXVsdHNcbiAgICB0aGlzLmNhbmNlbFRleHQgPSB0aGlzLnJlc29sdmVkUHJvcHMuY2FuY2VsVGV4dCB8fCB0aGlzLmkxOG4udCgnY2FuY2VsJyk7XG4gICAgdGhpcy5va1RleHQgPSB0aGlzLnJlc29sdmVkUHJvcHMub2tUZXh0IHx8IHRoaXMuaTE4bi50KCdvaycpO1xuICB9XG59XG4iXX0=
|