UNPKG

ng-cw-v12

Version:

Angular UI component library

146 lines 22.7 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class LocalService { constructor() { this.x_PI = 3.14159265358979324 * 3000.0 / 180.0; this.PI = 3.1415926535897932384626; this.a = 6378245.0; this.ee = 0.00669342162296594323; } /** * 百度坐标系 (BD-09) 与火星坐标系 (GCJ-02) 的转换 * 即百度 转 谷歌、高德 * @param lng 经度 * @param lat 纬度 * @returns [lng, lat] */ bd09togcj02(lng, lat) { var x_pi = 3.14159265358979324 * 3000.0 / 180.0; var x = lng - 0.0065; var y = lat - 0.006; var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); var gg_lng = z * Math.cos(theta); var gg_lat = z * Math.sin(theta); return [gg_lng, gg_lat]; } /** * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 * 即谷歌、高德 转 百度 * @param lng 经度 * @param lat 纬度 * @returns [lng, lat] */ gcj02tobd09(lng, lat) { var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * this.x_PI); var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * this.x_PI); var bd_lng = z * Math.cos(theta) + 0.0065; var bd_lat = z * Math.sin(theta) + 0.006; return [bd_lng, bd_lat]; } /** * WGS84转火星坐标系 (GCJ-02) * 即WGS84 转 谷歌、高德 * @param lng 经度 * @param lat 纬度 * @returns [lng, lat] */ wgs84togcj02(lng, lat) { if (this.out_of_china(lng, lat)) { return [lng, lat]; } else { var dlat = this.transformlat(lng - 105.0, lat - 35.0); var dlng = this.transformlng(lng - 105.0, lat - 35.0); var radlat = lat / 180.0 * this.PI; var magic = Math.sin(radlat); magic = 1 - this.ee * magic * magic; var sqrtmagic = Math.sqrt(magic); dlat = (dlat * 180.0) / ((this.a * (1 - this.ee)) / (magic * sqrtmagic) * this.PI); dlng = (dlng * 180.0) / (this.a / sqrtmagic * Math.cos(radlat) * this.PI); var mglat = lat + dlat; var mglng = lng + dlng; return [mglng, mglat]; } } /** * 火星坐标系 (GCJ-02)转WGS84 * 即谷歌、高德 转 WGS84 * @param lng 经度 * @param lat 纬度 * @returns [lng, lat] */ gcj02towgs84(lng, lat) { if (this.out_of_china(lng, lat)) { return [lng, lat]; } else { var dlat = this.transformlat(lng - 105.0, lat - 35.0); var dlng = this.transformlng(lng - 105.0, lat - 35.0); var radlat = lat / 180.0 * this.PI; var magic = Math.sin(radlat); magic = 1 - this.ee * magic * magic; var sqrtmagic = Math.sqrt(magic); dlat = (dlat * 180.0) / ((this.a * (1 - this.ee)) / (magic * sqrtmagic) * this.PI); dlng = (dlng * 180.0) / (this.a / sqrtmagic * Math.cos(radlat) * this.PI); let mglat = lat + dlat; let mglng = lng + dlng; return [lng * 2 - mglng, lat * 2 - mglat]; } } transformlat(lng, lat) { var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng)); ret += (20.0 * Math.sin(6.0 * lng * this.PI) + 20.0 * Math.sin(2.0 * lng * this.PI)) * 2.0 / 3.0; ret += (20.0 * Math.sin(lat * this.PI) + 40.0 * Math.sin(lat / 3.0 * this.PI)) * 2.0 / 3.0; ret += (160.0 * Math.sin(lat / 12.0 * this.PI) + 320 * Math.sin(lat * this.PI / 30.0)) * 2.0 / 3.0; return ret; } transformlng(lng, lat) { var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng)); ret += (20.0 * Math.sin(6.0 * lng * this.PI) + 20.0 * Math.sin(2.0 * lng * this.PI)) * 2.0 / 3.0; ret += (20.0 * Math.sin(lng * this.PI) + 40.0 * Math.sin(lng / 3.0 * this.PI)) * 2.0 / 3.0; ret += (150.0 * Math.sin(lng / 12.0 * this.PI) + 300.0 * Math.sin(lng / 30.0 * this.PI)) * 2.0 / 3.0; return ret; } /** * 判断是否在国内,不在国内则不做偏移 */ out_of_china(lng, lat) { return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false); } /** * jsonp封装 * @param obj \{url: '', success: ()=> {}} */ jsonpFunction(obj) { // 创建一个script标签; var script = document.createElement("script"); // 给函数起名字,定义为全局函数; var fnName = "jsonp" + new Date().getTime(); // window.aaa就是把aaa设置为全局变量! window[fnName] = obj.success; // 改变src,添加到head中 if (obj.url.includes('?')) { script.src = obj.url + "&callback=" + fnName; } else { script.src = obj.url + "?callback=" + fnName; } // 把script标签添加到head标签中,就会发送src的请求了 document.head.appendChild(script); // 代码执行完毕,把script标签删除 script.onload = function () { document.head.removeChild(script); window[fnName] = undefined; }; } } LocalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: LocalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); LocalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: LocalService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: LocalService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvcG9pL2xvY2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFlBQVk7SUFDckI7UUFHUSxTQUFJLEdBQUcsbUJBQW1CLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUM1QyxPQUFFLEdBQUcsd0JBQXdCLENBQUM7UUFDOUIsTUFBQyxHQUFHLFNBQVMsQ0FBQztRQUNkLE9BQUUsR0FBRyxzQkFBc0IsQ0FBQztJQUxwQyxDQUFDO0lBT0Q7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ2hDLElBQUksSUFBSSxHQUFHLG1CQUFtQixHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDaEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFD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QyxHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlHLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUMzRixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDbkcsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ3pDLElBQUksR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pHLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQzNGLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNyRyxPQUFPLEdBQUcsQ0FBQTtJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNLLFlBQVksQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN6QyxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsR0FBUTtRQUNsQixnQkFBZ0I7UUFDaEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxrQkFBa0I7UUFDbEIsSUFBSSxNQUFNLEdBQVEsT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakQsMkJBQTJCO1FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzdCLGlCQUFpQjtRQUNqQixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDO1NBQ2hEO2FBQU07WUFDSCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQztTQUNoRDtRQUNELGtDQUFrQztRQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxxQkFBcUI7UUFDckIsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQVMsR0FBRyxTQUFTLENBQUM7UUFDeEMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQzs7eUdBN0lRLFlBQVk7NkdBQVosWUFBWSxjQUZULE1BQU07MkZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHhfUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzI0ICogMzAwMC4wIC8gMTgwLjA7XHJcbiAgICBwcml2YXRlIFBJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2O1xyXG4gICAgcHJpdmF0ZSBhID0gNjM3ODI0NS4wO1xyXG4gICAgcHJpdmF0ZSBlZSA9IDAuMDA2NjkzNDIxNjIyOTY1OTQzMjM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDnmb7luqblnZDmoIfns7sgKEJELTA5KSDkuI7ngavmmJ/lnZDmoIfns7sgKEdDSi0wMikg55qE6L2s5o2iXHJcbiAgICAgKiDljbPnmb7luqYg6L2sIOiwt+atjOOAgemrmOW+t1xyXG4gICAgICogQHBhcmFtIGxuZyDnu4/luqZcclxuICAgICAqIEBwYXJhbSBsYXQg57qs5bqmXHJcbiAgICAgKiBAcmV0dXJucyBbbG5nLCBsYXRdXHJcbiAgICAgKi9cclxuICAgIGJkMDl0b2djajAyKGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgICAgICB2YXIgeF9waSA9IDMuMTQxNTkyNjUzNTg5NzkzMjQgKiAzMDAwLjAgLyAxODAuMDtcclxuICAgICAgICB2YXIgeCA9IGxuZyAtIDAuMDA2NTtcclxuICAgICAgICB2YXIgeSA9IGxhdCAtIDAuMDA2O1xyXG4gICAgICAgIHZhciB6ID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpIC0gMC4wMDAwMiAqIE1hdGguc2luKHkgKiB4X3BpKTtcclxuICAgICAgICB2YXIgdGhldGEgPSBNYXRoLmF0YW4yKHksIHgpIC0gMC4wMDAwMDMgKiBNYXRoLmNvcyh4ICogeF9waSk7XHJcbiAgICAgICAgdmFyIGdnX2xuZyA9IHogKiBNYXRoLmNvcyh0aGV0YSk7XHJcbiAgICAgICAgdmFyIGdnX2xhdCA9IHogKiBNYXRoLnNpbih0aGV0YSk7XHJcbiAgICAgICAgcmV0dXJuIFtnZ19sbmcsIGdnX2xhdF1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOeBq+aYn+WdkOagh+ezuyAoR0NKLTAyKSDkuI7nmb7luqblnZDmoIfns7sgKEJELTA5KSDnmoTovazmjaJcclxuICAgICAqIOWNs+iwt+atjOOAgemrmOW+tyDovawg55m+5bqmXHJcbiAgICAgKiBAcGFyYW0gbG5nIOe7j+W6plxyXG4gICAgICogQHBhcmFtIGxhdCDnuqzluqZcclxuICAgICAqIEByZXR1cm5zIFtsbmcsIGxhdF1cclxuICAgICAqL1xyXG4gICAgZ2NqMDJ0b2JkMDkobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgICAgIHZhciB6ID0gTWF0aC5zcXJ0KGxuZyAqIGxuZyArIGxhdCAqIGxhdCkgKyAwLjAwMDAyICogTWF0aC5zaW4obGF0ICogdGhpcy54X1BJKTtcclxuICAgICAgICB2YXIgdGhldGEgPSBNYXRoLmF0YW4yKGxhdCwgbG5nKSArIDAuMDAwMDAzICogTWF0aC5jb3MobG5nICogdGhpcy54X1BJKTtcclxuICAgICAgICB2YXIgYmRfbG5nID0geiAqIE1hdGguY29zKHRoZXRhKSArIDAuMDA2NTtcclxuICAgICAgICB2YXIgYmRfbGF0ID0geiAqIE1hdGguc2luKHRoZXRhKSArIDAuMDA2O1xyXG4gICAgICAgIHJldHVybiBbYmRfbG5nLCBiZF9sYXRdXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXR1M4NOi9rOeBq+aYn+WdkOagh+ezuyAoR0NKLTAyKVxyXG4gICAgICog5Y2zV0dTODQg6L2sIOiwt+atjOOAgemrmOW+t1xyXG4gICAgICogQHBhcmFtIGxuZyDnu4/luqZcclxuICAgICAqIEBwYXJhbSBsYXQg57qs5bqmXHJcbiAgICAgKiBAcmV0dXJucyBbbG5nLCBsYXRdXHJcbiAgICAgKi9cclxuICAgIHdnczg0dG9nY2owMihsbmc6IG51bWJlciwgbGF0OiBudW1iZXIpOiBudW1iZXJbXSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3V0X29mX2NoaW5hKGxuZywgbGF0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gW2xuZywgbGF0XVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIGRsYXQgPSB0aGlzLnRyYW5zZm9ybWxhdChsbmcgLSAxMDUuMCwgbGF0IC0gMzUuMCk7XHJcbiAgICAgICAgICAgIHZhciBkbG5nID0gdGhpcy50cmFuc2Zvcm1sbmcobG5nIC0gMTA1LjAsIGxhdCAtIDM1LjApO1xyXG4gICAgICAgICAgICB2YXIgcmFkbGF0ID0gbGF0IC8gMTgwLjAgKiB0aGlzLlBJO1xyXG4gICAgICAgICAgICB2YXIgbWFnaWMgPSBNYXRoLnNpbihyYWRsYXQpO1xyXG4gICAgICAgICAgICBtYWdpYyA9IDEgLSB0aGlzLmVlICogbWFnaWMgKiBtYWdpYztcclxuICAgICAgICAgICAgdmFyIHNxcnRtYWdpYyA9IE1hdGguc3FydChtYWdpYyk7XHJcbiAgICAgICAgICAgIGRsYXQgPSAoZGxhdCAqIDE4MC4wKSAvICgodGhpcy5hICogKDEgLSB0aGlzLmVlKSkgLyAobWFnaWMgKiBzcXJ0bWFnaWMpICogdGhpcy5QSSk7XHJcbiAgICAgICAgICAgIGRsbmcgPSAoZGxuZyAqIDE4MC4wKSAvICh0aGlzLmEgLyBzcXJ0bWFnaWMgKiBNYXRoLmNvcyhyYWRsYXQpICogdGhpcy5QSSk7XHJcbiAgICAgICAgICAgIHZhciBtZ2xhdCA9IGxhdCArIGRsYXQ7XHJcbiAgICAgICAgICAgIHZhciBtZ2xuZyA9IGxuZyArIGRsbmc7XHJcbiAgICAgICAgICAgIHJldHVybiBbbWdsbmcsIG1nbGF0XVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOeBq+aYn+WdkOagh+ezuyAoR0NKLTAyKei9rFdHUzg0XHJcbiAgICAgKiDljbPosLfmrYzjgIHpq5jlvrcg6L2sIFdHUzg0XHJcbiAgICAgKiBAcGFyYW0gbG5nIOe7j+W6plxyXG4gICAgICogQHBhcmFtIGxhdCDnuqzluqZcclxuICAgICAqIEByZXR1cm5zIFtsbmcsIGxhdF1cclxuICAgICAqL1xyXG4gICAgZ2NqMDJ0b3dnczg0KGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgICAgICBpZiAodGhpcy5vdXRfb2ZfY2hpbmEobG5nLCBsYXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbbG5nLCBsYXRdXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgZGxhdCA9IHRoaXMudHJhbnNmb3JtbGF0KGxuZyAtIDEwNS4wLCBsYXQgLSAzNS4wKTtcclxuICAgICAgICAgICAgdmFyIGRsbmcgPSB0aGlzLnRyYW5zZm9ybWxuZyhsbmcgLSAxMDUuMCwgbGF0IC0gMzUuMCk7XHJcbiAgICAgICAgICAgIHZhciByYWRsYXQgPSBsYXQgLyAxODAuMCAqIHRoaXMuUEk7XHJcbiAgICAgICAgICAgIHZhciBtYWdpYyA9IE1hdGguc2luKHJhZGxhdCk7XHJcbiAgICAgICAgICAgIG1hZ2ljID0gMSAtIHRoaXMuZWUgKiBtYWdpYyAqIG1hZ2ljO1xyXG4gICAgICAgICAgICB2YXIgc3FydG1hZ2ljID0gTWF0aC5zcXJ0KG1hZ2ljKTtcclxuICAgICAgICAgICAgZGxhdCA9IChkbGF0ICogMTgwLjApIC8gKCh0aGlzLmEgKiAoMSAtIHRoaXMuZWUpKSAvIChtYWdpYyAqIHNxcnRtYWdpYykgKiB0aGlzLlBJKTtcclxuICAgICAgICAgICAgZGxuZyA9IChkbG5nICogMTgwLjApIC8gKHRoaXMuYSAvIHNxcnRtYWdpYyAqIE1hdGguY29zKHJhZGxhdCkgKiB0aGlzLlBJKTtcclxuICAgICAgICAgICAgbGV0IG1nbGF0ID0gbGF0ICsgZGxhdDtcclxuICAgICAgICAgICAgbGV0IG1nbG5nID0gbG5nICsgZGxuZztcclxuICAgICAgICAgICAgcmV0dXJuIFtsbmcgKiAyIC0gbWdsbmcsIGxhdCAqIDIgLSBtZ2xhdF1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1sYXQobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IC0xMDAuMCArIDIuMCAqIGxuZyArIDMuMCAqIGxhdCArIDAuMiAqIGxhdCAqIGxhdCArIDAuMSAqIGxuZyAqIGxhdCArIDAuMiAqIE1hdGguc3FydChNYXRoLmFicyhsbmcpKTtcclxuICAgICAgICByZXQgKz0gKDIwLjAgKiBNYXRoLnNpbig2LjAgKiBsbmcgKiB0aGlzLlBJKSArIDIwLjAgKiBNYXRoLnNpbigyLjAgKiBsbmcgKiB0aGlzLlBJKSkgKiAyLjAgLyAzLjA7XHJcbiAgICAgICAgcmV0ICs9ICgyMC4wICogTWF0aC5zaW4obGF0ICogdGhpcy5QSSkgKyA0MC4wICogTWF0aC5zaW4obGF0IC8gMy4wICogdGhpcy5QSSkpICogMi4wIC8gMy4wO1xyXG4gICAgICAgIHJldCArPSAoMTYwLjAgKiBNYXRoLnNpbihsYXQgLyAxMi4wICogdGhpcy5QSSkgKyAzMjAgKiBNYXRoLnNpbihsYXQgKiB0aGlzLlBJIC8gMzAuMCkpICogMi4wIC8gMy4wO1xyXG4gICAgICAgIHJldHVybiByZXRcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybWxuZyhsbmc6IG51bWJlciwgbGF0OiBudW1iZXIpIHtcclxuICAgICAgICB2YXIgcmV0ID0gMzAwLjAgKyBsbmcgKyAyLjAgKiBsYXQgKyAwLjEgKiBsbmcgKiBsbmcgKyAwLjEgKiBsbmcgKiBsYXQgKyAwLjEgKiBNYXRoLnNxcnQoTWF0aC5hYnMobG5nKSk7XHJcbiAgICAgICAgcmV0ICs9ICgyMC4wICogTWF0aC5zaW4oNi4wICogbG5nICogdGhpcy5QSSkgKyAyMC4wICogTWF0aC5zaW4oMi4wICogbG5nICogdGhpcy5QSSkpICogMi4wIC8gMy4wO1xyXG4gICAgICAgIHJldCArPSAoMjAuMCAqIE1hdGguc2luKGxuZyAqIHRoaXMuUEkpICsgNDAuMCAqIE1hdGguc2luKGxuZyAvIDMuMCAqIHRoaXMuUEkpKSAqIDIuMCAvIDMuMDtcclxuICAgICAgICByZXQgKz0gKDE1MC4wICogTWF0aC5zaW4obG5nIC8gMTIuMCAqIHRoaXMuUEkpICsgMzAwLjAgKiBNYXRoLnNpbihsbmcgLyAzMC4wICogdGhpcy5QSSkpICogMi4wIC8gMy4wO1xyXG4gICAgICAgIHJldHVybiByZXRcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIpOaWreaYr+WQpuWcqOWbveWGhe+8jOS4jeWcqOWbveWGheWImeS4jeWBmuWBj+enu1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG91dF9vZl9jaGluYShsbmc6IG51bWJlciwgbGF0OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKGxuZyA8IDcyLjAwNCB8fCBsbmcgPiAxMzcuODM0NykgfHwgKChsYXQgPCAwLjgyOTMgfHwgbGF0ID4gNTUuODI3MSkgfHwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICoganNvbnDlsIHoo4VcclxuICAgICAqIEBwYXJhbSBvYmogXFx7dXJsOiAnJywgc3VjY2VzczogKCk9PiB7fX1cclxuICAgICAqL1xyXG4gICAganNvbnBGdW5jdGlvbihvYmo6IGFueSkge1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4qnNjcmlwdOagh+etvjtcclxuICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcclxuICAgICAgICAvLyDnu5nlh73mlbDotbflkI3lrZfvvIzlrprkuYnkuLrlhajlsYDlh73mlbDvvJtcclxuICAgICAgICB2YXIgZm5OYW1lOiBhbnkgPSBcImpzb25wXCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAvLyB3aW5kb3cuYWFh5bCx5piv5oqKYWFh6K6+572u5Li65YWo5bGA5Y+Y6YeP77yBXHJcbiAgICAgICAgd2luZG93W2ZuTmFtZV0gPSBvYmouc3VjY2VzcztcclxuICAgICAgICAvLyDmlLnlj5hzcmMs5re75Yqg5YiwaGVhZOS4rVxyXG4gICAgICAgIGlmIChvYmoudXJsLmluY2x1ZGVzKCc/JykpIHtcclxuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IG9iai51cmwgKyBcIiZjYWxsYmFjaz1cIiArIGZuTmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzY3JpcHQuc3JjID0gb2JqLnVybCArIFwiP2NhbGxiYWNrPVwiICsgZm5OYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDmiopzY3JpcHTmoIfnrb7mt7vliqDliLBoZWFk5qCH562+5Lit77yM5bCx5Lya5Y+R6YCBc3Jj55qE6K+35rGC5LqGXHJcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgICAgIC8vIOS7o+eggeaJp+ihjOWujOavle+8jOaKinNjcmlwdOagh+etvuWIoOmZpFxyXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoc2NyaXB0KTtcclxuICAgICAgICAgICAgKHdpbmRvd1tmbk5hbWVdIGFzIGFueSkgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=