UNPKG

ngoffline2

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.10.

293 lines 26.4 kB
import { Component, Directive, EventEmitter, Input, Output, } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; import * as i2 from "@angular/common"; export class NgOfflineComponent { constructor(sanitizer) { this.sanitizer = sanitizer; this.msg = 'You are not connected'; this.cnx = new EventEmitter(true); this.onLine = false; // is en ligne 🔥 window.addEventListener('online', () => { // 🔥 we're back online! this.onLine = true; this.cnx.emit(true); }); window.addEventListener('offline', () => { // 😱 oh no! this.onLine = false; this.cnx.emit(false); }); } } NgOfflineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); NgOfflineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: NgOfflineComponent, selector: "ngoffline", inputs: { msg: ["message", "msg"] }, outputs: { cnx: "isOnline" }, ngImport: i0, template: ` <div id="box--ngoffline" class="box" *ngIf="!onLine" (click)="onLine = true" > <div class="centreMessage"> <div class="close"> <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 1280.000000 1280.000000" > <metadata></metadata> <g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)" fill="#9c27b0" stroke="none" > <path d="M1545 12784 c-85 -19 -167 -51 -243 -95 -69 -41 -1089 -1049 -1157 -1144 -101 -141 -140 -263 -140 -440 0 -169 36 -293 125 -427 29 -43 705 -726 2149 -2170 l2106 -2108 -2111 -2112 c-1356 -1358 -2124 -2133 -2147 -2169 -88 -137 -121 -249 -121 -419 -1 -181 37 -302 139 -445 68 -95 1088 -1103 1157 -1144 273 -159 604 -143 853 42 22 17 986 976 2143 2131 l2102 2101 2103 -2101 c1156 -1155 2120 -2114 2142 -2131 69 -51 130 -82 224 -113 208 -70 431 -44 629 71 69 41 1089 1049 1157 1144 101 141 140 263 140 440 0 166 -36 290 -121 422 -25 39 -746 767 -2148 2171 l-2111 2112 2107 2108 c2207 2208 2162 2161 2219 2303 75 187 77 392 4 572 -53 132 -74 157 -615 700 -289 291 -552 548 -585 572 -141 101 -263 140 -440 140 -166 0 -289 -35 -420 -120 -41 -26 -724 -702 -2172 -2149 l-2113 -2111 -2112 2111 c-1454 1452 -2132 2123 -2173 2150 -64 41 -149 78 -230 101 -79 22 -258 26 -340 7z" /> </g> </svg> </div> <div class="text"> <div> <svg version="1.0" class="icon" xmlns="http://www.w3.org/2000/svg" width="100px" height="100px" viewBox="0 0 1280.000000 924.000000" > <metadata></metadata> <g transform="translate(0.000000,924.000000) scale(0.100000,-0.100000)" fill="#9c27b0" stroke="none" > <path d="M5905 9230 c-1798 -115 -3490 -914 -5175 -2444 -91 -83 -293 -277 -449 -431 l-283 -281 528 -506 529 -506 270 267 c149 146 335 325 415 397 1869 1685 3702 2322 5595 1943 1358 -271 2797 -1094 4214 -2409 74 -69 158 -146 187 -173 l52 -47 448 467 c247 258 475 495 507 529 l57 61 -173 160 c-1962 1823 -3826 2779 -5767 2958 -194 18 -768 27 -955 15z" /> <path d="M5945 6613 c-487 -39 -853 -114 -1300 -267 -920 -312 -1813 -899 -2709 -1777 -125 -122 -226 -225 -226 -229 0 -5 199 -199 442 -431 244 -233 480 -459 525 -503 l82 -79 189 184 c300 294 518 484 797 694 642 485 1278 784 1915 899 231 41 342 51 610 51 267 -1 368 -9 610 -51 936 -163 1919 -718 2938 -1658 85 -77 156 -140 158 -139 14 9 1004 1045 1004 1052 0 16 -394 372 -610 552 -967 804 -1919 1320 -2880 1559 -281 70 -549 114 -855 140 -108 9 -591 11 -690 3z" /> <path d="M6035 4054 c-671 -53 -1337 -336 -1945 -827 -199 -161 -545 -486 -539 -506 2 -5 239 -235 527 -510 l522 -500 103 101 c574 564 1131 825 1664 778 326 -29 633 -144 983 -368 180 -115 437 -319 593 -471 l68 -66 57 60 c32 33 258 269 502 524 245 255 446 468 447 475 1 6 -49 57 -110 113 -761 692 -1495 1072 -2273 1178 -114 16 -490 27 -599 19z" /> <path d="M6115 1659 c-299 -43 -565 -236 -689 -500 -55 -116 -70 -187 -70 -324 0 -137 15 -208 70 -324 154 -326 504 -527 884 -507 354 18 652 207 791 502 54 113 72 197 72 329 0 136 -19 220 -78 340 -167 344 -570 543 -980 484z" /> </g> </svg> </div> <div>{{ msg }}</div> </div> </div> </div> `, isInline: true, styles: [".box{width:100vw;height:100vh;background:#0000009c;position:absolute;z-index:2}.box .centreMessage{color:#fff;border:1px solid #252525;width:clamp(20px,60vw,500px);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#ffffffd1;border-radius:8px}.box .centreMessage .text{margin:15px;text-align:center;color:#000;font-size:clamp(1rem,2.5vw,2rem);font-family:inherit}.box .centreMessage .text img{width:clamp(20px,60vw,100px)}.box .centreMessage .icon{-webkit-animation:icon_animate;animation:icon_animate;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.box .centreMessage .close{color:#000;background:#e3e3e3;border-radius:50%;cursor:pointer;width:40px;height:40px;position:absolute;top:-28px;right:-31px}.box .centreMessage .close svg{width:20px;transform:translate(10px,10px)}@-webkit-keyframes icon_animate{0%{opacity:0}to{opacity:1}}@keyframes icon_animate{0%{opacity:0}to{opacity:1}}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineComponent, decorators: [{ type: Component, args: [{ selector: 'ngoffline', template: ` <div id="box--ngoffline" class="box" *ngIf="!onLine" (click)="onLine = true" > <div class="centreMessage"> <div class="close"> <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 1280.000000 1280.000000" > <metadata></metadata> <g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)" fill="#9c27b0" stroke="none" > <path d="M1545 12784 c-85 -19 -167 -51 -243 -95 -69 -41 -1089 -1049 -1157 -1144 -101 -141 -140 -263 -140 -440 0 -169 36 -293 125 -427 29 -43 705 -726 2149 -2170 l2106 -2108 -2111 -2112 c-1356 -1358 -2124 -2133 -2147 -2169 -88 -137 -121 -249 -121 -419 -1 -181 37 -302 139 -445 68 -95 1088 -1103 1157 -1144 273 -159 604 -143 853 42 22 17 986 976 2143 2131 l2102 2101 2103 -2101 c1156 -1155 2120 -2114 2142 -2131 69 -51 130 -82 224 -113 208 -70 431 -44 629 71 69 41 1089 1049 1157 1144 101 141 140 263 140 440 0 166 -36 290 -121 422 -25 39 -746 767 -2148 2171 l-2111 2112 2107 2108 c2207 2208 2162 2161 2219 2303 75 187 77 392 4 572 -53 132 -74 157 -615 700 -289 291 -552 548 -585 572 -141 101 -263 140 -440 140 -166 0 -289 -35 -420 -120 -41 -26 -724 -702 -2172 -2149 l-2113 -2111 -2112 2111 c-1454 1452 -2132 2123 -2173 2150 -64 41 -149 78 -230 101 -79 22 -258 26 -340 7z" /> </g> </svg> </div> <div class="text"> <div> <svg version="1.0" class="icon" xmlns="http://www.w3.org/2000/svg" width="100px" height="100px" viewBox="0 0 1280.000000 924.000000" > <metadata></metadata> <g transform="translate(0.000000,924.000000) scale(0.100000,-0.100000)" fill="#9c27b0" stroke="none" > <path d="M5905 9230 c-1798 -115 -3490 -914 -5175 -2444 -91 -83 -293 -277 -449 -431 l-283 -281 528 -506 529 -506 270 267 c149 146 335 325 415 397 1869 1685 3702 2322 5595 1943 1358 -271 2797 -1094 4214 -2409 74 -69 158 -146 187 -173 l52 -47 448 467 c247 258 475 495 507 529 l57 61 -173 160 c-1962 1823 -3826 2779 -5767 2958 -194 18 -768 27 -955 15z" /> <path d="M5945 6613 c-487 -39 -853 -114 -1300 -267 -920 -312 -1813 -899 -2709 -1777 -125 -122 -226 -225 -226 -229 0 -5 199 -199 442 -431 244 -233 480 -459 525 -503 l82 -79 189 184 c300 294 518 484 797 694 642 485 1278 784 1915 899 231 41 342 51 610 51 267 -1 368 -9 610 -51 936 -163 1919 -718 2938 -1658 85 -77 156 -140 158 -139 14 9 1004 1045 1004 1052 0 16 -394 372 -610 552 -967 804 -1919 1320 -2880 1559 -281 70 -549 114 -855 140 -108 9 -591 11 -690 3z" /> <path d="M6035 4054 c-671 -53 -1337 -336 -1945 -827 -199 -161 -545 -486 -539 -506 2 -5 239 -235 527 -510 l522 -500 103 101 c574 564 1131 825 1664 778 326 -29 633 -144 983 -368 180 -115 437 -319 593 -471 l68 -66 57 60 c32 33 258 269 502 524 245 255 446 468 447 475 1 6 -49 57 -110 113 -761 692 -1495 1072 -2273 1178 -114 16 -490 27 -599 19z" /> <path d="M6115 1659 c-299 -43 -565 -236 -689 -500 -55 -116 -70 -187 -70 -324 0 -137 15 -208 70 -324 154 -326 504 -527 884 -507 354 18 652 207 791 502 54 113 72 197 72 329 0 136 -19 220 -78 340 -167 344 -570 543 -980 484z" /> </g> </svg> </div> <div>{{ msg }}</div> </div> </div> </div> `, styleUrls: ['./ngoffline.component.scss'], }] }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { msg: [{ type: Input, args: ['message'] }], cnx: [{ type: Output, args: ['isOnline'] }] } }); export class NgOfflineDirective { constructor(el) { this.cnx = new EventEmitter(true); this.onLine = true; this._el = el; this.goOnline(); window.addEventListener('online', () => { // 🔥 we're back online! this.goOnline(); this.cnx.emit(true); }); window.addEventListener('offline', () => { // 😱 oh no! this.goOffline(); this.cnx.emit(false); }); } goOnline() { this._el.nativeElement.style.display = 'none'; this.onLine = true; } goOffline() { this._el.nativeElement.style.display = 'inherit'; this.onLine = false; } } NgOfflineDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); NgOfflineDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: NgOfflineDirective, selector: "[ngoffline]", outputs: { cnx: "isOnline" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineDirective, decorators: [{ type: Directive, args: [{ selector: '[ngoffline]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { cnx: [{ type: Output, args: ['isOnline'] }] } }); export class NgOnlineDirective { constructor(el) { this.cnx = new EventEmitter(true); this.onLine = true; this._el = el; this.goOnline(); window.addEventListener('online', () => { // 🔥 we're back online! this.goOnline(); this.cnx.emit(true); }); window.addEventListener('offline', () => { // 😱 oh no! this.goOffline(); this.cnx.emit(false); }); } goOnline() { this._el.nativeElement.style.display = 'inherit'; this.onLine = true; } goOffline() { this._el.nativeElement.style.display = 'none'; this.onLine = false; } } NgOnlineDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOnlineDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); NgOnlineDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: NgOnlineDirective, selector: "[ngonline]", outputs: { cnx: "isOnline" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOnlineDirective, decorators: [{ type: Directive, args: [{ selector: '[ngonline]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { cnx: [{ type: Output, args: ['isOnline'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdvZmZsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nb2ZmbGluZS9zcmMvbGliL25nb2ZmbGluZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7QUFrR3ZCLE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUp6QixRQUFHLEdBQVcsdUJBQXVCLENBQUM7UUFDcEMsUUFBRyxHQUFHLElBQUksWUFBWSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzFELFdBQU0sR0FBWSxLQUFLLENBQUMsQ0FBQyxpQkFBaUI7UUFHeEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFTLEVBQUU7WUFDM0Msd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFTLEVBQUU7WUFDNUMsWUFBWTtZQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBakJVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLG9IQTdGbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBGVDs0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ZCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzsrR0E1QlUsaUJBQWlCO21HQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtpQkFDdkI7aUdBRXFCLEdBQUc7c0JBQXRCLE1BQU07dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nb2ZmbGluZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgaWQ9XCJib3gtLW5nb2ZmbGluZVwiXG4gICAgICBjbGFzcz1cImJveFwiXG4gICAgICAqbmdJZj1cIiFvbkxpbmVcIlxuICAgICAgKGNsaWNrKT1cIm9uTGluZSA9IHRydWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjZW50cmVNZXNzYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZVwiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIHZlcnNpb249XCIxLjBcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTI4MC4wMDAwMDAgMTI4MC4wMDAwMDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtZXRhZGF0YT48L21ldGFkYXRhPlxuICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLDEyODAuMDAwMDAwKSBzY2FsZSgwLjEwMDAwMCwtMC4xMDAwMDApXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM5YzI3YjBcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJub25lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTE1NDUgMTI3ODQgYy04NSAtMTkgLTE2NyAtNTEgLTI0MyAtOTUgLTY5IC00MSAtMTA4OSAtMTA0OSAtMTE1N1xuICAgICAgIC0xMTQ0IC0xMDEgLTE0MSAtMTQwIC0yNjMgLTE0MCAtNDQwIDAgLTE2OSAzNiAtMjkzIDEyNSAtNDI3IDI5IC00MyA3MDUgLTcyNlxuICAgICAgIDIxNDkgLTIxNzAgbDIxMDYgLTIxMDggLTIxMTEgLTIxMTIgYy0xMzU2IC0xMzU4IC0yMTI0IC0yMTMzIC0yMTQ3IC0yMTY5IC04OFxuICAgICAgIC0xMzcgLTEyMSAtMjQ5IC0xMjEgLTQxOSAtMSAtMTgxIDM3IC0zMDIgMTM5IC00NDUgNjggLTk1IDEwODggLTExMDMgMTE1N1xuICAgICAgIC0xMTQ0IDI3MyAtMTU5IDYwNCAtMTQzIDg1MyA0MiAyMiAxNyA5ODYgOTc2IDIxNDMgMjEzMSBsMjEwMiAyMTAxIDIxMDNcbiAgICAgICAtMjEwMSBjMTE1NiAtMTE1NSAyMTIwIC0yMTE0IDIxNDIgLTIxMzEgNjkgLTUxIDEzMCAtODIgMjI0IC0xMTMgMjA4IC03MCA0MzFcbiAgICAgICAtNDQgNjI5IDcxIDY5IDQxIDEwODkgMTA0OSAxMTU3IDExNDQgMTAxIDE0MSAxNDAgMjYzIDE0MCA0NDAgMCAxNjYgLTM2IDI5MFxuICAgICAgIC0xMjEgNDIyIC0yNSAzOSAtNzQ2IDc2NyAtMjE0OCAyMTcxIGwtMjExMSAyMTEyIDIxMDcgMjEwOCBjMjIwNyAyMjA4IDIxNjJcbiAgICAgICAyMTYxIDIyMTkgMjMwMyA3NSAxODcgNzcgMzkyIDQgNTcyIC01MyAxMzIgLTc0IDE1NyAtNjE1IDcwMCAtMjg5IDI5MSAtNTUyXG4gICAgICAgNTQ4IC01ODUgNTcyIC0xNDEgMTAxIC0yNjMgMTQwIC00NDAgMTQwIC0xNjYgMCAtMjg5IC0zNSAtNDIwIC0xMjAgLTQxIC0yNlxuICAgICAgIC03MjQgLTcwMiAtMjE3MiAtMjE0OSBsLTIxMTMgLTIxMTEgLTIxMTIgMjExMSBjLTE0NTQgMTQ1MiAtMjEzMiAyMTIzIC0yMTczXG4gICAgICAgMjE1MCAtNjQgNDEgLTE0OSA3OCAtMjMwIDEwMSAtNzkgMjIgLTI1OCAyNiAtMzQwIDd6XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgdmVyc2lvbj1cIjEuMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTAwcHhcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyODAuMDAwMDAwIDkyNC4wMDAwMDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWV0YWRhdGE+PC9tZXRhZGF0YT5cbiAgICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4wMDAwMDAsOTI0LjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiM5YzI3YjBcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIm5vbmVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNTkwNSA5MjMwIGMtMTc5OCAtMTE1IC0zNDkwIC05MTQgLTUxNzUgLTI0NDQgLTkxIC04MyAtMjkzIC0yNzdcbi00NDkgLTQzMSBsLTI4MyAtMjgxIDUyOCAtNTA2IDUyOSAtNTA2IDI3MCAyNjcgYzE0OSAxNDYgMzM1IDMyNSA0MTUgMzk3XG4xODY5IDE2ODUgMzcwMiAyMzIyIDU1OTUgMTk0MyAxMzU4IC0yNzEgMjc5NyAtMTA5NCA0MjE0IC0yNDA5IDc0IC02OSAxNThcbi0xNDYgMTg3IC0xNzMgbDUyIC00NyA0NDggNDY3IGMyNDcgMjU4IDQ3NSA0OTUgNTA3IDUyOSBsNTcgNjEgLTE3MyAxNjBcbmMtMTk2MiAxODIzIC0zODI2IDI3NzkgLTU3NjcgMjk1OCAtMTk0IDE4IC03NjggMjcgLTk1NSAxNXpcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNTk0NSA2NjEzIGMtNDg3IC0zOSAtODUzIC0xMTQgLTEzMDAgLTI2NyAtOTIwIC0zMTIgLTE4MTMgLTg5OVxuLTI3MDkgLTE3NzcgLTEyNSAtMTIyIC0yMjYgLTIyNSAtMjI2IC0yMjkgMCAtNSAxOTkgLTE5OSA0NDIgLTQzMSAyNDQgLTIzM1xuNDgwIC00NTkgNTI1IC01MDMgbDgyIC03OSAxODkgMTg0IGMzMDAgMjk0IDUxOCA0ODQgNzk3IDY5NCA2NDIgNDg1IDEyNzggNzg0XG4xOTE1IDg5OSAyMzEgNDEgMzQyIDUxIDYxMCA1MSAyNjcgLTEgMzY4IC05IDYxMCAtNTEgOTM2IC0xNjMgMTkxOSAtNzE4IDI5Mzhcbi0xNjU4IDg1IC03NyAxNTYgLTE0MCAxNTggLTEzOSAxNCA5IDEwMDQgMTA0NSAxMDA0IDEwNTIgMCAxNiAtMzk0IDM3MiAtNjEwXG41NTIgLTk2NyA4MDQgLTE5MTkgMTMyMCAtMjg4MCAxNTU5IC0yODEgNzAgLTU0OSAxMTQgLTg1NSAxNDAgLTEwOCA5IC01OTEgMTFcbi02OTAgM3pcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNjAzNSA0MDU0IGMtNjcxIC01MyAtMTMzNyAtMzM2IC0xOTQ1IC04MjcgLTE5OSAtMTYxIC01NDUgLTQ4NlxuLTUzOSAtNTA2IDIgLTUgMjM5IC0yMzUgNTI3IC01MTAgbDUyMiAtNTAwIDEwMyAxMDEgYzU3NCA1NjQgMTEzMSA4MjUgMTY2NFxuNzc4IDMyNiAtMjkgNjMzIC0xNDQgOTgzIC0zNjggMTgwIC0xMTUgNDM3IC0zMTkgNTkzIC00NzEgbDY4IC02NiA1NyA2MCBjMzJcbjMzIDI1OCAyNjkgNTAyIDUyNCAyNDUgMjU1IDQ0NiA0NjggNDQ3IDQ3NSAxIDYgLTQ5IDU3IC0xMTAgMTEzIC03NjEgNjkyXG4tMTQ5NSAxMDcyIC0yMjczIDExNzggLTExNCAxNiAtNDkwIDI3IC01OTkgMTl6XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTYxMTUgMTY1OSBjLTI5OSAtNDMgLTU2NSAtMjM2IC02ODkgLTUwMCAtNTUgLTExNiAtNzAgLTE4NyAtNzBcbi0zMjQgMCAtMTM3IDE1IC0yMDggNzAgLTMyNCAxNTQgLTMyNiA1MDQgLTUyNyA4ODQgLTUwNyAzNTQgMTggNjUyIDIwNyA3OTFcbjUwMiA1NCAxMTMgNzIgMTk3IDcyIDMyOSAwIDEzNiAtMTkgMjIwIC03OCAzNDAgLTE2NyAzNDQgLTU3MCA1NDMgLTk4MCA0ODR6XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2Pnt7IG1zZyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9uZ29mZmxpbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdPZmZsaW5lQ29tcG9uZW50IHtcbiAgQElucHV0KCdtZXNzYWdlJykgbXNnOiBzdHJpbmcgPSAnWW91IGFyZSBub3QgY29ubmVjdGVkJztcbiAgQE91dHB1dCgnaXNPbmxpbmUnKSBjbnggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KHRydWUpO1xuICBvbkxpbmU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaXMgZW4gbGlnbmUg8J+UpVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb25saW5lJywgKCk6IHZvaWQgPT4ge1xuICAgICAgLy8g8J+UpSB3ZSdyZSBiYWNrIG9ubGluZSFcbiAgICAgIHRoaXMub25MaW5lID0gdHJ1ZTtcbiAgICAgIHRoaXMuY254LmVtaXQodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsICgpOiB2b2lkID0+IHtcbiAgICAgIC8vIPCfmLEgb2ggbm8hXG4gICAgICB0aGlzLm9uTGluZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jbnguZW1pdChmYWxzZSk7XG4gICAgfSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nb2ZmbGluZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ09mZmxpbmVEaXJlY3RpdmUge1xuICBAT3V0cHV0KCdpc09ubGluZScpIGNueCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4odHJ1ZSk7XG4gIF9lbDogYW55O1xuICBvbkxpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2VsID0gZWw7XG4gICAgdGhpcy5nb09ubGluZSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAoKTogdm9pZCA9PiB7XG4gICAgICAvLyDwn5SlIHdlJ3JlIGJhY2sgb25saW5lIVxuICAgICAgdGhpcy5nb09ubGluZSgpO1xuICAgICAgdGhpcy5jbnguZW1pdCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKCk6IHZvaWQgPT4ge1xuICAgICAgLy8g8J+YsSBvaCBubyFcbiAgICAgIHRoaXMuZ29PZmZsaW5lKCk7XG4gICAgICB0aGlzLmNueC5lbWl0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnb09ubGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5vbkxpbmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdvT2ZmbGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5vbkxpbmUgPSBmYWxzZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdvbmxpbmVdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmdPbmxpbmVEaXJlY3RpdmUge1xuICBAT3V0cHV0KCdpc09ubGluZScpIGNueCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4odHJ1ZSk7XG4gIF9lbDogYW55O1xuICBvbkxpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2VsID0gZWw7XG4gICAgdGhpcy5nb09ubGluZSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAoKTogdm9pZCA9PiB7XG4gICAgICAvLyDwn5SlIHdlJ3JlIGJhY2sgb25saW5lIVxuICAgICAgdGhpcy5nb09ubGluZSgpO1xuICAgICAgdGhpcy5jbnguZW1pdCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKCk6IHZvaWQgPT4ge1xuICAgICAgLy8g8J+YsSBvaCBubyFcbiAgICAgIHRoaXMuZ29PZmZsaW5lKCk7XG4gICAgICB0aGlzLmNueC5lbWl0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnb09ubGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5vbkxpbmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdvT2ZmbGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5vbkxpbmUgPSBmYWxzZTtcbiAgfVxufVxuIl19