1 | var __extends = (this && this.__extends) || (function () {
|
2 | var extendStatics = function (d, b) {
|
3 | extendStatics = Object.setPrototypeOf ||
|
4 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
5 | function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
6 | return extendStatics(d, b);
|
7 | };
|
8 | return function (d, b) {
|
9 | extendStatics(d, b);
|
10 | function __() { this.constructor = d; }
|
11 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
12 | };
|
13 | })();
|
14 | import { IonicNativePlugin, cordova } from '@ionic-native/core';
|
15 | var FacebookOriginal = /** @class */ (function (_super) {
|
16 | __extends(FacebookOriginal, _super);
|
17 | function FacebookOriginal() {
|
18 | var _this = _super !== null && _super.apply(this, arguments) || this;
|
19 | _this.EVENTS = {
|
20 | EVENT_NAME_ACTIVATED_APP: 'fb_mobile_activate_app',
|
21 | EVENT_NAME_DEACTIVATED_APP: 'fb_mobile_deactivate_app',
|
22 | EVENT_NAME_SESSION_INTERRUPTIONS: 'fb_mobile_app_interruptions',
|
23 | EVENT_NAME_TIME_BETWEEN_SESSIONS: 'fb_mobile_time_between_sessions',
|
24 | EVENT_NAME_COMPLETED_REGISTRATION: 'fb_mobile_complete_registration',
|
25 | EVENT_NAME_VIEWED_CONTENT: 'fb_mobile_content_view',
|
26 | EVENT_NAME_SEARCHED: 'fb_mobile_search',
|
27 | EVENT_NAME_RATED: 'fb_mobile_rate',
|
28 | EVENT_NAME_COMPLETED_TUTORIAL: 'fb_mobile_tutorial_completion',
|
29 | EVENT_NAME_PUSH_TOKEN_OBTAINED: 'fb_mobile_obtain_push_token',
|
30 | EVENT_NAME_ADDED_TO_CART: 'fb_mobile_add_to_cart',
|
31 | EVENT_NAME_ADDED_TO_WISHLIST: 'fb_mobile_add_to_wishlist',
|
32 | EVENT_NAME_INITIATED_CHECKOUT: 'fb_mobile_initiated_checkout',
|
33 | EVENT_NAME_ADDED_PAYMENT_INFO: 'fb_mobile_add_payment_info',
|
34 | EVENT_NAME_PURCHASED: 'fb_mobile_purchase',
|
35 | EVENT_NAME_ACHIEVED_LEVEL: 'fb_mobile_level_achieved',
|
36 | EVENT_NAME_UNLOCKED_ACHIEVEMENT: 'fb_mobile_achievement_unlocked',
|
37 | EVENT_NAME_SPENT_CREDITS: 'fb_mobile_spent_credits',
|
38 | EVENT_PARAM_CURRENCY: 'fb_currency',
|
39 | EVENT_PARAM_REGISTRATION_METHOD: 'fb_registration_method',
|
40 | EVENT_PARAM_CONTENT_TYPE: 'fb_content_type',
|
41 | EVENT_PARAM_CONTENT_ID: 'fb_content_id',
|
42 | EVENT_PARAM_SEARCH_STRING: 'fb_search_string',
|
43 | EVENT_PARAM_SUCCESS: 'fb_success',
|
44 | EVENT_PARAM_MAX_RATING_VALUE: 'fb_max_rating_value',
|
45 | EVENT_PARAM_PAYMENT_INFO_AVAILABLE: 'fb_payment_info_available',
|
46 | EVENT_PARAM_NUM_ITEMS: 'fb_num_items',
|
47 | EVENT_PARAM_LEVEL: 'fb_level',
|
48 | EVENT_PARAM_DESCRIPTION: 'fb_description',
|
49 | EVENT_PARAM_SOURCE_APPLICATION: 'fb_mobile_launch_source',
|
50 | EVENT_PARAM_VALUE_YES: '1',
|
51 | EVENT_PARAM_VALUE_NO: '0',
|
52 | };
|
53 | return _this;
|
54 | }
|
55 | FacebookOriginal.prototype.getApplicationId = function () { return cordova(this, "getApplicationId", {}, arguments); };
|
56 | FacebookOriginal.prototype.setApplicationId = function (id) { return cordova(this, "setApplicationId", {}, arguments); };
|
57 | FacebookOriginal.prototype.getApplicationName = function () { return cordova(this, "getApplicationName", {}, arguments); };
|
58 | FacebookOriginal.prototype.setApplicationName = function (name) { return cordova(this, "setApplicationName", {}, arguments); };
|
59 | FacebookOriginal.prototype.login = function (permissions) { return cordova(this, "login", {}, arguments); };
|
60 | FacebookOriginal.prototype.loginWithLimitedTracking = function (permissions) { return cordova(this, "loginWithLimitedTracking", {}, arguments); };
|
61 | FacebookOriginal.prototype.checkHasCorrectPermissions = function (permissions) { return cordova(this, "checkHasCorrectPermissions", {}, arguments); };
|
62 | FacebookOriginal.prototype.isDataAccessExpired = function () { return cordova(this, "isDataAccessExpired", {}, arguments); };
|
63 | FacebookOriginal.prototype.reauthorizeDataAccess = function () { return cordova(this, "reauthorizeDataAccess", {}, arguments); };
|
64 | FacebookOriginal.prototype.logout = function () { return cordova(this, "logout", {}, arguments); };
|
65 | FacebookOriginal.prototype.getLoginStatus = function () { return cordova(this, "getLoginStatus", {}, arguments); };
|
66 | FacebookOriginal.prototype.getAccessToken = function () { return cordova(this, "getAccessToken", {}, arguments); };
|
67 | FacebookOriginal.prototype.getCurrentProfile = function () { return cordova(this, "getCurrentProfile", {}, arguments); };
|
68 | FacebookOriginal.prototype.showDialog = function (options) { return cordova(this, "showDialog", {}, arguments); };
|
69 | FacebookOriginal.prototype.api = function (requestPath, permissions, httpMethod) { return cordova(this, "api", {}, arguments); };
|
70 | FacebookOriginal.prototype.logEvent = function (name, params, valueToSum) { return cordova(this, "logEvent", { "successIndex": 3, "errorIndex": 4 }, arguments); };
|
71 | FacebookOriginal.prototype.setAutoLogAppEventsEnabled = function (enabled) { return cordova(this, "setAutoLogAppEventsEnabled", { "successIndex": 1, "errorIndex": 2 }, arguments); };
|
72 | FacebookOriginal.prototype.setAdvertiserIDCollectionEnabled = function (enabled) { return cordova(this, "setAdvertiserIDCollectionEnabled", {}, arguments); };
|
73 | FacebookOriginal.prototype.setAdvertiserTrackingEnabled = function (enabled) { return cordova(this, "setAdvertiserTrackingEnabled", {}, arguments); };
|
74 | FacebookOriginal.prototype.logPurchase = function (value, currency, params) { return cordova(this, "logPurchase", {}, arguments); };
|
75 | FacebookOriginal.prototype.getDeferredApplink = function () { return cordova(this, "getDeferredApplink", {}, arguments); };
|
76 | FacebookOriginal.prototype.activateApp = function () { return cordova(this, "activateApp", {}, arguments); };
|
77 | FacebookOriginal.pluginName = "Facebook";
|
78 | FacebookOriginal.plugin = "cordova-plugin-facebook-connect";
|
79 | FacebookOriginal.pluginRef = "facebookConnectPlugin";
|
80 | FacebookOriginal.repo = "https://github.com/cordova-plugin-facebook-connect/cordova-plugin-facebook-connect";
|
81 | FacebookOriginal.install = "ionic cordova plugin add cordova-plugin-facebook-connect --variable APP_ID=\"123456789\" --variable APP_NAME=\"myApplication\"";
|
82 | FacebookOriginal.installVariables = ["APP_ID", "APP_NAME"];
|
83 | FacebookOriginal.platforms = ["Android", "iOS", "Browser"];
|
84 | return FacebookOriginal;
|
85 | }(IonicNativePlugin));
|
86 | var Facebook = new FacebookOriginal();
|
87 | export { Facebook };
|
88 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGlvbmljLW5hdGl2ZS9wbHVnaW5zL2ZhY2Vib29rL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLDhCQUFzQyxNQUFNLG9CQUFvQixDQUFDOztJQWlIMUMsNEJBQWlCOzs7UUFDN0MsWUFBTSxHQUFHO1lBQ1Asd0JBQXdCLEVBQUUsd0JBQXdCO1lBQ2xELDBCQUEwQixFQUFFLDBCQUEwQjtZQUN0RCxnQ0FBZ0MsRUFBRSw2QkFBNkI7WUFDL0QsZ0NBQWdDLEVBQUUsaUNBQWlDO1lBQ25FLGlDQUFpQyxFQUFFLGlDQUFpQztZQUNwRSx5QkFBeUIsRUFBRSx3QkFBd0I7WUFDbkQsbUJBQW1CLEVBQUUsa0JBQWtCO1lBQ3ZDLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyw2QkFBNkIsRUFBRSwrQkFBK0I7WUFDOUQsOEJBQThCLEVBQUUsNkJBQTZCO1lBQzdELHdCQUF3QixFQUFFLHVCQUF1QjtZQUNqRCw0QkFBNEIsRUFBRSwyQkFBMkI7WUFDekQsNkJBQTZCLEVBQUUsOEJBQThCO1lBQzdELDZCQUE2QixFQUFFLDRCQUE0QjtZQUMzRCxvQkFBb0IsRUFBRSxvQkFBb0I7WUFDMUMseUJBQXlCLEVBQUUsMEJBQTBCO1lBQ3JELCtCQUErQixFQUFFLGdDQUFnQztZQUNqRSx3QkFBd0IsRUFBRSx5QkFBeUI7WUFDbkQsb0JBQW9CLEVBQUUsYUFBYTtZQUNuQywrQkFBK0IsRUFBRSx3QkFBd0I7WUFDekQsd0JBQXdCLEVBQUUsaUJBQWlCO1lBQzNDLHNCQUFzQixFQUFFLGVBQWU7WUFDdkMseUJBQXlCLEVBQUUsa0JBQWtCO1lBQzdDLG1CQUFtQixFQUFFLFlBQVk7WUFDakMsNEJBQTRCLEVBQUUscUJBQXFCO1lBQ25ELGtDQUFrQyxFQUFFLDJCQUEyQjtZQUMvRCxxQkFBcUIsRUFBRSxjQUFjO1lBQ3JDLGlCQUFpQixFQUFFLFVBQVU7WUFDN0IsdUJBQXVCLEVBQUUsZ0JBQWdCO1lBQ3pDLDhCQUE4QixFQUFFLHlCQUF5QjtZQUN6RCxxQkFBcUIsRUFBRSxHQUFHO1lBQzFCLG9CQUFvQixFQUFFLEdBQUc7U0FDMUIsQ0FBQzs7O0lBUUYsbUNBQWdCO0lBVWhCLG1DQUFnQixhQUFDLEVBQVU7SUFVM0IscUNBQWtCO0lBVWxCLHFDQUFrQixhQUFDLElBQVk7SUF3Qi9CLHdCQUFLLGFBQUMsV0FBcUI7SUF1QjNCLDJDQUF3QixhQUFDLFdBQXFCO0lBVzlDLDZDQUEwQixhQUFDLFdBQXFCO0lBVWhELHNDQUFtQjtJQVVuQix3Q0FBcUI7SUFXckIseUJBQU07SUE4Qk4saUNBQWM7SUFVZCxpQ0FBYztJQVVkLG9DQUFpQjtJQXNCakIsNkJBQVUsYUFBQyxPQUFZO0lBbUJ2QixzQkFBRyxhQUFDLFdBQW1CLEVBQUUsV0FBcUIsRUFBRSxVQUFtQjtJQWdCbkUsMkJBQVEsYUFBQyxJQUFZLEVBQUUsTUFBZSxFQUFFLFVBQW1CO0lBYTNELDZDQUEwQixhQUFDLE9BQWdCO0lBVTNDLG1EQUFnQyxhQUFDLE9BQWdCO0lBVWpELCtDQUE0QixhQUFDLE9BQWdCO0lBYTdDLDhCQUFXLGFBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsTUFBZTtJQVM1RCxxQ0FBa0I7SUFTbEIsOEJBQVc7Ozs7Ozs7O21CQTliYjtFQWtIOEIsaUJBQWlCO1NBQWxDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3Jkb3ZhLCBJb25pY05hdGl2ZVBsdWdpbiwgUGx1Z2luIH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBGYWNlYm9va0xvZ2luUmVzcG9uc2Uge1xuICBzdGF0dXM6IHN0cmluZztcblxuICBhdXRoUmVzcG9uc2U6IHtcbiAgICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuXG4gICAgZGF0YV9hY2Nlc3NfZXhwaXJhdGlvbl90aW1lOiBzdHJpbmc7XG5cbiAgICBleHBpcmVzSW46IG51bWJlcjtcblxuICAgIHVzZXJJRDogc3RyaW5nO1xuICB9O1xufVxuXG4vKipcbiAqIEBuYW1lIEZhY2Vib29rXG4gKiBAZGVzY3JpcHRpb25cbiAqIFVzZSB0aGUgRmFjZWJvb2sgQ29ubmVjdCBwbHVnaW4gdG8gb2J0YWluIGFjY2VzcyB0byB0aGUgbmF0aXZlIEZCIGFwcGxpY2F0aW9uIG9uIGlPUyBhbmQgQW5kcm9pZC5cbiAqXG4gKiBSZXF1aXJlcyBDb3Jkb3ZhIHBsdWdpbjogYGNvcmRvdmEtcGx1Z2luLWZhY2Vib29rLWNvbm5lY3RgLiBGb3IgbW9yZSBpbmZvLCBwbGVhc2Ugc2VlIHRoZSBbRmFjZWJvb2sgQ29ubmVjdF0oaHR0cHM6Ly9naXRodWIuY29tL2NvcmRvdmEtcGx1Z2luLWZhY2Vib29rLWNvbm5lY3QvY29yZG92YS1wbHVnaW4tZmFjZWJvb2stY29ubmVjdCkuXG4gKlxuICogIyMjIyBJbnN0YWxsYXRpb25cbiAqXG4gKiAgVG8gdXNlIHRoZSBGQiBwbHVnaW4sIHlvdSBmaXJzdCBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBGYWNlYm9vayBBcHAgaW5zaWRlIG9mIHRoZSBGYWNlYm9vayBkZXZlbG9wZXIgcG9ydGFsIGF0IFtodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2FwcHNdKGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vYXBwcykuXG4gKlxuICogWyFbZmItZ2V0c3RhcnRlZC0xXSgvaW1nL2RvY3MvbmF0aXZlL0ZhY2Vib29rLzEucG5nKV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9hcHBzLylcbiAqXG4gKiBSZXRyaWV2ZSB0aGUgYEFwcCBJRGAgYW5kIGBBcHAgTmFtZWAuXG4gKlxuICogWyFbZmItZ2V0c3RhcnRlZC0yXSgvaW1nL2RvY3MvbmF0aXZlL0ZhY2Vib29rLzIucG5nKV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9hcHBzLylcbiAqXG4gKiBUaGVuIHR5cGUgaW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIHlvdXIgVGVybWluYWwsIHdoZXJlIEFQUF9JRCBhbmQgQVBQX05BTUUgYXJlIHRoZSB2YWx1ZXMgZnJvbSB0aGUgRmFjZWJvb2sgRGV2ZWxvcGVyIHBvcnRhbC5cbiAqXG4gKiBgYGBiYXNoXG4gKiAgaW9uaWMgY29yZG92YSBwbHVnaW4gYWRkIGNvcmRvdmEtcGx1Z2luLWZhY2Vib29rLWNvbm5lY3QgLS12YXJpYWJsZSBBUFBfSUQ9XCIxMjM0NTY3ODlcIiAtLXZhcmlhYmxlIEFQUF9OQU1FPVwibXlBcHBsaWNhdGlvblwiXG4gKiBgYGBcbiAqXG4gKiBBZnRlciwgeW91J2xsIG5lZWQgdG8gYWRkIHRoZSBuYXRpdmUgcGxhdGZvcm1zIHlvdSdsbCBiZSB1c2luZyB0byB5b3VyIGFwcCBpbiB0aGUgRmFjZWJvb2sgRGV2ZWxvcGVyIHBvcnRhbCB1bmRlciB5b3VyIGFwcCdzIFNldHRpbmdzOlxuICpcbiAqIFshW2ZiLWdldHN0YXJ0ZWQtM10oL2ltZy9kb2NzL25hdGl2ZS9GYWNlYm9vay8zLnBuZyldKGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vYXBwcy8pXG4gKlxuICogQ2xpY2sgYCdBZGQgUGxhdGZvcm0nYC5cbiAqXG4gKiBbIVtmYi1nZXRzdGFydGVkLTRdKC9pbWcvZG9jcy9uYXRpdmUvRmFjZWJvb2svNC5wbmcpXShodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2FwcHMvKVxuICpcbiAqIEF0IHRoaXMgcG9pbnQgeW91J2xsIG5lZWQgdG8gb3BlbiB5b3VyIHByb2plY3QncyBbYGNvbmZpZy54bWxgXShodHRwczovL2NvcmRvdmEuYXBhY2hlLm9yZy9kb2NzL2VuL2xhdGVzdC9jb25maWdfcmVmL2luZGV4Lmh0bWwpIGZpbGUsIGZvdW5kIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB5b3VyIHByb2plY3QuXG4gKlxuICogVGFrZSBub3RlIG9mIHRoZSBgaWRgIGZvciB0aGUgbmV4dCBzdGVwOlxuICogYGBgXG4gKiA8d2lkZ2V0IGlkPVwiY29tLm15Y29tcGFueS50ZXN0YXBwXCIgdmVyc2lvbj1cIjAuMC4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy9ucy93aWRnZXRzXCIgeG1sbnM6Y2R2PVwiaHR0cDovL2NvcmRvdmEuYXBhY2hlLm9yZy9ucy8xLjBcIj5cbiAqIGBgYFxuICpcbiAqIFlvdSBjYW4gYWxzbyBlZGl0IHRoZSBgaWRgIHRvIHdoYXRldmVyIHlvdSdkIGxpa2UgaXQgdG8gYmUuXG4gKlxuICogIyMjIyBpT1MgSW5zdGFsbFxuICogVW5kZXIgJ0J1bmRsZSBJRCcsIGFkZCB0aGUgYGlkYCBmcm9tIHlvdXIgYGNvbmZpZy54bWxgIGZpbGU6XG4gKlxuICogWyFbZmItZ2V0c3RhcnRlZC01XSgvaW1nL2RvY3MvbmF0aXZlL0ZhY2Vib29rLzUucG5nKV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9hcHBzLylcbiAqXG4gKlxuICogIyMjIyBBbmRyb2lkIEluc3RhbGxcbiAqIFVuZGVyICdHb29nbGUgUGxheSBQYWNrYWdlIE5hbWUnLCBhZGQgdGhlIGBpZGAgZnJvbSB5b3VyIGBjb25maWcueG1sYCBmaWxlOlxuICpcbiAqIFshW2ZiLWdldHN0YXJ0ZWQtNl0oL2ltZy9kb2NzL25hdGl2ZS9GYWNlYm9vay82LnBuZyldKGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vYXBwcy8pXG4gKlxuICpcbiAqIEFuZCB0aGF0J3MgaXQhIFlvdSBjYW4gbm93IG1ha2UgY2FsbHMgdG8gRmFjZWJvb2sgdXNpbmcgdGhlIHBsdWdpbi5cbiAqXG4gKiAjIyBFdmVudHNcbiAqXG4gKiBBcHAgZXZlbnRzIGFsbG93IHlvdSB0byB1bmRlcnN0YW5kIHRoZSBtYWtldXAgb2YgdXNlcnMgZW5nYWdpbmcgd2l0aCB5b3VyIGFwcCwgbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgeW91ciBGYWNlYm9vayBtb2JpbGUgYXBwIGFkcywgYW5kIHJlYWNoIHNwZWNpZmljIHNldHMgb2YgeW91ciB1c2VycyB3aXRoIEZhY2Vib29rIG1vYmlsZSBhcHAgYWRzLlxuICpcbiAqIC0gW2lPU10gW2h0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9pb3MvYXBwLWV2ZW50c10oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2lvcy9hcHAtZXZlbnRzKVxuICogLSBbQW5kcm9pZF0gW2h0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9hbmRyb2lkL2FwcC1ldmVudHNdKGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9hbmRyb2lkL2FwcC1ldmVudHMpXG4gKiAtIFtKU10gRG9lcyBub3QgaGF2ZSBhbiBFdmVudHMgQVBJLCBzbyB0aGUgcGx1Z2luIGZ1bmN0aW9ucyBhcmUgZW1wdHkgYW5kIHdpbGwgcmV0dXJuIGFuIGF1dG9tYXRpYyBzdWNjZXNzXG4gKlxuICogQWN0aXZhdGlvbiBldmVudHMgYXJlIGF1dG9tYXRpY2FsbHkgdHJhY2tlZCBmb3IgeW91IGluIHRoZSBwbHVnaW4uXG4gKlxuICogRXZlbnRzIGFyZSBsaXN0ZWQgb24gdGhlIFtpbnNpZ2h0cyBwYWdlXShodHRwczovL3d3dy5mYWNlYm9vay5jb20vaW5zaWdodHMvKS5cbiAqXG4gKiBGb3IgdHJhY2tpbmcgZXZlbnRzLCBzZWUgYGxvZ0V2ZW50YCBhbmQgYGxvZ1B1cmNoYXNlYC5cbiAqXG4gKiBAdXNhZ2VcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IEZhY2Vib29rLCBGYWNlYm9va0xvZ2luUmVzcG9uc2UgfSBmcm9tICdAaW9uaWMtbmF0aXZlL2ZhY2Vib29rL25neCc7XG4gKlxuICogY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRmFjZWJvb2spIHsgfVxuICpcbiAqIC4uLlxuICpcbiAqIHRoaXMuZmIubG9naW4oWydwdWJsaWNfcHJvZmlsZScsICd1c2VyX2ZyaWVuZHMnLCAnZW1haWwnXSlcbiAqICAgLnRoZW4oKHJlczogRmFjZWJvb2tMb2dpblJlc3BvbnNlKSA9PiBjb25zb2xlLmxvZygnTG9nZ2VkIGludG8gRmFjZWJvb2shJywgcmVzKSlcbiAqICAgLmNhdGNoKGUgPT4gY29uc29sZS5sb2coJ0Vycm9yIGxvZ2dpbmcgaW50byBGYWNlYm9vaycsIGUpKTtcbiAqXG4gKlxuICogdGhpcy5mYi5sb2dFdmVudCh0aGlzLmZiLkVWRU5UUy5FVkVOVF9OQU1FX0FEREVEX1RPX0NBUlQpO1xuICpcbiAqIGBgYFxuICpcbiAqL1xuQFBsdWdpbih7XG4gIHBsdWdpbk5hbWU6ICdGYWNlYm9vaycsXG4gIHBsdWdpbjogJ2NvcmRvdmEtcGx1Z2luLWZhY2Vib29rLWNvbm5lY3QnLFxuICBwbHVnaW5SZWY6ICdmYWNlYm9va0Nvbm5lY3RQbHVnaW4nLFxuICByZXBvOiAnaHR0cHM6Ly9naXRodWIuY29tL2NvcmRvdmEtcGx1Z2luLWZhY2Vib29rLWNvbm5lY3QvY29yZG92YS1wbHVnaW4tZmFjZWJvb2stY29ubmVjdCcsXG4gIGluc3RhbGw6XG4gICAgJ2lvbmljIGNvcmRvdmEgcGx1Z2luIGFkZCBjb3Jkb3ZhLXBsdWdpbi1mYWNlYm9vay1jb25uZWN0IC0tdmFyaWFibGUgQVBQX0lEPVwiMTIzNDU2Nzg5XCIgLS12YXJpYWJsZSBBUFBfTkFNRT1cIm15QXBwbGljYXRpb25cIicsXG4gIGluc3RhbGxWYXJpYWJsZXM6IFsnQVBQX0lEJywgJ0FQUF9OQU1FJ10sXG4gIHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUycsICdCcm93c2VyJ10sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZhY2Vib29rIGV4dGVuZHMgSW9uaWNOYXRpdmVQbHVnaW4ge1xuICBFVkVOVFMgPSB7XG4gICAgRVZFTlRfTkFNRV9BQ1RJVkFURURfQVBQOiAnZmJfbW9iaWxlX2FjdGl2YXRlX2FwcCcsXG4gICAgRVZFTlRfTkFNRV9ERUFDVElWQVRFRF9BUFA6ICdmYl9tb2JpbGVfZGVhY3RpdmF0ZV9hcHAnLFxuICAgIEVWRU5UX05BTUVfU0VTU0lPTl9JTlRFUlJVUFRJT05TOiAnZmJfbW9iaWxlX2FwcF9pbnRlcnJ1cHRpb25zJyxcbiAgICBFVkVOVF9OQU1FX1RJTUVfQkVUV0VFTl9TRVNTSU9OUzogJ2ZiX21vYmlsZV90aW1lX2JldHdlZW5fc2Vzc2lvbnMnLFxuICAgIEVWRU5UX05BTUVfQ09NUExFVEVEX1JFR0lTVFJBVElPTjogJ2ZiX21vYmlsZV9jb21wbGV0ZV9yZWdpc3RyYXRpb24nLFxuICAgIEVWRU5UX05BTUVfVklFV0VEX0NPTlRFTlQ6ICdmYl9tb2JpbGVfY29udGVudF92aWV3JyxcbiAgICBFVkVOVF9OQU1FX1NFQVJDSEVEOiAnZmJfbW9iaWxlX3NlYXJjaCcsXG4gICAgRVZFTlRfTkFNRV9SQVRFRDogJ2ZiX21vYmlsZV9yYXRlJyxcbiAgICBFVkVOVF9OQU1FX0NPTVBMRVRFRF9UVVRPUklBTDogJ2ZiX21vYmlsZV90dXRvcmlhbF9jb21wbGV0aW9uJyxcbiAgICBFVkVOVF9OQU1FX1BVU0hfVE9LRU5fT0JUQUlORUQ6ICdmYl9tb2JpbGVfb2J0YWluX3B1c2hfdG9rZW4nLFxuICAgIEVWRU5UX05BTUVfQURERURfVE9fQ0FSVDogJ2ZiX21vYmlsZV9hZGRfdG9fY2FydCcsXG4gICAgRVZFTlRfTkFNRV9BRERFRF9UT19XSVNITElTVDogJ2ZiX21vYmlsZV9hZGRfdG9fd2lzaGxpc3QnLFxuICAgIEVWRU5UX05BTUVfSU5JVElBVEVEX0NIRUNLT1VUOiAnZmJfbW9iaWxlX2luaXRpYXRlZF9jaGVja291dCcsXG4gICAgRVZFTlRfTkFNRV9BRERFRF9QQVlNRU5UX0lORk86ICdmYl9tb2JpbGVfYWRkX3BheW1lbnRfaW5mbycsXG4gICAgRVZFTlRfTkFNRV9QVVJDSEFTRUQ6ICdmYl9tb2JpbGVfcHVyY2hhc2UnLFxuICAgIEVWRU5UX05BTUVfQUNISUVWRURfTEVWRUw6ICdmYl9tb2JpbGVfbGV2ZWxfYWNoaWV2ZWQnLFxuICAgIEVWRU5UX05BTUVfVU5MT0NLRURfQUNISUVWRU1FTlQ6ICdmYl9tb2JpbGVfYWNoaWV2ZW1lbnRfdW5sb2NrZWQnLFxuICAgIEVWRU5UX05BTUVfU1BFTlRfQ1JFRElUUzogJ2ZiX21vYmlsZV9zcGVudF9jcmVkaXRzJyxcbiAgICBFVkVOVF9QQVJBTV9DVVJSRU5DWTogJ2ZiX2N1cnJlbmN5JyxcbiAgICBFVkVOVF9QQVJBTV9SRUdJU1RSQVRJT05fTUVUSE9EOiAnZmJfcmVnaXN0cmF0aW9uX21ldGhvZCcsXG4gICAgRVZFTlRfUEFSQU1fQ09OVEVOVF9UWVBFOiAnZmJfY29udGVudF90eXBlJyxcbiAgICBFVkVOVF9QQVJBTV9DT05URU5UX0lEOiAnZmJfY29udGVudF9pZCcsXG4gICAgRVZFTlRfUEFSQU1fU0VBUkNIX1NUUklORzogJ2ZiX3NlYXJjaF9zdHJpbmcnLFxuICAgIEVWRU5UX1BBUkFNX1NVQ0NFU1M6ICdmYl9zdWNjZXNzJyxcbiAgICBFVkVOVF9QQVJBTV9NQVhfUkFUSU5HX1ZBTFVFOiAnZmJfbWF4X3JhdGluZ192YWx1ZScsXG4gICAgRVZFTlRfUEFSQU1fUEFZTUVOVF9JTkZPX0FWQUlMQUJMRTogJ2ZiX3BheW1lbnRfaW5mb19hdmFpbGFibGUnLFxuICAgIEVWRU5UX1BBUkFNX05VTV9JVEVNUzogJ2ZiX251bV9pdGVtcycsXG4gICAgRVZFTlRfUEFSQU1fTEVWRUw6ICdmYl9sZXZlbCcsXG4gICAgRVZFTlRfUEFSQU1fREVTQ1JJUFRJT046ICdmYl9kZXNjcmlwdGlvbicsXG4gICAgRVZFTlRfUEFSQU1fU09VUkNFX0FQUExJQ0FUSU9OOiAnZmJfbW9iaWxlX2xhdW5jaF9zb3VyY2UnLFxuICAgIEVWRU5UX1BBUkFNX1ZBTFVFX1lFUzogJzEnLFxuICAgIEVWRU5UX1BBUkFNX1ZBTFVFX05POiAnMCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBJRFxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gSURcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QXBwbGljYXRpb25JZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFwcGxpY2F0aW9uIElEXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgaWQgYXBwbGljYXRpb24gSURcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXBwbGljYXRpb25JZChpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBuYW1lXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBuYW1lXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFwcGxpY2F0aW9uTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9ICBuYW1lIGFwcGxpY2F0aW9uIG5hbWVcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXBwbGljYXRpb25OYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dpbiB0byBGYWNlYm9vayB0byBhdXRoZW50aWNhdGUgdGhpcyBhcHAuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICoge1xuICAgKiAgIHN0YXR1czogJ2Nvbm5lY3RlZCcsXG4gICAqICAgYXV0aFJlc3BvbnNlOiB7XG4gICAqICAgICBhY2Nlc3NUb2tlbjogJ2tna2gzZzQya2g0ZzIza2g0ZzJraDM0ZzJrZzRrMmg0Z2toM2c0azJoNGdrMjNoNGdrMmgzNGdrMjM0Z2syaDM0QW5kU29PbicsXG4gICAqICAgICBkYXRhX2FjY2Vzc19leHBpcmF0aW9uX3RpbWU6ICcxNjIzNjgwMjQ0JyxcbiAgICogICAgIGV4cGlyZXNJbjogNTE4Mzk3OSxcbiAgICogICAgIHVzZXJJRDogJzYzNDU2NTQzNSdcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119ICBwZXJtaXNzaW9ucyBMaXN0IG9mIFtwZXJtaXNzaW9uc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2ZhY2Vib29rLWxvZ2luL3Blcm1pc3Npb25zKSB0aGlzIGFwcCBoYXMgdXBvbiBsb2dnaW5nIGluLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxGYWNlYm9va0xvZ2luUmVzcG9uc2U+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBzdGF0dXMgb2JqZWN0IGlmIGxvZ2luIHN1Y2NlZWRzLCBhbmQgcmVqZWN0cyBpZiBsb2dpbiBmYWlscy5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgbG9naW4ocGVybWlzc2lvbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxGYWNlYm9va0xvZ2luUmVzcG9uc2U+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTG9naW4gdG8gRmFjZWJvb2sgdXNpbmcgTGltaXRlZCBMb2dpbiAoaU9TIE9ubHkpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICoge1xuICAgKiAgIHN0YXR1czogJ2Nvbm5lY3RlZCcsXG4gICAqICAgYXV0aFJlc3BvbnNlOiB7XG4gICAqICAgICBhdXRoZW50aWNhdGlvblRva2VuOiAna2draDNnNDJraDRnMjNraDRnMmtoMzRnMmtnNGsyaDRna2gzZzRrMmg0Z2syM2g0Z2syaDM0Z2syMzRnazJoMzRBbmRTb09uJyxcbiAgICogICAgIG5vbmNlOiAnZm9vJyxcbiAgICogICAgIHVzZXJJRDogJzYzNDU2NTQzNSdcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119ICBwZXJtaXNzaW9ucyBMaXN0IG9mIFtwZXJtaXNzaW9uc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2ZhY2Vib29rLWxvZ2luL2xpbWl0ZWQtbG9naW4vcGVybWlzc2lvbnMpIHRoaXMgYXBwIGhhcyB1cG9uIGxvZ2dpbmcgaW4uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEZhY2Vib29rTG9naW5SZXNwb25zZT59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHN0YXR1cyBvYmplY3QgaWYgbG9naW4gc3VjY2VlZHMsIGFuZCByZWplY3RzIGlmIGxvZ2luIGZhaWxzLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBsb2dpbldpdGhMaW1pdGVkVHJhY2tpbmcocGVybWlzc2lvbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxGYWNlYm9va0xvZ2luUmVzcG9uc2U+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIGFwcHJvdmVkIGFsbCBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gIHBlcm1pc3Npb25zIExpc3Qgb2YgW3Blcm1pc3Npb25zXShodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvZmFjZWJvb2stbG9naW4vcGVybWlzc2lvbnMpIHRvIGNoZWNrIGZvclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBzdWNjZXNzIHN0cmluZyBpZiBhbGwgcGFzc2VkIHBlcm1pc3Npb25zIGFyZSBncmFudGVkLCBvciBhbiBlcnJvciBzdHJpbmcgaWYgYW55IHBlcm1pc3Npb25zIGFyZSBub3QgZ3JhbnRlZFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBjaGVja0hhc0NvcnJlY3RQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogc3RyaW5nW10pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBkYXRhIGFjY2VzcyBoYXMgZXhwaXJlZCBmb3IgdGhlIHVzZXJcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgc3VjY2VzcyBzdHJpbmcgaWYgZGF0YSBhY2Nlc3MgaXMgZXhwaXJlZCwgb3IgcmVqZWN0cyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzRGF0YUFjY2Vzc0V4cGlyZWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmVhdXRob3JpemUgZGF0YSBhY2Nlc3MgYWZ0ZXIgaXQgaGFzIGV4cGlyZWRcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8RmFjZWJvb2tMb2dpblJlc3BvbnNlPn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgc3RhdHVzIG9iamVjdCBpZiBsb2dpbiBzdWNjZWVkcywgYW5kIHJlamVjdHMgaWYgbG9naW4gZmFpbHMuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlYXV0aG9yaXplRGF0YUFjY2VzcygpOiBQcm9taXNlPEZhY2Vib29rTG9naW5SZXNwb25zZT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dvdXQgb2YgRmFjZWJvb2suXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm8gc2VlIHRoZSBbRmFjZWJvb2sgZG9jc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3JlZmVyZW5jZS9qYXZhc2NyaXB0L0ZCLmxvZ291dClcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyBvbiBhIHN1Y2Nlc3NmdWwgbG9nb3V0LCBhbmQgcmVqZWN0cyBpZiBsb2dvdXQgZmFpbHMuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGxvZ291dCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgYSB1c2VyIGlzIGxvZ2dlZCBpbiB0byBGYWNlYm9vayBhbmQgaGFzIGF1dGhlbnRpY2F0ZWQgeW91ciBhcHAuICBUaGVyZSBhcmUgdGhyZWUgcG9zc2libGUgc3RhdGVzIGZvciBhIHVzZXI6XG4gICAqXG4gICAqIDEpIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbnRvIEZhY2Vib29rIGFuZCBoYXMgYXV0aGVudGljYXRlZCB5b3VyIGFwcGxpY2F0aW9uIChjb25uZWN0ZWQpXG4gICAqIDIpIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbnRvIEZhY2Vib29rIGJ1dCBoYXMgbm90IGF1dGhlbnRpY2F0ZWQgeW91ciBhcHBsaWNhdGlvbiAobm90X2F1dGhvcml6ZWQpXG4gICAqIDMpIHRoZSB1c2VyIGlzIGVpdGhlciBub3QgbG9nZ2VkIGludG8gRmFjZWJvb2sgb3IgZXhwbGljaXRseSBsb2dnZWQgb3V0IG9mIHlvdXIgYXBwbGljYXRpb24gc28gaXQgZG9lc24ndCBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gRmFjZWJvb2sgYW5kIHRodXMsIHdlIGRvbid0IGtub3cgaWYgdGhleSd2ZSBhdXRoZW50aWNhdGVkIHlvdXIgYXBwbGljYXRpb24gb3Igbm90ICh1bmtub3duKVxuICAgKlxuICAgKiBSZXNvbHZlcyB3aXRoIGEgcmVzcG9uc2UgbGlrZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBhdXRoUmVzcG9uc2U6IHtcbiAgICogICAgIHVzZXJJRDogJzEyMzQ1Njc4OTEyMzQ1JyxcbiAgICogICAgIGFjY2Vzc1Rva2VuOiAna2draDNnNDJraDRnMjNraDRnMmtoMzRnMmtnNGsyaDRna2gzZzRrMmg0Z2syM2g0Z2syaDM0Z2syMzRnazJoMzRBbmRTb09uJyxcbiAgICogICAgIGRhdGFfYWNjZXNzX2V4cGlyYXRpb25fdGltZTogJzE2MjM2ODAyNDQnLFxuICAgKiAgICAgZXhwaXJlc0luOiAnNTE4MzczOCdcbiAgICogICB9LFxuICAgKiAgIHN0YXR1czogJ2Nvbm5lY3RlZCdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBbRmFjZWJvb2sgZG9jc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3JlZmVyZW5jZS9qYXZhc2NyaXB0L0ZCLmdldExvZ2luU3RhdHVzKVxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBzdGF0dXMsIG9yIHJlamVjdHMgd2l0aCBhbiBlcnJvclxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRMb2dpblN0YXR1cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBGYWNlYm9vayBhY2Nlc3MgdG9rZW4gZm9yIHVzaW5nIEZhY2Vib29rIHNlcnZpY2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYWNjZXNzIHRva2VuLCBvciByZWplY3RzIHdpdGggYW4gZXJyb3JcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QWNjZXNzVG9rZW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHByb2ZpbGUgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHN1Y2Nlc3MgZGF0YSwgb3IgcmVqZWN0cyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEN1cnJlbnRQcm9maWxlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgb25lIG9mIHZhcmlvdXMgRmFjZWJvb2sgZGlhbG9ncy4gRXhhbXBsZSBvZiBvcHRpb25zIGZvciBhIFNoYXJlIGRpYWxvZzpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBtZXRob2Q6ICdzaGFyZScsXG4gICAqICAgaHJlZjogJ2h0dHA6Ly9leGFtcGxlLmNvbScsXG4gICAqICAgY2FwdGlvbjogJ1N1Y2ggY2FwdGlvbiwgdmVyeSBmZWVkLicsXG4gICAqICAgZGVzY3JpcHRpb246ICdNdWNoIGRlc2NyaXB0aW9uJyxcbiAgICogICBwaWN0dXJlOiAnaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlLnBuZydcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogRm9yIG1vcmUgb3B0aW9ucyBzZWUgdGhlIFtDb3Jkb3ZhIHBsdWdpbiBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vY29yZG92YS1wbHVnaW4tZmFjZWJvb2stY29ubmVjdC9jb3Jkb3ZhLXBsdWdpbi1mYWNlYm9vay1jb25uZWN0I3Nob3ctYS1kaWFsb2cpIGFuZCB0aGUgW0ZhY2Vib29rIGRvY3NdKGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9qYXZhc2NyaXB0L3JlZmVyZW5jZS9GQi51aSlcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBzdWNjZXNzIGRhdGEsIG9yIHJlamVjdHMgd2l0aCBhbiBlcnJvclxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzaG93RGlhbG9nKG9wdGlvbnM6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBjYWxsIHRvIEZhY2Vib29rIEdyYXBoIEFQSS4gQ2FuIHRha2UgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBiZXlvbmQgdGhvc2UgZ3JhbnRlZCBvbiBsb2dpbi5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxuICAgKlxuICAgKiAgQ2FsbGluZyB0aGUgR3JhcGggQVBJIC0gaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2phdmFzY3JpcHQvcmVmZXJlbmNlL0ZCLmFwaVxuICAgKiAgR3JhcGggRXhwbG9yZXIgLSBodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL3Rvb2xzL2V4cGxvcmVyXG4gICAqICBHcmFwaCBBUEkgLSBodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvZ3JhcGgtYXBpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgcmVxdWVzdFBhdGggR3JhcGggQVBJIGVuZHBvaW50IHlvdSB3YW50IHRvIGNhbGxcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gIHBlcm1pc3Npb25zIExpc3Qgb2YgW3Blcm1pc3Npb25zXShodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvZmFjZWJvb2stbG9naW4vcGVybWlzc2lvbnMpIGZvciB0aGlzIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgaHR0cE1ldGhvZCBIVFRQIG1ldGhvZCBmb3IgdGhlIHJlcXVlc3QsIG9uZSBvZiBcIkdFVFwiLCBcIlBPU1RcIiwgb3IgXCJERUxFVEVcIiAoZGVmYXVsdCBpcyBcIkdFVFwiKVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgcmVxdWVzdCwgb3IgcmVqZWN0cyB3aXRoIGFuIGVycm9yXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGFwaShyZXF1ZXN0UGF0aDogc3RyaW5nLCBwZXJtaXNzaW9uczogc3RyaW5nW10sIGh0dHBNZXRob2Q/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYW4gZXZlbnQuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIEV2ZW50cyBzZWN0aW9uIGFib3ZlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIG5hbWUgTmFtZSBvZiB0aGUgZXZlbnRcbiAgICogQHBhcmFtIHtPYmplY3R9ICBbcGFyYW1zXSBBbiBvYmplY3QgY29udGFpbmluZyBleHRyYSBkYXRhIHRvIGxvZyB3aXRoIHRoZSBldmVudFxuICAgKiBAcGFyYW0ge251bWJlcn0gIFt2YWx1ZVRvU3VtXSBhbnkgdmFsdWUgdG8gYmUgYWRkZWQgdG8gYWRkZWQgdG8gYSBzdW0gb24gZWFjaCBldmVudFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMyxcbiAgICBlcnJvckluZGV4OiA0LFxuICB9KVxuICBsb2dFdmVudChuYW1lOiBzdHJpbmcsIHBhcmFtcz86IE9iamVjdCwgdmFsdWVUb1N1bT86IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvIGxvZyBhcHAgZXZlbnQgZmVhdHVyZSAtIGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9hcHAtZXZlbnRzL2dkcHItY29tcGxpYW5jZS9cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSAgZW5hYmxlZCB2YWx1ZSB0byBiZSBzZXRcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgc2V0QXV0b0xvZ0FwcEV2ZW50c0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBjb2xsZWN0aW9uIG9mIGFkdmVydGlzZXItaWRcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSAgZW5hYmxlZCB2YWx1ZSB0byBiZSBzZXRcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QWR2ZXJ0aXNlcklEQ29sbGVjdGlvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhZHZlcnRpc2VyIHRyYWNraW5nIChpT1MgT25seSlcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSAgZW5hYmxlZCB2YWx1ZSB0byBiZSBzZXRcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QWR2ZXJ0aXNlclRyYWNraW5nRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIHB1cmNoYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIEV2ZW50cyBzZWN0aW9uIGFib3ZlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gIHZhbHVlIFZhbHVlIG9mIHRoZSBwdXJjaGFzZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjdXJyZW5jeSBUaGUgY3VycmVuY3ksIGFzIGFuIFtJU08gNDIxNyBjdXJyZW5jeSBjb2RlXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT180MjE3KVxuICAgKiBAcGFyYW0ge09iamVjdH0gIHBhcmFtcyBBbiBvYmplY3QgY29udGFpbmluZyBleHRyYSBkYXRhIHRvIGxvZyB3aXRoIHRoZSBldmVudFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBsb2dQdXJjaGFzZSh2YWx1ZTogbnVtYmVyLCBjdXJyZW5jeTogc3RyaW5nLCBwYXJhbXM/OiBPYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZWZlcnJlZCBhcHAgbGlua1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXREZWZlcnJlZEFwcGxpbmsoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgbG9nIGFjdGl2YXRpb24gZXZlbnRzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGFjdGl2YXRlQXBwKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0= |
\ | No newline at end of file |