@acrodata/gui
Version: 
JSON powered GUI for configurable panels.
100 lines • 14.3 kB
JavaScript
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/icon";
import * as i2 from "@angular/platform-browser";
export const svgIcons = {
    horizontal: `
  <svg viewBox="0 0 24 24">
    <path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z"></path>
  </svg>
  `,
    vertical: `
  <svg viewBox="0 0 24 24">
    <path d="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z"></path>
  </svg>
  `,
    add: `
  <svg viewBox="0 0 24 24">
    <path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"></path>
  </svg>
  `,
    delete: `
  <svg viewBox="0 0 24 24">
    <path d="M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z"></path>
  </svg>
  `,
    copy: `
  <svg viewBox="0 0 24 24">
    <path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path>
  </svg>
  `,
    link: `
  <svg viewBox="0 0 24 24">
    <path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path>
  </svg>
  `,
    clear: `
  <svg viewBox="0 0 24 24">
    <path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
  </svg>
  `,
    file: `
  <svg viewBox="0 0 24 24">
    <path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"></path>
  </svg>
  `,
    upload: `
  <svg viewBox="0 0 24 24">
    <path d="M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z"></path>
  </svg>
  `,
    expand: `
  <svg viewBox="0 0 24 24">
    <path fill="currentColor" d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z"></path>
  </svg>`,
    wrap: `
  <svg viewBox="0 0 24 24">
    <path fill="currentColor" d="M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z"></path>
  </svg>`,
    solid: `
  <svg viewBox="0 0 24 24">
    <path fill="currentColor" fill-rule="evenodd" d="M9 9h6v6H9z"></path>
    <path fill="currentColor" fill-rule="evenodd" d="M8 7h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1M6 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm3 7V9h6v6zM8 8.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z"></path>
  </svg>`,
    gradient: `
  <svg viewBox="0 0 24 24">
    <path fill="currentColor" fill-rule="evenodd" d="M8 7h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1M6 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm3.75.875a.875.875 0 1 1-1.75 0 .875.875 0 0 1 1.75 0m3.791.625a.625.625 0 1 0 0-1.25.625.625 0 0 0 0 1.25m-1.458.875a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m0 3.12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.458 2.245a.625.625 0 1 0 0-1.25.625.625 0 0 0 0 1.25m.625-3.865a.625.625 0 1 1-1.25 0 .625.625 0 0 1 1.25 0M8.875 15.99a.875.875 0 1 0 0-1.75.875.875 0 0 0 0 1.75m.875-4.115a.875.875 0 1 1-1.75 0 .875.875 0 0 1 1.75 0m5.75-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m.5 2.623a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"></path>
  </svg>`,
    image: `
  <svg viewBox="0 0 24 24">
    <path fill="currentColor" fill-rule="evenodd" d="M16 7H8a1 1 0 0 0-1 1v5.668l2.521-2.522a.5.5 0 0 1 .708 0l5.85 5.85A1 1 0 0 0 17 16V8a1 1 0 0 0-1-1M6 14.875V16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2zM8 17h6.668l-4.793-4.793L7 15.082V16a1 1 0 0 0 1 1m7-7a1 1 0 1 1-2 0 1 1 0 0 1 2 0m1 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0"></path>
  </svg>
  `,
};
/** Injection token that can be used to provide the default icons. */
export const GUI_ICONS_CONFIG = new InjectionToken('gui-icons-config');
export class GuiIconsRegistry {
    constructor(_iconRegistry, _sanitizer, _defaultIcons) {
        this._iconRegistry = _iconRegistry;
        this._sanitizer = _sanitizer;
        this._defaultIcons = _defaultIcons;
    }
    add(...iconNames) {
        const icons = Object.assign(svgIcons, this._defaultIcons);
        iconNames.forEach(k => {
            this._iconRegistry.addSvgIconLiteral(k, this._sanitizer.bypassSecurityTrustHtml(icons[k]));
        });
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiIconsRegistry, deps: [{ token: i1.MatIconRegistry }, { token: i2.DomSanitizer }, { token: GUI_ICONS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiIconsRegistry, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiIconsRegistry, decorators: [{
            type: Injectable,
            args: [{ providedIn: 'root' }]
        }], ctorParameters: () => [{ type: i1.MatIconRegistry }, { type: i2.DomSanitizer }, { type: undefined, decorators: [{
                    type: Optional
                }, {
                    type: Inject,
                    args: [GUI_ICONS_CONFIG]
                }] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpLWljb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZ3VpL2d1aS1pY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTdFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixVQUFVLEVBQUU7Ozs7R0FJWDtJQUNELFFBQVEsRUFBRTs7OztHQUlUO0lBQ0QsR0FBRyxFQUFFOzs7O0dBSUo7SUFDRCxNQUFNLEVBQUU7Ozs7R0FJUDtJQUNELElBQUksRUFBRTs7OztHQUlMO0lBQ0QsSUFBSSxFQUFFOzs7O0dBSUw7SUFDRCxLQUFLLEVBQUU7Ozs7R0FJTjtJQUNELElBQUksRUFBRTs7OztHQUlMO0lBQ0QsTUFBTSxFQUFFOzs7O0dBSVA7SUFDRCxNQUFNLEVBQUU7OztTQUdEO0lBQ1AsSUFBSSxFQUFFOzs7U0FHQztJQUNQLEtBQUssRUFBRTs7OztTQUlBO0lBQ1AsUUFBUSxFQUFFOzs7U0FHSDtJQUNQLEtBQUssRUFBRTs7OztHQUlOO0NBQ0YsQ0FBQztBQU1GLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsa0JBQWtCLENBQUMsQ0FBQztBQUd2RixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ1UsYUFBOEIsRUFDOUIsVUFBd0IsRUFDYyxhQUE4QjtRQUZwRSxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUNjLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtJQUMzRSxDQUFDO0lBRUosR0FBRyxDQUFDLEdBQUcsU0FBd0I7UUFDN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FaVSxnQkFBZ0IsNkVBSUwsZ0JBQWdCO21IQUozQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBSzdCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmV4cG9ydCBjb25zdCBzdmdJY29ucyA9IHtcbiAgaG9yaXpvbnRhbDogYFxuICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aCBkPVwiTTE2LDEyQTIsMiAwIDAsMSAxOCwxMEEyLDIgMCAwLDEgMjAsMTJBMiwyIDAgMCwxIDE4LDE0QTIsMiAwIDAsMSAxNiwxMk0xMCwxMkEyLDIgMCAwLDEgMTIsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxNEEyLDIgMCAwLDEgMTAsMTJNNCwxMkEyLDIgMCAwLDEgNiwxMEEyLDIgMCAwLDEgOCwxMkEyLDIgMCAwLDEgNiwxNEEyLDIgMCAwLDEgNCwxMlpcIj48L3BhdGg+XG4gIDwvc3ZnPlxuICBgLFxuICB2ZXJ0aWNhbDogYFxuICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aCBkPVwiTTEyLDE2QTIsMiAwIDAsMSAxNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4QTIsMiAwIDAsMSAxMiwxNk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsOEEyLDIgMCAwLDEgMTAsNkEyLDIgMCAwLDEgMTIsNFpcIj48L3BhdGg+XG4gIDwvc3ZnPlxuICBgLFxuICBhZGQ6IGBcbiAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgPHBhdGggZD1cIk0xOSwxM0gxM1YxOUgxMVYxM0g1VjExSDExVjVIMTNWMTFIMTlWMTNaXCI+PC9wYXRoPlxuICA8L3N2Zz5cbiAgYCxcbiAgZGVsZXRlOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGQ9XCJNOSwzVjRINFY2SDVWMTlBMiwyIDAgMCwwIDcsMjFIMTdBMiwyIDAgMCwwIDE5LDE5VjZIMjBWNEgxNVYzSDlNNyw2SDE3VjE5SDdWNk05LDhWMTdIMTFWOEg5TTEzLDhWMTdIMTVWOEgxM1pcIj48L3BhdGg+XG4gIDwvc3ZnPlxuICBgLFxuICBjb3B5OiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE5LDIxSDhWN0gxOU0xOSw1SDhBMiwyIDAgMCwwIDYsN1YyMUEyLDIgMCAwLDAgOCwyM0gxOUEyLDIgMCAwLDAgMjEsMjFWN0EyLDIgMCAwLDAgMTksNU0xNiwxSDRBMiwyIDAgMCwwIDIsM1YxN0g0VjNIMTZWMVpcIj48L3BhdGg+XG4gIDwvc3ZnPlxuICBgLFxuICBsaW5rOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCI+PC9wYXRoPlxuICA8L3N2Zz5cbiAgYCxcbiAgY2xlYXI6IGBcbiAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgPHBhdGggZD1cIk0xOSw2LjQxTDE3LjU5LDVMMTIsMTAuNTlMNi40MSw1TDUsNi40MUwxMC41OSwxMkw1LDE3LjU5TDYuNDEsMTlMMTIsMTMuNDFMMTcuNTksMTlMMTksMTcuNTlMMTMuNDEsMTJMMTksNi40MVpcIj48L3BhdGg+XG4gIDwvc3ZnPlxuICBgLFxuICBmaWxlOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGQ9XCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xOCwyMEg2VjRIMTNWOUgxOFYyMFpcIj48L3BhdGg+XG4gIDwvc3ZnPlxuICBgLFxuICB1cGxvYWQ6IGBcbiAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgPHBhdGggZD1cIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdDMjIgMTguMTEgMjEuMTEgMTkgMjAgMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjEyTTEyIDJMNi40NiA3LjQ2TDcuODggOC44OEwxMSA1Ljc1VjE1SDEzVjUuNzVMMTYuMTMgOC44OEwxNy41NSA3LjQ1TDEyIDJaXCI+PC9wYXRoPlxuICA8L3N2Zz5cbiAgYCxcbiAgZXhwYW5kOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEwLDIxVjE5SDYuNDFMMTAuOTEsMTQuNUw5LjUsMTMuMDlMNSwxNy41OVYxNEgzVjIxSDEwTTE0LjUsMTAuOTFMMTksNi40MVYxMEgyMVYzSDE0VjVIMTcuNTlMMTMuMDksOS41TDE0LjUsMTAuOTFaXCI+PC9wYXRoPlxuICA8L3N2Zz5gLFxuICB3cmFwOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTIxLDVIM1Y3SDIxVjVNMywxOUgxMFYxN0gzVjE5TTMsMTNIMThDMTksMTMgMjAsMTMuNDMgMjAsMTVDMjAsMTYuNTcgMTksMTcgMTgsMTdIMTZWMTVMMTIsMThMMTYsMjFWMTlIMThDMjAuOTUsMTkgMjIsMTcuNzMgMjIsMTVDMjIsMTIuMjggMjEsMTEgMTgsMTFIM1YxM1pcIj48L3BhdGg+XG4gIDwvc3ZnPmAsXG4gIHNvbGlkOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk05IDloNnY2SDl6XCI+PC9wYXRoPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04IDdoOGExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMUg4YTEgMSAwIDAgMS0xLTFWOGExIDEgMCAwIDEgMS0xTTYgOGEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIOGEyIDIgMCAwIDEtMi0yem0zIDdWOWg2djZ6TTggOC41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIC41LjV2N2EuNS41IDAgMCAxLS41LjVoLTdhLjUuNSAwIDAgMS0uNS0uNXpcIj48L3BhdGg+XG4gIDwvc3ZnPmAsXG4gIGdyYWRpZW50OiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04IDdoOGExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMUg4YTEgMSAwIDAgMS0xLTFWOGExIDEgMCAwIDEgMS0xTTYgOGEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIOGEyIDIgMCAwIDEtMi0yem0zLjc1Ljg3NWEuODc1Ljg3NSAwIDEgMS0xLjc1IDAgLjg3NS44NzUgMCAwIDEgMS43NSAwbTMuNzkxLjYyNWEuNjI1LjYyNSAwIDEgMCAwLTEuMjUuNjI1LjYyNSAwIDAgMCAwIDEuMjVtLTEuNDU4Ljg3NWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwbTAgMy4xMmEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwbTEuNDU4IDIuMjQ1YS42MjUuNjI1IDAgMSAwIDAtMS4yNS42MjUuNjI1IDAgMCAwIDAgMS4yNW0uNjI1LTMuODY1YS42MjUuNjI1IDAgMSAxLTEuMjUgMCAuNjI1LjYyNSAwIDAgMSAxLjI1IDBNOC44NzUgMTUuOTlhLjg3NS44NzUgMCAxIDAgMC0xLjc1Ljg3NS44NzUgMCAwIDAgMCAxLjc1bS44NzUtNC4xMTVhLjg3NS44NzUgMCAxIDEtMS43NSAwIC44NzUuODc1IDAgMCAxIDEuNzUgMG01Ljc1LTFhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDFtLjUgMi42MjNhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDBcIj48L3BhdGg+XG4gIDwvc3ZnPmAsXG4gIGltYWdlOiBgXG4gIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNiA3SDhhMSAxIDAgMCAwLTEgMXY1LjY2OGwyLjUyMS0yLjUyMmEuNS41IDAgMCAxIC43MDggMGw1Ljg1IDUuODVBMSAxIDAgMCAwIDE3IDE2VjhhMSAxIDAgMCAwLTEtMU02IDE0Ljg3NVYxNmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJIOGEyIDIgMCAwIDAtMiAyek04IDE3aDYuNjY4bC00Ljc5My00Ljc5M0w3IDE1LjA4MlYxNmExIDEgMCAwIDAgMSAxbTctN2ExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDBtMSAwYTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMFwiPjwvcGF0aD5cbiAgPC9zdmc+XG4gIGAsXG59O1xuXG5leHBvcnQgdHlwZSBHdWlJY29uVHlwZSA9IGtleW9mIHR5cGVvZiBzdmdJY29ucztcblxuZXhwb3J0IHR5cGUgR3VpSWNvbnNDb25maWcgPSBSZWNvcmQ8R3VpSWNvblR5cGUsIHN0cmluZz47XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIHRoZSBkZWZhdWx0IGljb25zLiAqL1xuZXhwb3J0IGNvbnN0IEdVSV9JQ09OU19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48R3VpSWNvbnNDb25maWc+KCdndWktaWNvbnMtY29uZmlnJyk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR3VpSWNvbnNSZWdpc3RyeSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2ljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoR1VJX0lDT05TX0NPTkZJRykgcHJpdmF0ZSBfZGVmYXVsdEljb25zPzogR3VpSWNvbnNDb25maWdcbiAgKSB7fVxuXG4gIGFkZCguLi5pY29uTmFtZXM6IEd1aUljb25UeXBlW10pIHtcbiAgICBjb25zdCBpY29ucyA9IE9iamVjdC5hc3NpZ24oc3ZnSWNvbnMsIHRoaXMuX2RlZmF1bHRJY29ucyk7XG4gICAgaWNvbk5hbWVzLmZvckVhY2goayA9PiB7XG4gICAgICB0aGlzLl9pY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoaywgdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGljb25zW2tdKSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==