@graphcms/migration
Advanced tools
Comparing version 0.0.12 to 0.0.13
import { ChangeItem, MigrationChange } from "./migration"; | ||
import { MutationMode } from "./util"; | ||
import { GraphQLBatchMigrationCreateEnumerableFieldInput, GraphQLBatchMigrationCreateRelationalFieldInput, GraphQLBatchMigrationCreateSimpleFieldInput, GraphQLBatchMigrationCreateUnionFieldInput, GraphQLBatchMigrationUpdateRelationalFieldInput, GraphQLBatchMigrationUpdateSimpleFieldInput, GraphQLBatchMigrationUpdateUnionFieldInput } from "./generated/schema"; | ||
declare type FieldArgs = GraphQLBatchMigrationCreateSimpleFieldInput | GraphQLBatchMigrationUpdateSimpleFieldInput | GraphQLBatchMigrationCreateRelationalFieldInput | GraphQLBatchMigrationUpdateRelationalFieldInput | GraphQLBatchMigrationCreateEnumerableFieldInput | GraphQLBatchMigrationCreateUnionFieldInput | GraphQLBatchMigrationUpdateUnionFieldInput; | ||
import { GraphQLBatchMigrationCreateEnumerableFieldInput, GraphQLBatchMigrationCreateRelationalFieldInput, GraphQLBatchMigrationCreateRemoteFieldInput, GraphQLBatchMigrationCreateSimpleFieldInput, GraphQLBatchMigrationCreateUnionFieldInput, GraphQLBatchMigrationUpdateRelationalFieldInput, GraphQLBatchMigrationUpdateSimpleFieldInput, GraphQLBatchMigrationUpdateUnionFieldInput } from "./generated/schema"; | ||
declare type FieldArgs = GraphQLBatchMigrationCreateSimpleFieldInput | GraphQLBatchMigrationUpdateSimpleFieldInput | GraphQLBatchMigrationCreateRelationalFieldInput | GraphQLBatchMigrationUpdateRelationalFieldInput | GraphQLBatchMigrationCreateEnumerableFieldInput | GraphQLBatchMigrationCreateUnionFieldInput | GraphQLBatchMigrationUpdateUnionFieldInput | GraphQLBatchMigrationCreateRemoteFieldInput; | ||
declare enum FieldType { | ||
@@ -9,3 +9,4 @@ SimpleField = 1, | ||
EnumerableField = 3, | ||
UnionField = 4 | ||
UnionField = 4, | ||
RemoteField = 5 | ||
} | ||
@@ -12,0 +13,0 @@ /** |
@@ -11,2 +11,3 @@ "use strict"; | ||
FieldType[FieldType["UnionField"] = 4] = "UnionField"; | ||
FieldType[FieldType["RemoteField"] = 5] = "RemoteField"; | ||
})(FieldType || (FieldType = {})); | ||
@@ -44,2 +45,2 @@ exports.FieldType = FieldType; | ||
exports.Field = Field; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQXNDO0FBb0J0QyxJQUFLLFNBS0o7QUFMRCxXQUFLLFNBQVM7SUFDWix1REFBZSxDQUFBO0lBQ2YsK0RBQWUsQ0FBQTtJQUNmLCtEQUFlLENBQUE7SUFDZixxREFBVSxDQUFBO0FBQ1osQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2I7QUFtQ2UsOEJBQVM7QUFqQ3pCOztHQUVHO0FBQ0gsTUFBTSxLQUFLO0lBQ1QsWUFDVSxJQUFlLEVBQ2YsSUFBa0IsRUFDbEIsT0FBa0IsU0FBUyxDQUFDLFdBQVc7UUFGdkMsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUM7SUFDOUMsQ0FBQztJQUVKLGNBQWM7UUFDWixJQUFJLE1BQWMsQ0FBQztRQUNuQixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLG1CQUFZLENBQUMsTUFBTTtnQkFDdEIsTUFBTSxHQUFHLFNBQVMsT0FBTyxFQUFFLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLG1CQUFZLENBQUMsTUFBTTtnQkFDdEIsTUFBTSxHQUFHLFNBQVMsT0FBTyxFQUFFLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLG1CQUFZLENBQUMsTUFBTTtnQkFDdEIsb0JBQW9CO2dCQUNwQixNQUFNLEdBQUcsYUFBYSxDQUFDO2dCQUN2QixNQUFNO1NBQ1Q7UUFFRCxNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVRLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlSXRlbSwgTWlncmF0aW9uQ2hhbmdlIH0gZnJvbSBcIi4vbWlncmF0aW9uXCI7XG5pbXBvcnQgeyBNdXRhdGlvbk1vZGUgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQge1xuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVFbnVtZXJhYmxlRmllbGRJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlUmVsYXRpb25hbEZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVNpbXBsZUZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVVuaW9uRmllbGRJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlUmVsYXRpb25hbEZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVNpbXBsZUZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVVuaW9uRmllbGRJbnB1dCxcbn0gZnJvbSBcIi4vZ2VuZXJhdGVkL3NjaGVtYVwiO1xuXG50eXBlIEZpZWxkQXJncyA9XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlU2ltcGxlRmllbGRJbnB1dFxuICB8IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVNpbXBsZUZpZWxkSW5wdXRcbiAgfCBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZWxhdGlvbmFsRmllbGRJbnB1dFxuICB8IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVJlbGF0aW9uYWxGaWVsZElucHV0XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlRW51bWVyYWJsZUZpZWxkSW5wdXRcbiAgfCBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVVbmlvbkZpZWxkSW5wdXRcbiAgfCBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVVbmlvbkZpZWxkSW5wdXQ7XG5cbmVudW0gRmllbGRUeXBlIHtcbiAgU2ltcGxlRmllbGQgPSAxLFxuICBSZWxhdGlvbmFsRmllbGQsXG4gIEVudW1lcmFibGVGaWVsZCxcbiAgVW5pb25GaWVsZCxcbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNsYXNzIEZpZWxkIGltcGxlbWVudHMgQ2hhbmdlSXRlbSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXJnczogRmllbGRBcmdzLFxuICAgIHByaXZhdGUgbW9kZTogTXV0YXRpb25Nb2RlLFxuICAgIHByaXZhdGUgdHlwZTogRmllbGRUeXBlID0gRmllbGRUeXBlLlNpbXBsZUZpZWxkXG4gICkge31cblxuICBnZW5lcmF0ZUNoYW5nZSgpOiBNaWdyYXRpb25DaGFuZ2Uge1xuICAgIGxldCBhY3Rpb246IHN0cmluZztcbiAgICBjb25zdCB0eXBlU3RyID0gRmllbGRUeXBlW3RoaXMudHlwZV07XG5cbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuQ3JlYXRlOlxuICAgICAgICBhY3Rpb24gPSBgY3JlYXRlJHt0eXBlU3RyfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuVXBkYXRlOlxuICAgICAgICBhY3Rpb24gPSBgdXBkYXRlJHt0eXBlU3RyfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuRGVsZXRlOlxuICAgICAgICAvLyBkZWxldGUgaXMgZ2VuZXJpY1xuICAgICAgICBhY3Rpb24gPSBgZGVsZXRlRmllbGRgO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2U6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjaGFuZ2VbYWN0aW9uXSA9IHRoaXMuYXJncztcbiAgICByZXR1cm4gY2hhbmdlO1xuICB9XG59XG5cbmV4cG9ydCB7IEZpZWxkLCBGaWVsZFR5cGUgfTtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQXNDO0FBc0J0QyxJQUFLLFNBTUo7QUFORCxXQUFLLFNBQVM7SUFDWix1REFBZSxDQUFBO0lBQ2YsK0RBQWUsQ0FBQTtJQUNmLCtEQUFlLENBQUE7SUFDZixxREFBVSxDQUFBO0lBQ1YsdURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOSSxTQUFTLEtBQVQsU0FBUyxRQU1iO0FBbUNlLDhCQUFTO0FBakN6Qjs7R0FFRztBQUNILE1BQU0sS0FBSztJQUNULFlBQ1UsSUFBZSxFQUNmLElBQWtCLEVBQ2xCLE9BQWtCLFNBQVMsQ0FBQyxXQUFXO1FBRnZDLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQW1DO0lBQzlDLENBQUM7SUFFSixjQUFjO1FBQ1osSUFBSSxNQUFjLENBQUM7UUFDbkIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxtQkFBWSxDQUFDLE1BQU07Z0JBQ3RCLE1BQU0sR0FBRyxTQUFTLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxtQkFBWSxDQUFDLE1BQU07Z0JBQ3RCLE1BQU0sR0FBRyxTQUFTLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxtQkFBWSxDQUFDLE1BQU07Z0JBQ3RCLG9CQUFvQjtnQkFDcEIsTUFBTSxHQUFHLGFBQWEsQ0FBQztnQkFDdkIsTUFBTTtTQUNUO1FBRUQsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFUSxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZUl0ZW0sIE1pZ3JhdGlvbkNoYW5nZSB9IGZyb20gXCIuL21pZ3JhdGlvblwiO1xuaW1wb3J0IHsgTXV0YXRpb25Nb2RlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlRW51bWVyYWJsZUZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJlbGF0aW9uYWxGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZW1vdGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVTaW1wbGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVVbmlvbkZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVJlbGF0aW9uYWxGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVTaW1wbGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVVbmlvbkZpZWxkSW5wdXQsXG59IGZyb20gXCIuL2dlbmVyYXRlZC9zY2hlbWFcIjtcblxudHlwZSBGaWVsZEFyZ3MgPVxuICB8IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVNpbXBsZUZpZWxkSW5wdXRcbiAgfCBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVTaW1wbGVGaWVsZElucHV0XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlUmVsYXRpb25hbEZpZWxkSW5wdXRcbiAgfCBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVSZWxhdGlvbmFsRmllbGRJbnB1dFxuICB8IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUVudW1lcmFibGVGaWVsZElucHV0XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlVW5pb25GaWVsZElucHV0XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlVW5pb25GaWVsZElucHV0XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlUmVtb3RlRmllbGRJbnB1dDtcblxuZW51bSBGaWVsZFR5cGUge1xuICBTaW1wbGVGaWVsZCA9IDEsXG4gIFJlbGF0aW9uYWxGaWVsZCxcbiAgRW51bWVyYWJsZUZpZWxkLFxuICBVbmlvbkZpZWxkLFxuICBSZW1vdGVGaWVsZCxcbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNsYXNzIEZpZWxkIGltcGxlbWVudHMgQ2hhbmdlSXRlbSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXJnczogRmllbGRBcmdzLFxuICAgIHByaXZhdGUgbW9kZTogTXV0YXRpb25Nb2RlLFxuICAgIHByaXZhdGUgdHlwZTogRmllbGRUeXBlID0gRmllbGRUeXBlLlNpbXBsZUZpZWxkXG4gICkge31cblxuICBnZW5lcmF0ZUNoYW5nZSgpOiBNaWdyYXRpb25DaGFuZ2Uge1xuICAgIGxldCBhY3Rpb246IHN0cmluZztcbiAgICBjb25zdCB0eXBlU3RyID0gRmllbGRUeXBlW3RoaXMudHlwZV07XG5cbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuQ3JlYXRlOlxuICAgICAgICBhY3Rpb24gPSBgY3JlYXRlJHt0eXBlU3RyfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuVXBkYXRlOlxuICAgICAgICBhY3Rpb24gPSBgdXBkYXRlJHt0eXBlU3RyfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuRGVsZXRlOlxuICAgICAgICAvLyBkZWxldGUgaXMgZ2VuZXJpY1xuICAgICAgICBhY3Rpb24gPSBgZGVsZXRlRmllbGRgO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2U6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjaGFuZ2VbYWN0aW9uXSA9IHRoaXMuYXJncztcbiAgICByZXR1cm4gY2hhbmdlO1xuICB9XG59XG5cbmV4cG9ydCB7IEZpZWxkLCBGaWVsZFR5cGUgfTtcbiJdfQ== |
import { Model } from "./model"; | ||
import { GraphQLBatchMigrationCreateEnumerationInput, GraphQLBatchMigrationCreateModelInput, GraphQLBatchMigrationUpdateModelInput, GraphQLBatchMigrationCreateStageInput, GraphQLBatchMigrationUpdateStageInput, GraphQLBatchMigrationUpdateEnumerationInput, GraphQLBatchMigrationCreateLocaleInput, GraphQLBatchMigrationUpdateLocaleInput } from "./generated/schema"; | ||
import { GraphQLBatchMigrationCreateEnumerationInput, GraphQLBatchMigrationCreateModelInput, GraphQLBatchMigrationUpdateModelInput, GraphQLBatchMigrationCreateStageInput, GraphQLBatchMigrationUpdateStageInput, GraphQLBatchMigrationUpdateEnumerationInput, GraphQLBatchMigrationCreateLocaleInput, GraphQLBatchMigrationUpdateLocaleInput, GraphQLBatchMigrationCreateRemoteTypeDefinitionInput, GraphQLBatchMigrationUpdateRemoteTypeDefinitionInput } from "./generated/schema"; | ||
import { EnumerationCreate, EnumerationUpdate } from "./enumeration"; | ||
import { Stage } from "./stage"; | ||
import { Locale } from "./locale"; | ||
import { RemoteTypeDefinition } from "./RemoteTypeDef"; | ||
/** | ||
@@ -82,2 +83,17 @@ * Configuration for a migration. | ||
/** | ||
* Create a new remote type definition | ||
* @param args options for the new type definition. | ||
*/ | ||
createRemoteTypeDefinition(args: GraphQLBatchMigrationCreateRemoteTypeDefinitionInput): RemoteTypeDefinition; | ||
/** | ||
* Update an existing remote type definition | ||
* @param args options for remote type definition to update. | ||
*/ | ||
updateRemoteTypeDefinition(args: GraphQLBatchMigrationUpdateRemoteTypeDefinitionInput): RemoteTypeDefinition; | ||
/** | ||
* Delete a remote type definition | ||
* @param apiId the `apiId` of the remote type definition to delete. | ||
*/ | ||
deleteRemoteTypeDefinition(apiId: string): void; | ||
/** | ||
* Create a new enumeration | ||
@@ -84,0 +100,0 @@ * @param args options for the new enumeration. |
@@ -10,2 +10,3 @@ "use strict"; | ||
const locale_1 = require("./locale"); | ||
const RemoteTypeDef_1 = require("./RemoteTypeDef"); | ||
/** | ||
@@ -52,2 +53,17 @@ * @ignore | ||
} | ||
createRemoteTypeDefinition(args) { | ||
const remoteTypeDefinition = new RemoteTypeDef_1.RemoteTypeDefinitionClass(util_1.MutationMode.Create, args); | ||
this.registerChange(remoteTypeDefinition); | ||
return remoteTypeDefinition; | ||
} | ||
updateRemoteTypeDefinition(args) { | ||
const remoteTypeDefinition = new RemoteTypeDef_1.RemoteTypeDefinitionClass(util_1.MutationMode.Update, args); | ||
this.registerChange(remoteTypeDefinition); | ||
return remoteTypeDefinition; | ||
} | ||
deleteRemoteTypeDefinition(apiId) { | ||
const remoteTypeDefinition = new RemoteTypeDef_1.RemoteTypeDefinitionClass(util_1.MutationMode.Delete, { apiId }); | ||
this.registerChange(remoteTypeDefinition); | ||
return remoteTypeDefinition; | ||
} | ||
createEnumeration(args) { | ||
@@ -167,2 +183,2 @@ const enumeration = new enumeration_1.EnumerationClass(util_1.MutationMode.Create, args); | ||
exports.newMigration = newMigration; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBZ0Q7QUFDaEQsbUNBQTRDO0FBQzVDLGlDQUtnQjtBQVdoQiwrQ0FJdUI7QUFDdkIsbUNBQTRDO0FBQzVDLHFDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCO0lBQ3JDLDhDQUE4QyxDQUFDO0FBZ0tqRDs7R0FFRztBQUNILE1BQU0sY0FBYztJQU9sQixZQUFZLE1BQXVCO1FBTm5DLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUkvQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsT0FBTztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksK0JBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDeEMsT0FBTyxFQUFFO2dCQUNQLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO2FBQ2pEO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLHVCQUFnQixDQUN2QyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFhO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksa0JBQVUsQ0FBQyxJQUFJLEVBQUUsbUJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFTO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksa0JBQVUsQ0FBQyxJQUFJLEVBQUUsbUJBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBUztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFVLENBQUMsSUFBSSxFQUFFLG1CQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVSxDQUFDLElBQUksRUFBRSxtQkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksOEJBQWdCLENBQUMsbUJBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLDhCQUFnQixDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSw4QkFBZ0IsQ0FBQyxtQkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVM7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVSxDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVM7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVSxDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVSxDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksb0JBQVcsQ0FBQyxtQkFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFXLENBQUMsbUJBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxvQkFBVyxDQUFDLG1CQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQW9CO1FBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUNwRDtRQUNELE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXJCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxNQUFNLHNCQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM5QyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7WUFDdEIsT0FBTztTQUNSLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXJCLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSTtnQkFDRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDcEIsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2dCQUNELCtDQUErQztnQkFDL0MsT0FBTztvQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsR0FBRyxTQUFTO2lCQUNiLENBQUM7YUFDSDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBbUI7UUFDaEQsT0FBTyxJQUFJLEVBQUU7WUFDWCxJQUFJO2dCQUNGLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFMUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxxQkFBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7b0JBQ3JDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7b0JBQ3RDLFdBQVc7aUJBQ1osQ0FBQyxDQUFDO2dCQUNILElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7b0JBQ2pDLE9BQU8sU0FBUyxDQUFDO2lCQUNsQjthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFrQjtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxNQUF1QjtJQUMzQyxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFJQyxvQ0FBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxDbGllbnQgfSBmcm9tIFwiZ3JhcGhxbC1yZXF1ZXN0XCI7XG5pbXBvcnQgeyBNb2RlbCwgTW9kZWxDbGFzcyB9IGZyb20gXCIuL21vZGVsXCI7XG5pbXBvcnQge1xuICBmZXRjaEVudmlyb25tZW50LFxuICBmZXRjaE1pZ3JhdGlvbixcbiAgTXV0YXRpb25Nb2RlLFxuICBzdWJtaXRNaWdyYXRpb24sXG59IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7XG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUVudW1lcmF0aW9uSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZU1vZGVsSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZU1vZGVsSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVN0YWdlSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVN0YWdlSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZUVudW1lcmF0aW9uSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUxvY2FsZUlucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVMb2NhbGVJbnB1dCxcbn0gZnJvbSBcIi4vZ2VuZXJhdGVkL3NjaGVtYVwiO1xuaW1wb3J0IHtcbiAgRW51bWVyYXRpb25DcmVhdGUsXG4gIEVudW1lcmF0aW9uVXBkYXRlLFxuICBFbnVtZXJhdGlvbkNsYXNzLFxufSBmcm9tIFwiLi9lbnVtZXJhdGlvblwiO1xuaW1wb3J0IHsgU3RhZ2UsIFN0YWdlQ2xhc3MgfSBmcm9tIFwiLi9zdGFnZVwiO1xuaW1wb3J0IHsgTG9jYWxlLCBMb2NhbGVDbGFzcyB9IGZyb20gXCIuL2xvY2FsZVwiO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgZW5kcG9pbnQgPVxuICBwcm9jZXNzLmVudi5HUkFQSENNU19HUkFQSFFMX0VORFBPSU5UIHx8XG4gIFwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tL2dyYXBocWxcIjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIG1pZ3JhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIE1pZ3JhdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBVUkwgZW5kcG9pbnQgZm9yIHRoZSBlbnZpcm9ubWVudC5cbiAgICogRnJvbSBgU2V0dGluZ3MgPiBFbnZpcm9ubWVudHNgIG9uIGh0dHBzOi8vYXBwLmdyYXBoY21zLmNvbS5cbiAgICovXG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGlvbiBUb2tlbi5cbiAgICogRnJvbSBgU2V0dGluZ3MgPiBBUEkgQWNjZXNzYCBvbiBodHRwczovL2FwcC5ncmFwaGNtcy5jb20uXG4gICAqL1xuICBhdXRoVG9rZW46IHN0cmluZztcbiAgLyoqXG4gICAqIE5hbWUgZm9yIHRoZSBtaWdyYXRpb24uIFRoaXMgbXVzdCBiZSB1bmlxdWUgdG8gdGhpcyBtaWdyYXRpb24uXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWlncmF0aW9uQ2hhbmdlIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5pbnRlcmZhY2UgRW52aXJvbm1lbnRJbmZvIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlbmRwb2ludDogc3RyaW5nO1xuICBwcm9qZWN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIG1pZ3JhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIE1pZ3JhdGlvbkluZm8ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIGVycm9ycz86IHN0cmluZztcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBmaW5pc2hlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdyYXBoQ01TIE1pZ3JhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIE1pZ3JhdGlvbiB7XG4gIC8qKlxuICAgKiBSdW4gdGhlIG1pZ3JhdGlvblxuICAgKiBAcGFyYW0gZm9yZWdyb3VuZCBjb25maWd1cmVzIGlmIHRoZSBtaWdyYXRpb24gc2hvdWxkIHJ1biBpbiB0aGUgZm9yZWdyb3VuZC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIG1pZ3JhdGlvbiBpcyBvbmx5IHNjaGVkdWxlZC4gVG8gd2FpdCBmb3IgdGhlIG1pZ3JhdGlvbiB0byBydW4sXG4gICAqIHNldCBgZm9yZWdyb3VuZGAgdG8gYHRydWVgLlxuICAgKi9cbiAgcnVuKGZvcmVncm91bmQ/OiBib29sZWFuKTogUHJvbWlzZTxNaWdyYXRpb25JbmZvPjtcblxuICAvKipcbiAgICogRHJ5IHJ1biB0aGUgbWlncmF0aW9uLiBUaGlzIHJldHVybnMgdGhlIGNoYW5nZXMgdG8gYmUgYXBwbGllZCB3aXRob3V0IHJ1bm5pbmdcbiAgICogdGhlIG1pZ3JhdGlvbi5cbiAgICovXG4gIGRyeVJ1bigpOiBhbnk7XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuIGV4aXN0aW5nIG1vZGVsXG4gICAqIEBwYXJhbSBhcGlJZCB0aGUgYGFwaUlkYCBmb3IgdGhlIG1vZGVsLlxuICAgKi9cbiAgbW9kZWwoYXBpSWQ6IHN0cmluZyk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgbW9kZWxcbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3IgdGhlIG5ldyBtb2RlbC5cbiAgICovXG4gIGNyZWF0ZU1vZGVsKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZU1vZGVsSW5wdXQpOiBNb2RlbDtcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIG1vZGVsXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgZm9yIG1vZGVsIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZU1vZGVsKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZU1vZGVsSW5wdXQpOiBNb2RlbDtcblxuICAvKipcbiAgICogRGVsZXRlIGEgbW9kZWxcbiAgICogQHBhcmFtIGFwaUlkIHRoZSBgYXBpSWRgIG9mIHRoZSBtb2RlbCB0byBkZWxldGUuXG4gICAqL1xuICBkZWxldGVNb2RlbChhcGlJZDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGVudW1lcmF0aW9uXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgZm9yIHRoZSBuZXcgZW51bWVyYXRpb24uXG4gICAqL1xuICBjcmVhdGVFbnVtZXJhdGlvbihcbiAgICBhcmdzOiBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVFbnVtZXJhdGlvbklucHV0XG4gICk6IEVudW1lcmF0aW9uQ3JlYXRlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgZW51bWVyYXRpb25cbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3IgdGhlIG5ldyBlbnVtZXJhdGlvbi5cbiAgICovXG4gIHVwZGF0ZUVudW1lcmF0aW9uKFxuICAgIGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZUVudW1lcmF0aW9uSW5wdXRcbiAgKTogRW51bWVyYXRpb25VcGRhdGU7XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBlbnVtZXJhdGlvblxuICAgKiBAcGFyYW0gYXBpSWQgYXBpSWQgb2YgdGhlIGVudW1lcmF0aW9uIHRvIGRlbGV0ZS5cbiAgICovXG4gIGRlbGV0ZUVudW1lcmF0aW9uKGFwaUlkOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3RhZ2VcbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3IgdGhlIG5ldyBzdGFnZS5cbiAgICovXG4gIGNyZWF0ZVN0YWdlKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVN0YWdlSW5wdXQpOiBTdGFnZTtcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIHN0YWdlXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgZm9yIHN0YWdlIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZVN0YWdlKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVN0YWdlSW5wdXQpOiBTdGFnZTtcblxuICAvKipcbiAgICogRGVsZXRlIGEgc3RhZ2VcbiAgICogQHBhcmFtIGFwaUlkIHRoZSBgYXBpSWRgIG9mIHRoZSBzdGFnZSB0byBkZWxldGUuXG4gICAqL1xuICBkZWxldGVTdGFnZShhcGlJZDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGxvY2FsZVxuICAgKiBAcGFyYW0gYXJncyBvcHRpb25zIGZvciB0aGUgbmV3IGxvY2FsZS5cbiAgICovXG4gIGNyZWF0ZUxvY2FsZShhcmdzOiBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVMb2NhbGVJbnB1dCk6IExvY2FsZTtcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIGxvY2FsZVxuICAgKiBAcGFyYW0gYXJncyBvcHRpb25zIGZvciBsb2NhbGUgdXBkYXRlLlxuICAgKi9cbiAgdXBkYXRlTG9jYWxlKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZUxvY2FsZUlucHV0KTogTG9jYWxlO1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBsb2NhbGVcbiAgICogQHBhcmFtIGFwaUlkIHRoZSBgYXBpSWRgIG9mIHRoZSBsb2NhbGUgdG8gZGVsZXRlLlxuICAgKi9cbiAgZGVsZXRlTG9jYWxlKGFwaUlkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuaW50ZXJmYWNlIENoYW5nZUxpc3RlbmVyIHtcbiAgcmVnaXN0ZXJDaGFuZ2UoaXRlbTogQ2hhbmdlSXRlbSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5pbnRlcmZhY2UgQ2hhbmdlSXRlbSB7XG4gIGdlbmVyYXRlQ2hhbmdlKCk6IE1pZ3JhdGlvbkNoYW5nZTtcbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNsYXNzIE1pZ3JhdGlvbkNsYXNzIGltcGxlbWVudHMgTWlncmF0aW9uLCBDaGFuZ2VMaXN0ZW5lciB7XG4gIGNoYW5nZUl0ZW1zOiBDaGFuZ2VJdGVtW10gPSBbXTtcbiAgY29uZmlnOiBNaWdyYXRpb25Db25maWc7XG4gIGNsaWVudCE6IEdyYXBoUUxDbGllbnQ7XG4gIGVudmlyb25tZW50ITogRW52aXJvbm1lbnRJbmZvO1xuICBtaWdyYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTWlncmF0aW9uQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGllbnQgPSBuZXcgR3JhcGhRTENsaWVudChlbmRwb2ludCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jb25maWcuYXV0aFRva2VufWAsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBhd2FpdCBmZXRjaEVudmlyb25tZW50KFxuICAgICAgdGhpcy5jbGllbnQsXG4gICAgICB0aGlzLmNvbmZpZy5lbmRwb2ludFxuICAgICk7XG4gIH1cblxuICBtb2RlbChhcGlJZDogc3RyaW5nKTogTW9kZWwge1xuICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsQ2xhc3ModGhpcywgTXV0YXRpb25Nb2RlLlVwZGF0ZSwgeyBhcGlJZCB9KTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBjcmVhdGVNb2RlbChhcmdzOiBhbnkpOiBNb2RlbCB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWxDbGFzcyh0aGlzLCBNdXRhdGlvbk1vZGUuQ3JlYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKG1vZGVsKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICB1cGRhdGVNb2RlbChhcmdzOiBhbnkpOiBNb2RlbCB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWxDbGFzcyh0aGlzLCBNdXRhdGlvbk1vZGUuVXBkYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKG1vZGVsKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBkZWxldGVNb2RlbChhcGlJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWxDbGFzcyh0aGlzLCBNdXRhdGlvbk1vZGUuRGVsZXRlLCB7IGFwaUlkIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UobW9kZWwpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGNyZWF0ZUVudW1lcmF0aW9uKGFyZ3M6IGFueSk6IEVudW1lcmF0aW9uQ3JlYXRlIHtcbiAgICBjb25zdCBlbnVtZXJhdGlvbiA9IG5ldyBFbnVtZXJhdGlvbkNsYXNzKE11dGF0aW9uTW9kZS5DcmVhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UoZW51bWVyYXRpb24pO1xuICAgIHJldHVybiBlbnVtZXJhdGlvbjtcbiAgfVxuXG4gIHVwZGF0ZUVudW1lcmF0aW9uKGFyZ3M6IGFueSk6IEVudW1lcmF0aW9uVXBkYXRlIHtcbiAgICBjb25zdCBlbnVtZXJhdGlvbiA9IG5ldyBFbnVtZXJhdGlvbkNsYXNzKE11dGF0aW9uTW9kZS5VcGRhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UoZW51bWVyYXRpb24pO1xuICAgIHJldHVybiBlbnVtZXJhdGlvbjtcbiAgfVxuXG4gIGRlbGV0ZUVudW1lcmF0aW9uKGFwaUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbnVtZXJhdGlvbiA9IG5ldyBFbnVtZXJhdGlvbkNsYXNzKE11dGF0aW9uTW9kZS5EZWxldGUsIHsgYXBpSWQgfSk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShlbnVtZXJhdGlvbik7XG4gIH1cblxuICBjcmVhdGVTdGFnZShhcmdzOiBhbnkpIHtcbiAgICBjb25zdCBzdGFnZSA9IG5ldyBTdGFnZUNsYXNzKE11dGF0aW9uTW9kZS5DcmVhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2Uoc3RhZ2UpO1xuICAgIHJldHVybiBzdGFnZTtcbiAgfVxuXG4gIHVwZGF0ZVN0YWdlKGFyZ3M6IGFueSkge1xuICAgIGNvbnN0IHN0YWdlID0gbmV3IFN0YWdlQ2xhc3MoTXV0YXRpb25Nb2RlLlVwZGF0ZSwgYXJncyk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShzdGFnZSk7XG4gICAgcmV0dXJuIHN0YWdlO1xuICB9XG5cbiAgZGVsZXRlU3RhZ2UoYXBpSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHN0YWdlID0gbmV3IFN0YWdlQ2xhc3MoTXV0YXRpb25Nb2RlLkRlbGV0ZSwgeyBhcGlJZCB9KTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKHN0YWdlKTtcbiAgICByZXR1cm4gc3RhZ2U7XG4gIH1cblxuICBjcmVhdGVMb2NhbGUoYXJnczogYW55KSB7XG4gICAgY29uc3QgbG9jYWxlID0gbmV3IExvY2FsZUNsYXNzKE11dGF0aW9uTW9kZS5DcmVhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UobG9jYWxlKTtcbiAgICByZXR1cm4gbG9jYWxlO1xuICB9XG5cbiAgdXBkYXRlTG9jYWxlKGFyZ3M6IGFueSkge1xuICAgIGNvbnN0IGxvY2FsZSA9IG5ldyBMb2NhbGVDbGFzcyhNdXRhdGlvbk1vZGUuVXBkYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKGxvY2FsZSk7XG4gICAgcmV0dXJuIGxvY2FsZTtcbiAgfVxuXG4gIGRlbGV0ZUxvY2FsZShhcGlJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9jYWxlID0gbmV3IExvY2FsZUNsYXNzKE11dGF0aW9uTW9kZS5EZWxldGUsIHsgYXBpSWQgfSk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShsb2NhbGUpO1xuICAgIHJldHVybiBsb2NhbGU7XG4gIH1cblxuICBhc3luYyBydW4oZm9yZWdyb3VuZD86IGJvb2xlYW4pOiBQcm9taXNlPE1pZ3JhdGlvbkluZm8+IHtcbiAgICBpZiAodGhpcy5taWdyYXRlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFwibWlncmF0aW9uIHByZXZpb3VzbHkgZG9uZVwiKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5wcmVwYXJlKCk7XG5cbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5nZW5lcmF0ZUNoYW5nZXMoKTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgc3VibWl0TWlncmF0aW9uKHRoaXMuY2xpZW50LCB7XG4gICAgICBlbnZpcm9ubWVudElkOiB0aGlzLmVudmlyb25tZW50LmlkLFxuICAgICAgbmFtZTogdGhpcy5jb25maWcubmFtZSxcbiAgICAgIGNoYW5nZXMsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1pZ3JhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChmb3JlZ3JvdW5kKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBtaWdyYXRpb24gPSBhd2FpdCB0aGlzLndhaXRGb3JNaWdyYXRpb24ocmVzcC5pZCk7XG4gICAgICAgIGlmIChtaWdyYXRpb24uZXJyb3JzKSB7XG4gICAgICAgICAgcmV0dXJuIG1pZ3JhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBvbmx5IGluY2x1ZGUgbmFtZSBmb3Igc3VjY2Vzc2Z1bCBtaWdyYXRpb25zLlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHJlc3AubmFtZSxcbiAgICAgICAgICAuLi5taWdyYXRpb24sXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cblxuICBkcnlSdW4oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvck1pZ3JhdGlvbihtaWdyYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNaWdyYXRpb25JbmZvPiB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcblxuICAgICAgICBjb25zdCBtaWdyYXRpb24gPSBhd2FpdCBmZXRjaE1pZ3JhdGlvbih0aGlzLmNsaWVudCwge1xuICAgICAgICAgIHByb2plY3RJZDogdGhpcy5lbnZpcm9ubWVudC5wcm9qZWN0SWQsXG4gICAgICAgICAgZW52aXJvbm1lbnROYW1lOiB0aGlzLmVudmlyb25tZW50Lm5hbWUsXG4gICAgICAgICAgbWlncmF0aW9uSWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobWlncmF0aW9uLnN0YXR1cyAhPT0gXCJRVUVVRURcIikge1xuICAgICAgICAgIHJldHVybiBtaWdyYXRpb247XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDaGFuZ2VzKCk6IE1pZ3JhdGlvbkNoYW5nZVtdIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBNaWdyYXRpb25DaGFuZ2VbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNoYW5nZUl0ZW1zKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goaXRlbS5nZW5lcmF0ZUNoYW5nZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICByZWdpc3RlckNoYW5nZShjaGFuZ2U6IENoYW5nZUl0ZW0pIHtcbiAgICB0aGlzLmNoYW5nZUl0ZW1zLnB1c2goY2hhbmdlKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBtaWdyYXRpb24uXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbWlncmF0aW9uLlxuICovXG5mdW5jdGlvbiBuZXdNaWdyYXRpb24oY29uZmlnOiBNaWdyYXRpb25Db25maWcpOiBNaWdyYXRpb24ge1xuICByZXR1cm4gbmV3IE1pZ3JhdGlvbkNsYXNzKGNvbmZpZyk7XG59XG5cbmV4cG9ydCB7XG4gIEVudmlyb25tZW50SW5mbyxcbiAgbmV3TWlncmF0aW9uLFxuICBNaWdyYXRpb25JbmZvLFxuICBNaWdyYXRpb25DaGFuZ2UsXG4gIE1pZ3JhdGlvbkNvbmZpZyxcbiAgQ2hhbmdlTGlzdGVuZXIsXG4gIENoYW5nZUl0ZW0sXG59O1xuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBZ0Q7QUFDaEQsbUNBQTRDO0FBQzVDLGlDQUtnQjtBQWFoQiwrQ0FJdUI7QUFDdkIsbUNBQTRDO0FBQzVDLHFDQUErQztBQUMvQyxtREFHeUI7QUFFekI7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FDWixPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QjtJQUNyQyw4Q0FBOEMsQ0FBQztBQXNMakQ7O0dBRUc7QUFDSCxNQUFNLGNBQWM7SUFPbEIsWUFBWSxNQUF1QjtRQU5uQyxnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFJL0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUd4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQU87UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLCtCQUFhLENBQUMsUUFBUSxFQUFFO1lBQ3hDLE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTthQUNqRDtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSx1QkFBZ0IsQ0FDdkMsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYTtRQUNqQixNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFVLENBQUMsSUFBSSxFQUFFLG1CQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBUztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFVLENBQUMsSUFBSSxF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QUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtvQkFDdEMsV0FBVztpQkFDWixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtvQkFDakMsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2FBQ0Y7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sT0FBTyxHQUFzQixFQUFFLENBQUM7UUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLE1BQXVCO0lBQzNDLE9BQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUlDLG9DQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTENsaWVudCB9IGZyb20gXCJncmFwaHFsLXJlcXVlc3RcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbENsYXNzIH0gZnJvbSBcIi4vbW9kZWxcIjtcbmltcG9ydCB7XG4gIGZldGNoRW52aXJvbm1lbnQsXG4gIGZldGNoTWlncmF0aW9uLFxuICBNdXRhdGlvbk1vZGUsXG4gIHN1Ym1pdE1pZ3JhdGlvbixcbn0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlRW51bWVyYXRpb25JbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlTW9kZWxJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlTW9kZWxJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlU3RhZ2VJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlU3RhZ2VJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlRW51bWVyYXRpb25JbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlTG9jYWxlSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZUxvY2FsZUlucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZW1vdGVUeXBlRGVmaW5pdGlvbklucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVSZW1vdGVUeXBlRGVmaW5pdGlvbklucHV0LFxufSBmcm9tIFwiLi9nZW5lcmF0ZWQvc2NoZW1hXCI7XG5pbXBvcnQge1xuICBFbnVtZXJhdGlvbkNyZWF0ZSxcbiAgRW51bWVyYXRpb25VcGRhdGUsXG4gIEVudW1lcmF0aW9uQ2xhc3MsXG59IGZyb20gXCIuL2VudW1lcmF0aW9uXCI7XG5pbXBvcnQgeyBTdGFnZSwgU3RhZ2VDbGFzcyB9IGZyb20gXCIuL3N0YWdlXCI7XG5pbXBvcnQgeyBMb2NhbGUsIExvY2FsZUNsYXNzIH0gZnJvbSBcIi4vbG9jYWxlXCI7XG5pbXBvcnQge1xuICBSZW1vdGVUeXBlRGVmaW5pdGlvbixcbiAgUmVtb3RlVHlwZURlZmluaXRpb25DbGFzcyxcbn0gZnJvbSBcIi4vUmVtb3RlVHlwZURlZlwiO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgZW5kcG9pbnQgPVxuICBwcm9jZXNzLmVudi5HUkFQSENNU19HUkFQSFFMX0VORFBPSU5UIHx8XG4gIFwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tL2dyYXBocWxcIjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIG1pZ3JhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIE1pZ3JhdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBVUkwgZW5kcG9pbnQgZm9yIHRoZSBlbnZpcm9ubWVudC5cbiAgICogRnJvbSBgU2V0dGluZ3MgPiBFbnZpcm9ubWVudHNgIG9uIGh0dHBzOi8vYXBwLmdyYXBoY21zLmNvbS5cbiAgICovXG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGlvbiBUb2tlbi5cbiAgICogRnJvbSBgU2V0dGluZ3MgPiBBUEkgQWNjZXNzYCBvbiBodHRwczovL2FwcC5ncmFwaGNtcy5jb20uXG4gICAqL1xuICBhdXRoVG9rZW46IHN0cmluZztcbiAgLyoqXG4gICAqIE5hbWUgZm9yIHRoZSBtaWdyYXRpb24uIFRoaXMgbXVzdCBiZSB1bmlxdWUgdG8gdGhpcyBtaWdyYXRpb24uXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWlncmF0aW9uQ2hhbmdlIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5pbnRlcmZhY2UgRW52aXJvbm1lbnRJbmZvIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlbmRwb2ludDogc3RyaW5nO1xuICBwcm9qZWN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIG1pZ3JhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIE1pZ3JhdGlvbkluZm8ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIGVycm9ycz86IHN0cmluZztcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBmaW5pc2hlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdyYXBoQ01TIE1pZ3JhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIE1pZ3JhdGlvbiB7XG4gIC8qKlxuICAgKiBSdW4gdGhlIG1pZ3JhdGlvblxuICAgKiBAcGFyYW0gZm9yZWdyb3VuZCBjb25maWd1cmVzIGlmIHRoZSBtaWdyYXRpb24gc2hvdWxkIHJ1biBpbiB0aGUgZm9yZWdyb3VuZC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIG1pZ3JhdGlvbiBpcyBvbmx5IHNjaGVkdWxlZC4gVG8gd2FpdCBmb3IgdGhlIG1pZ3JhdGlvbiB0byBydW4sXG4gICAqIHNldCBgZm9yZWdyb3VuZGAgdG8gYHRydWVgLlxuICAgKi9cbiAgcnVuKGZvcmVncm91bmQ/OiBib29sZWFuKTogUHJvbWlzZTxNaWdyYXRpb25JbmZvPjtcblxuICAvKipcbiAgICogRHJ5IHJ1biB0aGUgbWlncmF0aW9uLiBUaGlzIHJldHVybnMgdGhlIGNoYW5nZXMgdG8gYmUgYXBwbGllZCB3aXRob3V0IHJ1bm5pbmdcbiAgICogdGhlIG1pZ3JhdGlvbi5cbiAgICovXG4gIGRyeVJ1bigpOiBhbnk7XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuIGV4aXN0aW5nIG1vZGVsXG4gICAqIEBwYXJhbSBhcGlJZCB0aGUgYGFwaUlkYCBmb3IgdGhlIG1vZGVsLlxuICAgKi9cbiAgbW9kZWwoYXBpSWQ6IHN0cmluZyk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgbW9kZWxcbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3IgdGhlIG5ldyBtb2RlbC5cbiAgICovXG4gIGNyZWF0ZU1vZGVsKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZU1vZGVsSW5wdXQpOiBNb2RlbDtcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIG1vZGVsXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgZm9yIG1vZGVsIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZU1vZGVsKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZU1vZGVsSW5wdXQpOiBNb2RlbDtcblxuICAvKipcbiAgICogRGVsZXRlIGEgbW9kZWxcbiAgICogQHBhcmFtIGFwaUlkIHRoZSBgYXBpSWRgIG9mIHRoZSBtb2RlbCB0byBkZWxldGUuXG4gICAqL1xuICBkZWxldGVNb2RlbChhcGlJZDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJlbW90ZSB0eXBlIGRlZmluaXRpb25cbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3IgdGhlIG5ldyB0eXBlIGRlZmluaXRpb24uXG4gICAqL1xuICBjcmVhdGVSZW1vdGVUeXBlRGVmaW5pdGlvbihcbiAgICBhcmdzOiBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZW1vdGVUeXBlRGVmaW5pdGlvbklucHV0XG4gICk6IFJlbW90ZVR5cGVEZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgcmVtb3RlIHR5cGUgZGVmaW5pdGlvblxuICAgKiBAcGFyYW0gYXJncyBvcHRpb25zIGZvciByZW1vdGUgdHlwZSBkZWZpbml0aW9uIHRvIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZVJlbW90ZVR5cGVEZWZpbml0aW9uKFxuICAgIGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVJlbW90ZVR5cGVEZWZpbml0aW9uSW5wdXRcbiAgKTogUmVtb3RlVHlwZURlZmluaXRpb247XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHJlbW90ZSB0eXBlIGRlZmluaXRpb25cbiAgICogQHBhcmFtIGFwaUlkIHRoZSBgYXBpSWRgIG9mIHRoZSByZW1vdGUgdHlwZSBkZWZpbml0aW9uIHRvIGRlbGV0ZS5cbiAgICovXG4gIGRlbGV0ZVJlbW90ZVR5cGVEZWZpbml0aW9uKGFwaUlkOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgZW51bWVyYXRpb25cbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3IgdGhlIG5ldyBlbnVtZXJhdGlvbi5cbiAgICovXG4gIGNyZWF0ZUVudW1lcmF0aW9uKFxuICAgIGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUVudW1lcmF0aW9uSW5wdXRcbiAgKTogRW51bWVyYXRpb25DcmVhdGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBlbnVtZXJhdGlvblxuICAgKiBAcGFyYW0gYXJncyBvcHRpb25zIGZvciB0aGUgbmV3IGVudW1lcmF0aW9uLlxuICAgKi9cbiAgdXBkYXRlRW51bWVyYXRpb24oXG4gICAgYXJnczogR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlRW51bWVyYXRpb25JbnB1dFxuICApOiBFbnVtZXJhdGlvblVwZGF0ZTtcblxuICAvKipcbiAgICogRGVsZXRlIGFuIGVudW1lcmF0aW9uXG4gICAqIEBwYXJhbSBhcGlJZCBhcGlJZCBvZiB0aGUgZW51bWVyYXRpb24gdG8gZGVsZXRlLlxuICAgKi9cbiAgZGVsZXRlRW51bWVyYXRpb24oYXBpSWQ6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzdGFnZVxuICAgKiBAcGFyYW0gYXJncyBvcHRpb25zIGZvciB0aGUgbmV3IHN0YWdlLlxuICAgKi9cbiAgY3JlYXRlU3RhZ2UoYXJnczogR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlU3RhZ2VJbnB1dCk6IFN0YWdlO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3Rpbmcgc3RhZ2VcbiAgICogQHBhcmFtIGFyZ3Mgb3B0aW9ucyBmb3Igc3RhZ2UgdXBkYXRlLlxuICAgKi9cbiAgdXBkYXRlU3RhZ2UoYXJnczogR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlU3RhZ2VJbnB1dCk6IFN0YWdlO1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBzdGFnZVxuICAgKiBAcGFyYW0gYXBpSWQgdGhlIGBhcGlJZGAgb2YgdGhlIHN0YWdlIHRvIGRlbGV0ZS5cbiAgICovXG4gIGRlbGV0ZVN0YWdlKGFwaUlkOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgbG9jYWxlXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgZm9yIHRoZSBuZXcgbG9jYWxlLlxuICAgKi9cbiAgY3JlYXRlTG9jYWxlKGFyZ3M6IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUxvY2FsZUlucHV0KTogTG9jYWxlO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgbG9jYWxlXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgZm9yIGxvY2FsZSB1cGRhdGUuXG4gICAqL1xuICB1cGRhdGVMb2NhbGUoYXJnczogR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlTG9jYWxlSW5wdXQpOiBMb2NhbGU7XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGxvY2FsZVxuICAgKiBAcGFyYW0gYXBpSWQgdGhlIGBhcGlJZGAgb2YgdGhlIGxvY2FsZSB0byBkZWxldGUuXG4gICAqL1xuICBkZWxldGVMb2NhbGUoYXBpSWQ6IHN0cmluZyk6IHZvaWQ7XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5pbnRlcmZhY2UgQ2hhbmdlTGlzdGVuZXIge1xuICByZWdpc3RlckNoYW5nZShpdGVtOiBDaGFuZ2VJdGVtKTogdm9pZDtcbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmludGVyZmFjZSBDaGFuZ2VJdGVtIHtcbiAgZ2VuZXJhdGVDaGFuZ2UoKTogTWlncmF0aW9uQ2hhbmdlO1xufVxuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY2xhc3MgTWlncmF0aW9uQ2xhc3MgaW1wbGVtZW50cyBNaWdyYXRpb24sIENoYW5nZUxpc3RlbmVyIHtcbiAgY2hhbmdlSXRlbXM6IENoYW5nZUl0ZW1bXSA9IFtdO1xuICBjb25maWc6IE1pZ3JhdGlvbkNvbmZpZztcbiAgY2xpZW50ITogR3JhcGhRTENsaWVudDtcbiAgZW52aXJvbm1lbnQhOiBFbnZpcm9ubWVudEluZm87XG4gIG1pZ3JhdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBNaWdyYXRpb25Db25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsaWVudCA9IG5ldyBHcmFwaFFMQ2xpZW50KGVuZHBvaW50LCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNvbmZpZy5hdXRoVG9rZW59YCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGF3YWl0IGZldGNoRW52aXJvbm1lbnQoXG4gICAgICB0aGlzLmNsaWVudCxcbiAgICAgIHRoaXMuY29uZmlnLmVuZHBvaW50XG4gICAgKTtcbiAgfVxuXG4gIG1vZGVsKGFwaUlkOiBzdHJpbmcpOiBNb2RlbCB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWxDbGFzcyh0aGlzLCBNdXRhdGlvbk1vZGUuVXBkYXRlLCB7IGFwaUlkIH0pO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGNyZWF0ZU1vZGVsKGFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHRoaXMsIE11dGF0aW9uTW9kZS5DcmVhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UobW9kZWwpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHVwZGF0ZU1vZGVsKGFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHRoaXMsIE11dGF0aW9uTW9kZS5VcGRhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UobW9kZWwpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGRlbGV0ZU1vZGVsKGFwaUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHRoaXMsIE11dGF0aW9uTW9kZS5EZWxldGUsIHsgYXBpSWQgfSk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShtb2RlbCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgY3JlYXRlUmVtb3RlVHlwZURlZmluaXRpb24oYXJnczogYW55KTogUmVtb3RlVHlwZURlZmluaXRpb24ge1xuICAgIGNvbnN0IHJlbW90ZVR5cGVEZWZpbml0aW9uID0gbmV3IFJlbW90ZVR5cGVEZWZpbml0aW9uQ2xhc3MoXG4gICAgICBNdXRhdGlvbk1vZGUuQ3JlYXRlLFxuICAgICAgYXJnc1xuICAgICk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShyZW1vdGVUeXBlRGVmaW5pdGlvbik7XG4gICAgcmV0dXJuIHJlbW90ZVR5cGVEZWZpbml0aW9uO1xuICB9XG5cbiAgdXBkYXRlUmVtb3RlVHlwZURlZmluaXRpb24oYXJnczogYW55KTogUmVtb3RlVHlwZURlZmluaXRpb24ge1xuICAgIGNvbnN0IHJlbW90ZVR5cGVEZWZpbml0aW9uID0gbmV3IFJlbW90ZVR5cGVEZWZpbml0aW9uQ2xhc3MoXG4gICAgICBNdXRhdGlvbk1vZGUuVXBkYXRlLFxuICAgICAgYXJnc1xuICAgICk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShyZW1vdGVUeXBlRGVmaW5pdGlvbik7XG4gICAgcmV0dXJuIHJlbW90ZVR5cGVEZWZpbml0aW9uO1xuICB9XG5cbiAgZGVsZXRlUmVtb3RlVHlwZURlZmluaXRpb24oYXBpSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJlbW90ZVR5cGVEZWZpbml0aW9uID0gbmV3IFJlbW90ZVR5cGVEZWZpbml0aW9uQ2xhc3MoXG4gICAgICBNdXRhdGlvbk1vZGUuRGVsZXRlLFxuICAgICAgeyBhcGlJZCB9XG4gICAgKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKHJlbW90ZVR5cGVEZWZpbml0aW9uKTtcbiAgICByZXR1cm4gcmVtb3RlVHlwZURlZmluaXRpb247XG4gIH1cblxuICBjcmVhdGVFbnVtZXJhdGlvbihhcmdzOiBhbnkpOiBFbnVtZXJhdGlvbkNyZWF0ZSB7XG4gICAgY29uc3QgZW51bWVyYXRpb24gPSBuZXcgRW51bWVyYXRpb25DbGFzcyhNdXRhdGlvbk1vZGUuQ3JlYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKGVudW1lcmF0aW9uKTtcbiAgICByZXR1cm4gZW51bWVyYXRpb247XG4gIH1cblxuICB1cGRhdGVFbnVtZXJhdGlvbihhcmdzOiBhbnkpOiBFbnVtZXJhdGlvblVwZGF0ZSB7XG4gICAgY29uc3QgZW51bWVyYXRpb24gPSBuZXcgRW51bWVyYXRpb25DbGFzcyhNdXRhdGlvbk1vZGUuVXBkYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKGVudW1lcmF0aW9uKTtcbiAgICByZXR1cm4gZW51bWVyYXRpb247XG4gIH1cblxuICBkZWxldGVFbnVtZXJhdGlvbihhcGlJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZW51bWVyYXRpb24gPSBuZXcgRW51bWVyYXRpb25DbGFzcyhNdXRhdGlvbk1vZGUuRGVsZXRlLCB7IGFwaUlkIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UoZW51bWVyYXRpb24pO1xuICB9XG5cbiAgY3JlYXRlU3RhZ2UoYXJnczogYW55KSB7XG4gICAgY29uc3Qgc3RhZ2UgPSBuZXcgU3RhZ2VDbGFzcyhNdXRhdGlvbk1vZGUuQ3JlYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKHN0YWdlKTtcbiAgICByZXR1cm4gc3RhZ2U7XG4gIH1cblxuICB1cGRhdGVTdGFnZShhcmdzOiBhbnkpIHtcbiAgICBjb25zdCBzdGFnZSA9IG5ldyBTdGFnZUNsYXNzKE11dGF0aW9uTW9kZS5VcGRhdGUsIGFyZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2Uoc3RhZ2UpO1xuICAgIHJldHVybiBzdGFnZTtcbiAgfVxuXG4gIGRlbGV0ZVN0YWdlKGFwaUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFnZSA9IG5ldyBTdGFnZUNsYXNzKE11dGF0aW9uTW9kZS5EZWxldGUsIHsgYXBpSWQgfSk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShzdGFnZSk7XG4gICAgcmV0dXJuIHN0YWdlO1xuICB9XG5cbiAgY3JlYXRlTG9jYWxlKGFyZ3M6IGFueSkge1xuICAgIGNvbnN0IGxvY2FsZSA9IG5ldyBMb2NhbGVDbGFzcyhNdXRhdGlvbk1vZGUuQ3JlYXRlLCBhcmdzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ2hhbmdlKGxvY2FsZSk7XG4gICAgcmV0dXJuIGxvY2FsZTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2FsZShhcmdzOiBhbnkpIHtcbiAgICBjb25zdCBsb2NhbGUgPSBuZXcgTG9jYWxlQ2xhc3MoTXV0YXRpb25Nb2RlLlVwZGF0ZSwgYXJncyk7XG4gICAgdGhpcy5yZWdpc3RlckNoYW5nZShsb2NhbGUpO1xuICAgIHJldHVybiBsb2NhbGU7XG4gIH1cblxuICBkZWxldGVMb2NhbGUoYXBpSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2FsZSA9IG5ldyBMb2NhbGVDbGFzcyhNdXRhdGlvbk1vZGUuRGVsZXRlLCB7IGFwaUlkIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJDaGFuZ2UobG9jYWxlKTtcbiAgICByZXR1cm4gbG9jYWxlO1xuICB9XG5cbiAgYXN5bmMgcnVuKGZvcmVncm91bmQ/OiBib29sZWFuKTogUHJvbWlzZTxNaWdyYXRpb25JbmZvPiB7XG4gICAgaWYgKHRoaXMubWlncmF0ZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcIm1pZ3JhdGlvbiBwcmV2aW91c2x5IGRvbmVcIik7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucHJlcGFyZSgpO1xuXG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuZ2VuZXJhdGVDaGFuZ2VzKCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHN1Ym1pdE1pZ3JhdGlvbih0aGlzLmNsaWVudCwge1xuICAgICAgZW52aXJvbm1lbnRJZDogdGhpcy5lbnZpcm9ubWVudC5pZCxcbiAgICAgIG5hbWU6IHRoaXMuY29uZmlnLm5hbWUsXG4gICAgICBjaGFuZ2VzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5taWdyYXRlZCA9IHRydWU7XG5cbiAgICBpZiAoZm9yZWdyb3VuZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWlncmF0aW9uID0gYXdhaXQgdGhpcy53YWl0Rm9yTWlncmF0aW9uKHJlc3AuaWQpO1xuICAgICAgICBpZiAobWlncmF0aW9uLmVycm9ycykge1xuICAgICAgICAgIHJldHVybiBtaWdyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gb25seSBpbmNsdWRlIG5hbWUgZm9yIHN1Y2Nlc3NmdWwgbWlncmF0aW9ucy5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiByZXNwLm5hbWUsXG4gICAgICAgICAgLi4ubWlncmF0aW9uLFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNwO1xuICB9XG5cbiAgZHJ5UnVuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRGb3JNaWdyYXRpb24obWlncmF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWlncmF0aW9uSW5mbz4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7XG5cbiAgICAgICAgY29uc3QgbWlncmF0aW9uID0gYXdhaXQgZmV0Y2hNaWdyYXRpb24odGhpcy5jbGllbnQsIHtcbiAgICAgICAgICBwcm9qZWN0SWQ6IHRoaXMuZW52aXJvbm1lbnQucHJvamVjdElkLFxuICAgICAgICAgIGVudmlyb25tZW50TmFtZTogdGhpcy5lbnZpcm9ubWVudC5uYW1lLFxuICAgICAgICAgIG1pZ3JhdGlvbklkLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1pZ3JhdGlvbi5zdGF0dXMgIT09IFwiUVVFVUVEXCIpIHtcbiAgICAgICAgICByZXR1cm4gbWlncmF0aW9uO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2hhbmdlcygpOiBNaWdyYXRpb25DaGFuZ2VbXSB7XG4gICAgY29uc3QgY2hhbmdlczogTWlncmF0aW9uQ2hhbmdlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jaGFuZ2VJdGVtcykge1xuICAgICAgY2hhbmdlcy5wdXNoKGl0ZW0uZ2VuZXJhdGVDaGFuZ2UoKSk7XG4gICAgfVxuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG5cbiAgcmVnaXN0ZXJDaGFuZ2UoY2hhbmdlOiBDaGFuZ2VJdGVtKSB7XG4gICAgdGhpcy5jaGFuZ2VJdGVtcy5wdXNoKGNoYW5nZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgbWlncmF0aW9uLlxuICogQHBhcmFtIGNvbmZpZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIG1pZ3JhdGlvbi5cbiAqL1xuZnVuY3Rpb24gbmV3TWlncmF0aW9uKGNvbmZpZzogTWlncmF0aW9uQ29uZmlnKTogTWlncmF0aW9uIHtcbiAgcmV0dXJuIG5ldyBNaWdyYXRpb25DbGFzcyhjb25maWcpO1xufVxuXG5leHBvcnQge1xuICBFbnZpcm9ubWVudEluZm8sXG4gIG5ld01pZ3JhdGlvbixcbiAgTWlncmF0aW9uSW5mbyxcbiAgTWlncmF0aW9uQ2hhbmdlLFxuICBNaWdyYXRpb25Db25maWcsXG4gIENoYW5nZUxpc3RlbmVyLFxuICBDaGFuZ2VJdGVtLFxufTtcbiJdfQ== |
import { MutationMode, PartialBy, RelationType } from "./util"; | ||
import { ChangeItem, ChangeListener, MigrationChange } from "./migration"; | ||
import { GraphQLBatchMigrationCreateEnumerableFieldInput, GraphQLBatchMigrationCreateModelInput, GraphQLBatchMigrationCreateRelationalFieldInput, GraphQLBatchMigrationCreateReverseRelationalFieldInput, GraphQLBatchMigrationCreateReverseUnionFieldInput, GraphQLBatchMigrationCreateSimpleFieldInput, GraphQLBatchMigrationCreateUnionFieldInput, GraphQLBatchMigrationUpdateEnumerableFieldInput, GraphQLBatchMigrationUpdateModelInput, GraphQLBatchMigrationUpdateRelationalFieldInput, GraphQLBatchMigrationUpdateSimpleFieldInput, GraphQLBatchMigrationUpdateUnionFieldInput, GraphQLFieldValidationFloatRangeInput, GraphQLFieldValidationIntRangeInput, GraphQLFieldValidationRegExInput } from "./generated/schema"; | ||
import { GraphQLBatchMigrationCreateEnumerableFieldInput, GraphQLBatchMigrationCreateModelInput, GraphQLBatchMigrationCreateRelationalFieldInput, GraphQLBatchMigrationCreateRemoteFieldInput, GraphQLBatchMigrationCreateReverseRelationalFieldInput, GraphQLBatchMigrationCreateReverseUnionFieldInput, GraphQLBatchMigrationCreateSimpleFieldInput, GraphQLBatchMigrationCreateUnionFieldInput, GraphQLBatchMigrationUpdateEnumerableFieldInput, GraphQLBatchMigrationUpdateModelInput, GraphQLBatchMigrationUpdateRelationalFieldInput, GraphQLBatchMigrationUpdateSimpleFieldInput, GraphQLBatchMigrationUpdateUnionFieldInput, GraphQLFieldValidationFloatRangeInput, GraphQLFieldValidationIntRangeInput, GraphQLFieldValidationRegExInput } from "./generated/schema"; | ||
declare type ModelArgs = GraphQLBatchMigrationCreateModelInput | GraphQLBatchMigrationUpdateModelInput; | ||
@@ -40,2 +40,7 @@ /** | ||
} | ||
/** | ||
* Create Remote Field | ||
*/ | ||
interface CreateRemoteFieldArgs extends Omit<GraphQLBatchMigrationCreateRemoteFieldInput, "modelApiId" | "type"> { | ||
} | ||
interface UpdateSimpleFieldArgs extends Omit<GraphQLBatchMigrationUpdateSimpleFieldInput, "validations" | "modelApiId"> { | ||
@@ -54,2 +59,7 @@ validations?: FieldValidationArgs; | ||
/** | ||
* Add a new remote field to the model. | ||
* @param field options for the field. | ||
*/ | ||
addRemoteField(field: CreateRemoteFieldArgs): Model; | ||
/** | ||
* Update an existing field | ||
@@ -104,2 +114,3 @@ * @param field options for the field. | ||
addSimpleField(fieldArgs: any): Model; | ||
addRemoteField(fieldArgs: any): Model; | ||
updateSimpleField(fieldArgs: any): Model; | ||
@@ -106,0 +117,0 @@ addRelationalField(fieldArgs: any): Model; |
@@ -29,2 +29,13 @@ "use strict"; | ||
} | ||
addRemoteField(fieldArgs) { | ||
fieldArgs.modelApiId = this.args.apiId; | ||
fieldArgs.type = schema_1.GraphQLRemoteFieldType.Remote; | ||
fieldArgs.remoteConfig.headers = fieldArgs.remoteConfig.headers || {}; | ||
fieldArgs.remoteConfig.payloadFieldApiIds = | ||
fieldArgs.remoteConfig.payloadFieldApiIds || []; | ||
fieldArgs.remoteConfig.method = fieldArgs.remoteConfig.method || "GET"; | ||
const field = new field_1.Field(fieldArgs, util_1.MutationMode.Create, field_1.FieldType.RemoteField); | ||
this.listener.registerChange(field); | ||
return this; | ||
} | ||
updateSimpleField(fieldArgs) { | ||
@@ -66,2 +77,4 @@ fieldArgs.modelApiId = this.args.apiId; | ||
} | ||
// asset needs reverse field to be list | ||
fieldArgs.reverseField.isList = true; | ||
} | ||
@@ -206,2 +219,2 @@ else { | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTJDO0FBQzNDLGlDQUErRDtBQUUvRCx5Q0FBc0M7QUFDdEMsK0NBa0I0QjtBQThJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVU7SUFDZCxZQUNVLFFBQXdCLEVBQ3hCLElBQWtCLEVBQ2xCLElBQWU7UUFGZixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQVc7SUFDdEIsQ0FBQztJQUVKLGNBQWMsQ0FBQyxTQUFjO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLCtCQUFzQixDQUFDLE1BQU0sRUFBRTtZQUNwRCxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLElBQUksbUJBQVEsQ0FBQyxVQUFVLENBQUM7U0FDeEU7UUFFRCxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDekIsU0FBUyxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1RDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLFNBQVMsRUFBRSxtQkFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWM7UUFDOUIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV2QyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDekIsU0FBUyxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsQ0FB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R0FBRyxHQUFHLEVBQUUsS0FBSyxRQUFFLFNBQVMsQ0FBQyxXQUFXLDBDQUFFLEtBQUssRUFBRSxDQUFDO1lBQzFELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLFNBQUcsU0FBUyxDQUFDLFdBQVcsMENBQUUsYUFBYSxDQUFDO2FBQ3RFO1lBQ0QsTUFBTTtRQUVSLEtBQUssK0JBQXNCLENBQUMsS0FBSztZQUMvQixXQUFXLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxRQUFFLFNBQVMsQ0FBQyxXQUFXLDBDQUFFLEtBQUssRUFBRSxDQUFDO1lBQzVELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLFNBQUcsU0FBUyxDQUFDLFdBQVcsMENBQUUsYUFBYSxDQUFDO2FBQ3hFO1lBQ0QsTUFBTTtRQUVSLEtBQUssK0JBQXNCLENBQUMsTUFBTTtZQUNoQyxXQUFXLENBQUMsTUFBTSxHQUFHO2dCQUNuQixVQUFVLFFBQUUsU0FBUyxDQUFDLFdBQVcsMENBQUUsVUFBVTtnQkFDN0MsT0FBTyxRQUFFLFNBQVMsQ0FBQyxXQUFXLDBDQUFFLE9BQU87Z0JBQ3ZDLFVBQVUsUUFBRSxTQUFTLENBQUMsV0FBVywwQ0FBRSxVQUFVO2FBQzlDLENBQUM7WUFDRixJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxTQUFHLFNBQVMsQ0FBQyxXQUFXLDBDQUFFLGFBQWEsQ0FBQzthQUN6RTtZQUNELE1BQU07UUFFUjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkLCBGaWVsZFR5cGUgfSBmcm9tIFwiLi9maWVsZFwiO1xuaW1wb3J0IHsgTXV0YXRpb25Nb2RlLCBQYXJ0aWFsQnksIFJlbGF0aW9uVHlwZSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IENoYW5nZUl0ZW0sIENoYW5nZUxpc3RlbmVyLCBNaWdyYXRpb25DaGFuZ2UgfSBmcm9tIFwiLi9taWdyYXRpb25cIjtcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSBcIi4vcmVuZGVyZXJcIjtcbmltcG9ydCB7XG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUVudW1lcmFibGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVNb2RlbElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZWxhdGlvbmFsRmllbGRJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlUmV2ZXJzZVJlbGF0aW9uYWxGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZXZlcnNlVW5pb25GaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVTaW1wbGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVVbmlvbkZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZUVudW1lcmFibGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVNb2RlbElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVSZWxhdGlvbmFsRmllbGRJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlU2ltcGxlRmllbGRJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlVW5pb25GaWVsZElucHV0LFxuICBHcmFwaFFMRmllbGRWYWxpZGF0aW9uRmxvYXRSYW5nZUlucHV0LFxuICBHcmFwaFFMRmllbGRWYWxpZGF0aW9uSW50UmFuZ2VJbnB1dCxcbiAgR3JhcGhRTEZpZWxkVmFsaWRhdGlvblJlZ0V4SW5wdXQsXG4gIEdyYXBoUUxTaW1wbGVGaWVsZFR5cGUsXG4gIEdyYXBoUUxTaW1wbGVGaWVsZFZhbGlkYXRpb25zSW5wdXQsXG59IGZyb20gXCIuL2dlbmVyYXRlZC9zY2hlbWFcIjtcblxudHlwZSBNb2RlbEFyZ3MgPVxuICB8IEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZU1vZGVsSW5wdXRcbiAgfCBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVNb2RlbElucHV0O1xuXG4vKipcbiAqIFJlbGF0aW9uYWwgRmllbGRzXG4gKi9cbmludGVyZmFjZSBSZWxhdGlvbmFsRmllbGRBcmdzXG4gIGV4dGVuZHMgT21pdDxcbiAgICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZWxhdGlvbmFsRmllbGRJbnB1dCxcbiAgICBcInJldmVyc2VGaWVsZFwiXG4gID4ge1xuICByZWxhdGlvblR5cGU6IFJlbGF0aW9uVHlwZTtcbiAgbW9kZWw6IHN0cmluZztcbiAgcmV2ZXJzZUZpZWxkPzogT21pdDxcbiAgICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZXZlcnNlUmVsYXRpb25hbEZpZWxkSW5wdXQsXG4gICAgXCJtb2RlbEFwaUlkXCIgfCBcImlzTGlzdFwiXG4gID47XG59XG5cbi8qKlxuICogQ3JlYXRlIFVuaW9uIEZpZWxkXG4gKi9cbmludGVyZmFjZSBDcmVhdGVVbmlvbkZpZWxkQXJnc1xuICBleHRlbmRzIE9taXQ8R3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlVW5pb25GaWVsZElucHV0LCBcInJldmVyc2VGaWVsZFwiPiB7XG4gIHJlbGF0aW9uVHlwZTogUmVsYXRpb25UeXBlO1xuICBtb2RlbHM6IHN0cmluZ1tdO1xuICByZXZlcnNlRmllbGQ/OiBPbWl0PFxuICAgIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJldmVyc2VVbmlvbkZpZWxkSW5wdXQsXG4gICAgXCJtb2RlbEFwaUlkc1wiIHwgXCJpc0xpc3RcIlxuICA+O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBVbmlvbiBGaWVsZFxuICovXG5pbnRlcmZhY2UgVXBkYXRlVW5pb25GaWVsZEFyZ3NcbiAgZXh0ZW5kcyBPbWl0PEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVVuaW9uRmllbGRJbnB1dCwgXCJyZXZlcnNlRmllbGRcIj4ge1xuICBtb2RlbHM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIEZpZWxkVmFsaWRhdGlvbkFyZ3Mge1xuICByYW5nZT86IEdyYXBoUUxGaWVsZFZhbGlkYXRpb25GbG9hdFJhbmdlSW5wdXQ7XG4gIGNoYXJhY3RlcnM/OiBHcmFwaFFMRmllbGRWYWxpZGF0aW9uSW50UmFuZ2VJbnB1dDtcbiAgbGlzdEl0ZW1Db3VudD86IEdyYXBoUUxGaWVsZFZhbGlkYXRpb25JbnRSYW5nZUlucHV0O1xuICBtYXRjaGVzPzogR3JhcGhRTEZpZWxkVmFsaWRhdGlvblJlZ0V4SW5wdXQ7XG4gIG5vdE1hdGNoZXM/OiBHcmFwaFFMRmllbGRWYWxpZGF0aW9uUmVnRXhJbnB1dDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgU2ltcGxlIEZpZWxkXG4gKi9cbmludGVyZmFjZSBDcmVhdGVTaW1wbGVGaWVsZEFyZ3NcbiAgZXh0ZW5kcyBPbWl0PFxuICAgIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVNpbXBsZUZpZWxkSW5wdXQsXG4gICAgXCJ2YWxpZGF0aW9uc1wiIHwgXCJtb2RlbEFwaUlkXCJcbiAgPiB7XG4gIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uQXJncztcbn1cblxuaW50ZXJmYWNlIFVwZGF0ZVNpbXBsZUZpZWxkQXJnc1xuICBleHRlbmRzIE9taXQ8XG4gICAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlU2ltcGxlRmllbGRJbnB1dCxcbiAgICBcInZhbGlkYXRpb25zXCIgfCBcIm1vZGVsQXBpSWRcIlxuICA+IHtcbiAgdmFsaWRhdGlvbnM/OiBGaWVsZFZhbGlkYXRpb25BcmdzO1xufVxuXG4vKipcbiAqIEdyYXBoQ01TIE1vZGVsXG4gKi9cbmludGVyZmFjZSBNb2RlbCB7XG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZmllbGQgdG8gdGhlIG1vZGVsLlxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgYWRkU2ltcGxlRmllbGQoZmllbGQ6IENyZWF0ZVNpbXBsZUZpZWxkQXJncyk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkIG9wdGlvbnMgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIHVwZGF0ZVNpbXBsZUZpZWxkKGZpZWxkOiBVcGRhdGVTaW1wbGVGaWVsZEFyZ3MpOiBNb2RlbDtcblxuICAvKipcbiAgICogQWRkIGEgcmVsYXRpb25hbCBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIHJlbGF0aW9uYWwgZmllbGQuXG4gICAqL1xuICBhZGRSZWxhdGlvbmFsRmllbGQoXG4gICAgZmllbGQ6IE9taXQ8XG4gICAgICBQYXJ0aWFsQnk8UmVsYXRpb25hbEZpZWxkQXJncywgXCJyZXZlcnNlRmllbGRcIiB8IFwidHlwZVwiPixcbiAgICAgIFwibW9kZWxBcGlJZFwiXG4gICAgPlxuICApOiBNb2RlbDtcblxuICAvKipcbiAgICogVXBkYXRlIGEgcmVsYXRpb25hbCBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIHJlbGF0aW9uYWwgZmllbGQuXG4gICAqL1xuICB1cGRhdGVSZWxhdGlvbmFsRmllbGQoXG4gICAgZmllbGQ6IE9taXQ8R3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlUmVsYXRpb25hbEZpZWxkSW5wdXQsIFwibW9kZWxBcGlJZFwiPlxuICApOiBNb2RlbDtcblxuICAvKipcbiAgICogQWRkIGEgdW5pb24gZmllbGRcbiAgICogQHBhcmFtIGZpZWxkIG9wdGlvbnMgZm9yIHRoZSB1bmlvbiBmaWVsZC5cbiAgICovXG4gIGFkZFVuaW9uRmllbGQoXG4gICAgZmllbGQ6IE9taXQ8UGFydGlhbEJ5PENyZWF0ZVVuaW9uRmllbGRBcmdzLCBcInJldmVyc2VGaWVsZFwiPiwgXCJtb2RlbEFwaUlkXCI+XG4gICk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSB1bmlvbiBmaWVsZC5cbiAgICogQHBhcmFtIGZpZWxkIG9wdGlvbnMgZm9yIHRoZSB1bmlvbiBmaWVsZC5cbiAgICovXG4gIHVwZGF0ZVVuaW9uRmllbGQoZmllbGQ6IE9taXQ8VXBkYXRlVW5pb25GaWVsZEFyZ3MsIFwibW9kZWxBcGlJZFwiPik6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gZW51bWVyYWJsZSBmaWVsZC5cbiAgICogQHBhcmFtIGZpZWxkIG9wdGlvbnMgZm9yIHRoZSBlbnVtZXJhYmxlIGZpZWxkLlxuICAgKi9cbiAgYWRkRW51bWVyYWJsZUZpZWxkKFxuICAgIGZpZWxkOiBPbWl0PEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZUVudW1lcmFibGVGaWVsZElucHV0LCBcIm1vZGVsQXBpSWRcIj5cbiAgKTogTW9kZWw7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBlbnVtZXJhYmxlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCBvcHRpb25zIGZvciB0aGUgZW51bWVyYWJsZSBmaWVsZC5cbiAgICovXG4gIHVwZGF0ZUVudW1lcmFibGVGaWVsZChcbiAgICBmaWVsZDogT21pdDxHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVFbnVtZXJhYmxlRmllbGRJbnB1dCwgXCJtb2RlbEFwaUlkXCI+XG4gICk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBmaWVsZFxuICAgKiBAcGFyYW0gYXBpSWQgdGhlIGFwaUlkIG9mIHRoZSBmaWVsZCB0byBkZWxldGUuXG4gICAqL1xuICBkZWxldGVGaWVsZChhcGlJZDogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNsYXNzIE1vZGVsQ2xhc3MgaW1wbGVtZW50cyBNb2RlbCwgQ2hhbmdlSXRlbSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGlzdGVuZXI6IENoYW5nZUxpc3RlbmVyLFxuICAgIHByaXZhdGUgbW9kZTogTXV0YXRpb25Nb2RlLFxuICAgIHByaXZhdGUgYXJnczogTW9kZWxBcmdzXG4gICkge31cblxuICBhZGRTaW1wbGVGaWVsZChmaWVsZEFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBmaWVsZEFyZ3MubW9kZWxBcGlJZCA9IHRoaXMuYXJncy5hcGlJZDtcbiAgICBpZiAoZmllbGRBcmdzLnR5cGUgPT09IEdyYXBoUUxTaW1wbGVGaWVsZFR5cGUuU3RyaW5nKSB7XG4gICAgICBmaWVsZEFyZ3MuZm9ybVJlbmRlcmVyID0gZmllbGRBcmdzLmZvcm1SZW5kZXJlciB8fCBSZW5kZXJlci5TaW5nbGVMaW5lO1xuICAgIH1cblxuICAgIGlmIChmaWVsZEFyZ3MudmFsaWRhdGlvbnMpIHtcbiAgICAgIGZpZWxkQXJncy52YWxpZGF0aW9ucyA9IGV4dHJhY3RGaWVsZFZhbGlkYXRpb25zKGZpZWxkQXJncyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoZmllbGRBcmdzLCBNdXRhdGlvbk1vZGUuQ3JlYXRlKTtcbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZVNpbXBsZUZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuXG4gICAgaWYgKGZpZWxkQXJncy52YWxpZGF0aW9ucykge1xuICAgICAgZmllbGRBcmdzLnZhbGlkYXRpb25zID0gZXh0cmFjdEZpZWxkVmFsaWRhdGlvbnMoZmllbGRBcmdzKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChmaWVsZEFyZ3MsIE11dGF0aW9uTW9kZS5VcGRhdGUpO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUmVsYXRpb25hbEZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuICAgIGlmIChcbiAgICAgIChmaWVsZEFyZ3MudHlwZSAmJiBmaWVsZEFyZ3MudHlwZSA9PT0gXCJBU1NFVFwiKSB8fFxuICAgICAgKGZpZWxkQXJncy5tb2RlbCAmJiBmaWVsZEFyZ3MubW9kZWwgPT09IFwiQXNzZXRcIilcbiAgICApIHtcbiAgICAgIGZpZWxkQXJncy50eXBlID0gXCJBU1NFVFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEFyZ3MudHlwZSA9IFwiUkVMQVRJT05cIjtcbiAgICB9XG5cbiAgICBpZiAoIWZpZWxkQXJncy5yZXZlcnNlRmllbGQpIHtcbiAgICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQgPSB7XG4gICAgICAgIGFwaUlkOiBgcmVsYXRlZCR7ZmllbGRBcmdzLm1vZGVsQXBpSWR9YCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGBSZWxhdGVkICR7ZmllbGRBcmdzLm1vZGVsQXBpSWR9YCxcbiAgICAgIH07XG4gICAgfVxuICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQubW9kZWxBcGlJZCA9IGZpZWxkQXJncy5tb2RlbDtcblxuICAgIGZpZWxkQXJncy5pc0xpc3QgPVxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk9uZVRvTWFueSB8fFxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk1hbnlUb01hbnk7XG4gICAgZmllbGRBcmdzLnJldmVyc2VGaWVsZC5pc0xpc3QgPVxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk1hbnlUb09uZSB8fFxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk1hbnlUb01hbnk7XG5cbiAgICBpZiAoZmllbGRBcmdzLnR5cGUgPT09IFwiQVNTRVRcIikge1xuICAgICAgLy8gYXNzZXRzIG5lZWRzIHRoZSBpc1JlcXVpcmVkIGZpZWxkXG4gICAgICBpZiAoZmllbGRBcmdzLmlzUmVxdWlyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWVsZEFyZ3MuaXNSZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3ZSBoYXZlIHRvIGRyb3AgdGhlbSBvbiByZWxhdGlvbiBmaWVsZHM6XG4gICAgICBkZWxldGUgZmllbGRBcmdzLmlzUmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGNvbnZlbmllbmNlIGZpZWxkc1xuICAgIGRlbGV0ZSBmaWVsZEFyZ3MubW9kZWw7XG4gICAgZGVsZXRlIGZpZWxkQXJncy5yZWxhdGlvblR5cGU7XG5cbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChcbiAgICAgIGZpZWxkQXJncyxcbiAgICAgIE11dGF0aW9uTW9kZS5DcmVhdGUsXG4gICAgICBGaWVsZFR5cGUuUmVsYXRpb25hbEZpZWxkXG4gICAgKTtcbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFVuaW9uRmllbGQoZmllbGRBcmdzOiBhbnkpOiBNb2RlbCB7XG4gICAgZmllbGRBcmdzLm1vZGVsQXBpSWQgPSB0aGlzLmFyZ3MuYXBpSWQ7XG4gICAgaWYgKCFmaWVsZEFyZ3MubW9kZWxzIHx8IGZpZWxkQXJncy5tb2RlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1vZGVscyBjYW5ub3QgYmUgZW1wdHlgKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpZWxkQXJncy5yZXZlcnNlRmllbGQpIHtcbiAgICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQgPSB7XG4gICAgICAgIGFwaUlkOiBgcmVsYXRlZCR7ZmllbGRBcmdzLm1vZGVsQXBpSWR9YCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGBSZWxhdGVkICR7ZmllbGRBcmdzLm1vZGVsQXBpSWR9YCxcbiAgICAgIH07XG4gICAgfVxuICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQubW9kZWxBcGlJZHMgPSBmaWVsZEFyZ3MubW9kZWxzO1xuXG4gICAgZmllbGRBcmdzLmlzTGlzdCA9XG4gICAgICBmaWVsZEFyZ3MucmVsYXRpb25UeXBlID09PSBSZWxhdGlvblR5cGUuT25lVG9NYW55IHx8XG4gICAgICBmaWVsZEFyZ3MucmVsYXRpb25UeXBlID09PSBSZWxhdGlvblR5cGUuTWFueVRvTWFueTtcbiAgICBmaWVsZEFyZ3MucmV2ZXJzZUZpZWxkLmlzTGlzdCA9XG4gICAgICBmaWVsZEFyZ3MucmVsYXRpb25UeXBlID09PSBSZWxhdGlvblR5cGUuTWFueVRvT25lIHx8XG4gICAgICBmaWVsZEFyZ3MucmVsYXRpb25UeXBlID09PSBSZWxhdGlvblR5cGUuTWFueVRvTWFueTtcblxuICAgIC8vIHJlbW92ZSBjb252ZW5pZW5jZSBmaWVsZHNcbiAgICBkZWxldGUgZmllbGRBcmdzLm1vZGVscztcbiAgICBkZWxldGUgZmllbGRBcmdzLnJlbGF0aW9uVHlwZTtcblxuICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkKFxuICAgICAgZmllbGRBcmdzLFxuICAgICAgTXV0YXRpb25Nb2RlLkNyZWF0ZSxcbiAgICAgIEZpZWxkVHlwZS5VbmlvbkZpZWxkXG4gICAgKTtcbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZVJlbGF0aW9uYWxGaWVsZChmaWVsZEFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBmaWVsZEFyZ3MubW9kZWxBcGlJZCA9IHRoaXMuYXJncy5hcGlJZDtcblxuICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkKFxuICAgICAgZmllbGRBcmdzLFxuICAgICAgTXV0YXRpb25Nb2RlLlVwZGF0ZSxcbiAgICAgIEZpZWxkVHlwZS5SZWxhdGlvbmFsRmllbGRcbiAgICApO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXBkYXRlVW5pb25GaWVsZChmaWVsZEFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBmaWVsZEFyZ3MubW9kZWxBcGlJZCA9IHRoaXMuYXJncy5hcGlJZDtcbiAgICBmaWVsZEFyZ3MucmV2ZXJzZUZpZWxkID0ge1xuICAgICAgbW9kZWxBcGlJZHM6IGZpZWxkQXJncy5tb2RlbHMsXG4gICAgfTtcblxuICAgIC8vIHJlbW92ZSBjb252ZW5pZW5jZSBmaWVsZFxuICAgIGRlbGV0ZSBmaWVsZEFyZ3MubW9kZWxzO1xuXG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoXG4gICAgICBmaWVsZEFyZ3MsXG4gICAgICBNdXRhdGlvbk1vZGUuVXBkYXRlLFxuICAgICAgRmllbGRUeXBlLlVuaW9uRmllbGRcbiAgICApO1xuXG4gICAgdGhpcy5saXN0ZW5lci5yZWdpc3RlckNoYW5nZShmaWVsZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRFbnVtZXJhYmxlRmllbGQoZmllbGRBcmdzOiBhbnkpOiBNb2RlbCB7XG4gICAgaWYgKCFmaWVsZEFyZ3MuZW51bWVyYXRpb25BcGlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZW51bWVyYXRpb25BcGlJZCBpcyByZXF1aXJlZCBmb3IgZW51bWVyYWJsZSBmaWVsZFwiKTtcbiAgICB9XG4gICAgZmllbGRBcmdzLm1vZGVsQXBpSWQgPSB0aGlzLmFyZ3MuYXBpSWQ7XG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoXG4gICAgICBmaWVsZEFyZ3MsXG4gICAgICBNdXRhdGlvbk1vZGUuQ3JlYXRlLFxuICAgICAgRmllbGRUeXBlLkVudW1lcmFibGVGaWVsZFxuICAgICk7XG4gICAgdGhpcy5saXN0ZW5lci5yZWdpc3RlckNoYW5nZShmaWVsZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVFbnVtZXJhYmxlRmllbGQoZmllbGRBcmdzOiBhbnkpOiBNb2RlbCB7XG4gICAgZmllbGRBcmdzLm1vZGVsQXBpSWQgPSB0aGlzLmFyZ3MuYXBpSWQ7XG5cbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChcbiAgICAgIGZpZWxkQXJncyxcbiAgICAgIE11dGF0aW9uTW9kZS5VcGRhdGUsXG4gICAgICBGaWVsZFR5cGUuRW51bWVyYWJsZUZpZWxkXG4gICAgKTtcbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlbGV0ZUZpZWxkKGFwaUlkOiBzdHJpbmcpOiBNb2RlbCB7XG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoXG4gICAgICB7IGFwaUlkLCBtb2RlbEFwaUlkOiB0aGlzLmFyZ3MuYXBpSWQgfSxcbiAgICAgIE11dGF0aW9uTW9kZS5EZWxldGVcbiAgICApO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGFzQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICAvLyBhbGwgbW9kZXMgYXJlIGd1YXJhbnRlZWQgdG8gaGF2ZSBjaGFuZ2VzIGV4Y2VwdCBVcGRhdGUuXG4gICAgaWYgKHRoaXMubW9kZSAhPT0gTXV0YXRpb25Nb2RlLlVwZGF0ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIGFwaUlkIGlzIGFsd2F5cyBhIHJlcXVpcmVtZW50LCBsZW5ndGggb2YgMSBtZWFucyBpdHMgYXBpSWQgb25seS5cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5hcmdzKS5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2VuZXJhdGVDaGFuZ2UoKTogTWlncmF0aW9uQ2hhbmdlIHtcbiAgICBsZXQgYWN0aW9uOiBzdHJpbmc7XG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgTXV0YXRpb25Nb2RlLkNyZWF0ZTpcbiAgICAgICAgYWN0aW9uID0gXCJjcmVhdGVNb2RlbFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTXV0YXRpb25Nb2RlLlVwZGF0ZTpcbiAgICAgICAgYWN0aW9uID0gXCJ1cGRhdGVNb2RlbFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTXV0YXRpb25Nb2RlLkRlbGV0ZTpcbiAgICAgICAgYWN0aW9uID0gXCJkZWxldGVNb2RlbFwiO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2U6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjaGFuZ2VbYWN0aW9uXSA9IHRoaXMuYXJncztcbiAgICByZXR1cm4gY2hhbmdlO1xuICB9XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICogQHBhcmFtIGZpZWxkQXJnc1xuICovXG5mdW5jdGlvbiBleHRyYWN0RmllbGRWYWxpZGF0aW9ucyhcbiAgZmllbGRBcmdzOiBDcmVhdGVTaW1wbGVGaWVsZEFyZ3Ncbik6IEdyYXBoUUxTaW1wbGVGaWVsZFZhbGlkYXRpb25zSW5wdXQge1xuICBjb25zdCB2YWxpZGF0aW9uczogR3JhcGhRTFNpbXBsZUZpZWxkVmFsaWRhdGlvbnNJbnB1dCA9IHt9O1xuICBzd2l0Y2ggKGZpZWxkQXJncy50eXBlKSB7XG4gICAgY2FzZSBHcmFwaFFMU2ltcGxlRmllbGRUeXBlLkludDpcbiAgICAgIHZhbGlkYXRpb25zLkludCA9IHsgcmFuZ2U6IGZpZWxkQXJncy52YWxpZGF0aW9ucz8ucmFuZ2UgfTtcbiAgICAgIGlmIChmaWVsZEFyZ3MuaXNMaXN0KSB7XG4gICAgICAgIHZhbGlkYXRpb25zLkludC5saXN0SXRlbUNvdW50ID0gZmllbGRBcmdzLnZhbGlkYXRpb25zPy5saXN0SXRlbUNvdW50O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEdyYXBoUUxTaW1wbGVGaWVsZFR5cGUuRmxvYXQ6XG4gICAgICB2YWxpZGF0aW9ucy5GbG9hdCA9IHsgcmFuZ2U6IGZpZWxkQXJncy52YWxpZGF0aW9ucz8ucmFuZ2UgfTtcbiAgICAgIGlmIChmaWVsZEFyZ3MuaXNMaXN0KSB7XG4gICAgICAgIHZhbGlkYXRpb25zLkZsb2F0Lmxpc3RJdGVtQ291bnQgPSBmaWVsZEFyZ3MudmFsaWRhdGlvbnM/Lmxpc3RJdGVtQ291bnQ7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgR3JhcGhRTFNpbXBsZUZpZWxkVHlwZS5TdHJpbmc6XG4gICAgICB2YWxpZGF0aW9ucy5TdHJpbmcgPSB7XG4gICAgICAgIGNoYXJhY3RlcnM6IGZpZWxkQXJncy52YWxpZGF0aW9ucz8uY2hhcmFjdGVycyxcbiAgICAgICAgbWF0Y2hlczogZmllbGRBcmdzLnZhbGlkYXRpb25zPy5tYXRjaGVzLFxuICAgICAgICBub3RNYXRjaGVzOiBmaWVsZEFyZ3MudmFsaWRhdGlvbnM/Lm5vdE1hdGNoZXMsXG4gICAgICB9O1xuICAgICAgaWYgKGZpZWxkQXJncy5pc0xpc3QpIHtcbiAgICAgICAgdmFsaWRhdGlvbnMuU3RyaW5nLmxpc3RJdGVtQ291bnQgPSBmaWVsZEFyZ3MudmFsaWRhdGlvbnM/Lmxpc3RJdGVtQ291bnQ7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGZpZWxkIHZhbGlkYXRpb25zIG5vdCBzdXBwb3J0ZWQgZm9yICR7ZmllbGRBcmdzLnR5cGV9YCk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGlvbnM7XG59XG5cbmV4cG9ydCB7IE1vZGVsLCBNb2RlbENsYXNzIH07XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTJDO0FBQzNDLGlDQUErRDtBQUUvRCx5Q0FBc0M7QUFDdEMsK0NBb0I0QjtBQTRKNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVU7SUFDZCxZQUNVLFFBQXdCLEVBQ3hCLElBQWtCLEVBQ2xCLElBQWU7UUFGZixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQVc7SUFDdEIsQ0FBQztJQUVKLGNBQWMsQ0FBQyxTQUFjO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLCtCQUFzQixDQUFDLE1BQU0sRUFBRTtZQUNwRCxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLElBQUksbUJBQVEsQ0FBQyxVQUFVLENBQUM7U0FDeEU7UUFFRCxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDekIsU0FBUyxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1RDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLFNBQVMsRUFBRSxtQkFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFjO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsU0FBUyxDQUFDLElBQUksR0FBRywrQkFBc0IsQ0FBQyxNQUFNLENBQUM7UUFDL0MsU0FBUyxDQUFDLFlBQVks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QUFFO2dCQUNwQixXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsU0FBRyxTQUFTLENBQUMsV0FBVywwQ0FBRSxhQUFhLENBQUM7YUFDeEU7WUFDRCxNQUFNO1FBRVIsS0FBSywrQkFBc0IsQ0FBQyxNQUFNO1lBQ2hDLFdBQVcsQ0FBQyxNQUFNLEdBQUc7Z0JBQ25CLFVBQVUsUUFBRSxTQUFTLENBQUMsV0FBVywwQ0FBRSxVQUFVO2dCQUM3QyxPQUFPLFFBQUUsU0FBUyxDQUFDLFdBQVcsMENBQUUsT0FBTztnQkFDdkMsVUFBVSxRQUFFLFNBQVMsQ0FBQyxXQUFXLDBDQUFFLFVBQVU7YUFDOUMsQ0FBQztZQUNGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLFNBQUcsU0FBUyxDQUFDLFdBQVcsMENBQUUsYUFBYSxDQUFDO2FBQ3pFO1lBQ0QsTUFBTTtRQUVSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDNUU7SUFFRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIEZpZWxkVHlwZSB9IGZyb20gXCIuL2ZpZWxkXCI7XG5pbXBvcnQgeyBNdXRhdGlvbk1vZGUsIFBhcnRpYWxCeSwgUmVsYXRpb25UeXBlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgQ2hhbmdlSXRlbSwgQ2hhbmdlTGlzdGVuZXIsIE1pZ3JhdGlvbkNoYW5nZSB9IGZyb20gXCIuL21pZ3JhdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tIFwiLi9yZW5kZXJlclwiO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlRW51bWVyYWJsZUZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZU1vZGVsSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJlbGF0aW9uYWxGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZW1vdGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVSZXZlcnNlUmVsYXRpb25hbEZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJldmVyc2VVbmlvbkZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVNpbXBsZUZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVVuaW9uRmllbGRJbnB1dCxcbiAgR3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlRW51bWVyYWJsZUZpZWxkSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZU1vZGVsSW5wdXQsXG4gIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVJlbGF0aW9uYWxGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVTaW1wbGVGaWVsZElucHV0LFxuICBHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVVbmlvbkZpZWxkSW5wdXQsXG4gIEdyYXBoUUxGaWVsZFZhbGlkYXRpb25GbG9hdFJhbmdlSW5wdXQsXG4gIEdyYXBoUUxGaWVsZFZhbGlkYXRpb25JbnRSYW5nZUlucHV0LFxuICBHcmFwaFFMRmllbGRWYWxpZGF0aW9uUmVnRXhJbnB1dCxcbiAgR3JhcGhRTFJlbW90ZUZpZWxkVHlwZSxcbiAgR3JhcGhRTFNpbXBsZUZpZWxkVHlwZSxcbiAgR3JhcGhRTFNpbXBsZUZpZWxkVmFsaWRhdGlvbnNJbnB1dCxcbn0gZnJvbSBcIi4vZ2VuZXJhdGVkL3NjaGVtYVwiO1xuXG50eXBlIE1vZGVsQXJncyA9XG4gIHwgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlTW9kZWxJbnB1dFxuICB8IEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZU1vZGVsSW5wdXQ7XG5cbi8qKlxuICogUmVsYXRpb25hbCBGaWVsZHNcbiAqL1xuaW50ZXJmYWNlIFJlbGF0aW9uYWxGaWVsZEFyZ3NcbiAgZXh0ZW5kcyBPbWl0PFxuICAgIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJlbGF0aW9uYWxGaWVsZElucHV0LFxuICAgIFwicmV2ZXJzZUZpZWxkXCJcbiAgPiB7XG4gIHJlbGF0aW9uVHlwZTogUmVsYXRpb25UeXBlO1xuICBtb2RlbDogc3RyaW5nO1xuICByZXZlcnNlRmllbGQ/OiBPbWl0PFxuICAgIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJldmVyc2VSZWxhdGlvbmFsRmllbGRJbnB1dCxcbiAgICBcIm1vZGVsQXBpSWRcIiB8IFwiaXNMaXN0XCJcbiAgPjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgVW5pb24gRmllbGRcbiAqL1xuaW50ZXJmYWNlIENyZWF0ZVVuaW9uRmllbGRBcmdzXG4gIGV4dGVuZHMgT21pdDxHcmFwaFFMQmF0Y2hNaWdyYXRpb25DcmVhdGVVbmlvbkZpZWxkSW5wdXQsIFwicmV2ZXJzZUZpZWxkXCI+IHtcbiAgcmVsYXRpb25UeXBlOiBSZWxhdGlvblR5cGU7XG4gIG1vZGVsczogc3RyaW5nW107XG4gIHJldmVyc2VGaWVsZD86IE9taXQ8XG4gICAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlUmV2ZXJzZVVuaW9uRmllbGRJbnB1dCxcbiAgICBcIm1vZGVsQXBpSWRzXCIgfCBcImlzTGlzdFwiXG4gID47XG59XG5cbi8qKlxuICogVXBkYXRlIFVuaW9uIEZpZWxkXG4gKi9cbmludGVyZmFjZSBVcGRhdGVVbmlvbkZpZWxkQXJnc1xuICBleHRlbmRzIE9taXQ8R3JhcGhRTEJhdGNoTWlncmF0aW9uVXBkYXRlVW5pb25GaWVsZElucHV0LCBcInJldmVyc2VGaWVsZFwiPiB7XG4gIG1vZGVscz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgRmllbGRWYWxpZGF0aW9uQXJncyB7XG4gIHJhbmdlPzogR3JhcGhRTEZpZWxkVmFsaWRhdGlvbkZsb2F0UmFuZ2VJbnB1dDtcbiAgY2hhcmFjdGVycz86IEdyYXBoUUxGaWVsZFZhbGlkYXRpb25JbnRSYW5nZUlucHV0O1xuICBsaXN0SXRlbUNvdW50PzogR3JhcGhRTEZpZWxkVmFsaWRhdGlvbkludFJhbmdlSW5wdXQ7XG4gIG1hdGNoZXM/OiBHcmFwaFFMRmllbGRWYWxpZGF0aW9uUmVnRXhJbnB1dDtcbiAgbm90TWF0Y2hlcz86IEdyYXBoUUxGaWVsZFZhbGlkYXRpb25SZWdFeElucHV0O1xufVxuXG4vKipcbiAqIENyZWF0ZSBTaW1wbGUgRmllbGRcbiAqL1xuaW50ZXJmYWNlIENyZWF0ZVNpbXBsZUZpZWxkQXJnc1xuICBleHRlbmRzIE9taXQ8XG4gICAgR3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlU2ltcGxlRmllbGRJbnB1dCxcbiAgICBcInZhbGlkYXRpb25zXCIgfCBcIm1vZGVsQXBpSWRcIlxuICA+IHtcbiAgdmFsaWRhdGlvbnM/OiBGaWVsZFZhbGlkYXRpb25BcmdzO1xufVxuLyoqXG4gKiBDcmVhdGUgUmVtb3RlIEZpZWxkXG4gKi9cbmludGVyZmFjZSBDcmVhdGVSZW1vdGVGaWVsZEFyZ3NcbiAgZXh0ZW5kcyBPbWl0PFxuICAgIEdyYXBoUUxCYXRjaE1pZ3JhdGlvbkNyZWF0ZVJlbW90ZUZpZWxkSW5wdXQsXG4gICAgXCJtb2RlbEFwaUlkXCIgfCBcInR5cGVcIlxuICA+IHt9XG5cbmludGVyZmFjZSBVcGRhdGVTaW1wbGVGaWVsZEFyZ3NcbiAgZXh0ZW5kcyBPbWl0PFxuICAgIEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZVNpbXBsZUZpZWxkSW5wdXQsXG4gICAgXCJ2YWxpZGF0aW9uc1wiIHwgXCJtb2RlbEFwaUlkXCJcbiAgPiB7XG4gIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uQXJncztcbn1cblxuLyoqXG4gKiBHcmFwaENNUyBNb2RlbFxuICovXG5pbnRlcmZhY2UgTW9kZWwge1xuICAvKipcbiAgICogQWRkIGEgbmV3IGZpZWxkIHRvIHRoZSBtb2RlbC5cbiAgICogQHBhcmFtIGZpZWxkIG9wdGlvbnMgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIGFkZFNpbXBsZUZpZWxkKGZpZWxkOiBDcmVhdGVTaW1wbGVGaWVsZEFyZ3MpOiBNb2RlbDtcblxuICAvKipcbiAgICogQWRkIGEgbmV3IHJlbW90ZSBmaWVsZCB0byB0aGUgbW9kZWwuXG4gICAqIEBwYXJhbSBmaWVsZCBvcHRpb25zIGZvciB0aGUgZmllbGQuXG4gICAqL1xuICBhZGRSZW1vdGVGaWVsZChmaWVsZDogQ3JlYXRlUmVtb3RlRmllbGRBcmdzKTogTW9kZWw7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBleGlzdGluZyBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgdXBkYXRlU2ltcGxlRmllbGQoZmllbGQ6IFVwZGF0ZVNpbXBsZUZpZWxkQXJncyk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBBZGQgYSByZWxhdGlvbmFsIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCBvcHRpb25zIGZvciB0aGUgcmVsYXRpb25hbCBmaWVsZC5cbiAgICovXG4gIGFkZFJlbGF0aW9uYWxGaWVsZChcbiAgICBmaWVsZDogT21pdDxcbiAgICAgIFBhcnRpYWxCeTxSZWxhdGlvbmFsRmllbGRBcmdzLCBcInJldmVyc2VGaWVsZFwiIHwgXCJ0eXBlXCI+LFxuICAgICAgXCJtb2RlbEFwaUlkXCJcbiAgICA+XG4gICk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSByZWxhdGlvbmFsIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCBvcHRpb25zIGZvciB0aGUgcmVsYXRpb25hbCBmaWVsZC5cbiAgICovXG4gIHVwZGF0ZVJlbGF0aW9uYWxGaWVsZChcbiAgICBmaWVsZDogT21pdDxHcmFwaFFMQmF0Y2hNaWdyYXRpb25VcGRhdGVSZWxhdGlvbmFsRmllbGRJbnB1dCwgXCJtb2RlbEFwaUlkXCI+XG4gICk6IE1vZGVsO1xuXG4gIC8qKlxuICAgKiBBZGQgYSB1bmlvbiBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIHVuaW9uIGZpZWxkLlxuICAgKi9cbiAgYWRkVW5pb25GaWVsZChcbiAgICBmaWVsZDogT21pdDxQYXJ0aWFsQnk8Q3JlYXRlVW5pb25GaWVsZEFyZ3MsIFwicmV2ZXJzZUZpZWxkXCI+LCBcIm1vZGVsQXBpSWRcIj5cbiAgKTogTW9kZWw7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhIHVuaW9uIGZpZWxkLlxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIHVuaW9uIGZpZWxkLlxuICAgKi9cbiAgdXBkYXRlVW5pb25GaWVsZChmaWVsZDogT21pdDxVcGRhdGVVbmlvbkZpZWxkQXJncywgXCJtb2RlbEFwaUlkXCI+KTogTW9kZWw7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBlbnVtZXJhYmxlIGZpZWxkLlxuICAgKiBAcGFyYW0gZmllbGQgb3B0aW9ucyBmb3IgdGhlIGVudW1lcmFibGUgZmllbGQuXG4gICAqL1xuICBhZGRFbnVtZXJhYmxlRmllbGQoXG4gICAgZmllbGQ6IE9taXQ8R3JhcGhRTEJhdGNoTWlncmF0aW9uQ3JlYXRlRW51bWVyYWJsZUZpZWxkSW5wdXQsIFwibW9kZWxBcGlJZFwiPlxuICApOiBNb2RlbDtcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGVudW1lcmFibGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkIG9wdGlvbnMgZm9yIHRoZSBlbnVtZXJhYmxlIGZpZWxkLlxuICAgKi9cbiAgdXBkYXRlRW51bWVyYWJsZUZpZWxkKFxuICAgIGZpZWxkOiBPbWl0PEdyYXBoUUxCYXRjaE1pZ3JhdGlvblVwZGF0ZUVudW1lcmFibGVGaWVsZElucHV0LCBcIm1vZGVsQXBpSWRcIj5cbiAgKTogTW9kZWw7XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGZpZWxkXG4gICAqIEBwYXJhbSBhcGlJZCB0aGUgYXBpSWQgb2YgdGhlIGZpZWxkIHRvIGRlbGV0ZS5cbiAgICovXG4gIGRlbGV0ZUZpZWxkKGFwaUlkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY2xhc3MgTW9kZWxDbGFzcyBpbXBsZW1lbnRzIE1vZGVsLCBDaGFuZ2VJdGVtIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsaXN0ZW5lcjogQ2hhbmdlTGlzdGVuZXIsXG4gICAgcHJpdmF0ZSBtb2RlOiBNdXRhdGlvbk1vZGUsXG4gICAgcHJpdmF0ZSBhcmdzOiBNb2RlbEFyZ3NcbiAgKSB7fVxuXG4gIGFkZFNpbXBsZUZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuICAgIGlmIChmaWVsZEFyZ3MudHlwZSA9PT0gR3JhcGhRTFNpbXBsZUZpZWxkVHlwZS5TdHJpbmcpIHtcbiAgICAgIGZpZWxkQXJncy5mb3JtUmVuZGVyZXIgPSBmaWVsZEFyZ3MuZm9ybVJlbmRlcmVyIHx8IFJlbmRlcmVyLlNpbmdsZUxpbmU7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQXJncy52YWxpZGF0aW9ucykge1xuICAgICAgZmllbGRBcmdzLnZhbGlkYXRpb25zID0gZXh0cmFjdEZpZWxkVmFsaWRhdGlvbnMoZmllbGRBcmdzKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChmaWVsZEFyZ3MsIE11dGF0aW9uTW9kZS5DcmVhdGUpO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUmVtb3RlRmllbGQoZmllbGRBcmdzOiBhbnkpOiBNb2RlbCB7XG4gICAgZmllbGRBcmdzLm1vZGVsQXBpSWQgPSB0aGlzLmFyZ3MuYXBpSWQ7XG4gICAgZmllbGRBcmdzLnR5cGUgPSBHcmFwaFFMUmVtb3RlRmllbGRUeXBlLlJlbW90ZTtcbiAgICBmaWVsZEFyZ3MucmVtb3RlQ29uZmlnLmhlYWRlcnMgPSBmaWVsZEFyZ3MucmVtb3RlQ29uZmlnLmhlYWRlcnMgfHwge307XG4gICAgZmllbGRBcmdzLnJlbW90ZUNvbmZpZy5wYXlsb2FkRmllbGRBcGlJZHMgPVxuICAgICAgZmllbGRBcmdzLnJlbW90ZUNvbmZpZy5wYXlsb2FkRmllbGRBcGlJZHMgfHwgW107XG4gICAgZmllbGRBcmdzLnJlbW90ZUNvbmZpZy5tZXRob2QgPSBmaWVsZEFyZ3MucmVtb3RlQ29uZmlnLm1ldGhvZCB8fCBcIkdFVFwiO1xuXG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoXG4gICAgICBmaWVsZEFyZ3MsXG4gICAgICBNdXRhdGlvbk1vZGUuQ3JlYXRlLFxuICAgICAgRmllbGRUeXBlLlJlbW90ZUZpZWxkXG4gICAgKTtcbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZVNpbXBsZUZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuXG4gICAgaWYgKGZpZWxkQXJncy52YWxpZGF0aW9ucykge1xuICAgICAgZmllbGRBcmdzLnZhbGlkYXRpb25zID0gZXh0cmFjdEZpZWxkVmFsaWRhdGlvbnMoZmllbGRBcmdzKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChmaWVsZEFyZ3MsIE11dGF0aW9uTW9kZS5VcGRhdGUpO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUmVsYXRpb25hbEZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuICAgIGlmIChcbiAgICAgIChmaWVsZEFyZ3MudHlwZSAmJiBmaWVsZEFyZ3MudHlwZSA9PT0gXCJBU1NFVFwiKSB8fFxuICAgICAgKGZpZWxkQXJncy5tb2RlbCAmJiBmaWVsZEFyZ3MubW9kZWwgPT09IFwiQXNzZXRcIilcbiAgICApIHtcbiAgICAgIGZpZWxkQXJncy50eXBlID0gXCJBU1NFVFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEFyZ3MudHlwZSA9IFwiUkVMQVRJT05cIjtcbiAgICB9XG5cbiAgICBpZiAoIWZpZWxkQXJncy5yZXZlcnNlRmllbGQpIHtcbiAgICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQgPSB7XG4gICAgICAgIGFwaUlkOiBgcmVsYXRlZCR7ZmllbGRBcmdzLm1vZGVsQXBpSWR9YCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGBSZWxhdGVkICR7ZmllbGRBcmdzLm1vZGVsQXBpSWR9YCxcbiAgICAgIH07XG4gICAgfVxuICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQubW9kZWxBcGlJZCA9IGZpZWxkQXJncy5tb2RlbDtcblxuICAgIGZpZWxkQXJncy5pc0xpc3QgPVxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk9uZVRvTWFueSB8fFxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk1hbnlUb01hbnk7XG4gICAgZmllbGRBcmdzLnJldmVyc2VGaWVsZC5pc0xpc3QgPVxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk1hbnlUb09uZSB8fFxuICAgICAgZmllbGRBcmdzLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25UeXBlLk1hbnlUb01hbnk7XG5cbiAgICBpZiAoZmllbGRBcmdzLnR5cGUgPT09IFwiQVNTRVRcIikge1xuICAgICAgLy8gYXNzZXRzIG5lZWRzIHRoZSBpc1JlcXVpcmVkIGZpZWxkXG4gICAgICBpZiAoZmllbGRBcmdzLmlzUmVxdWlyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWVsZEFyZ3MuaXNSZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gYXNzZXQgbmVlZHMgcmV2ZXJzZSBmaWVsZCB0byBiZSBsaXN0XG4gICAgICBmaWVsZEFyZ3MucmV2ZXJzZUZpZWxkLmlzTGlzdCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlIGhhdmUgdG8gZHJvcCB0aGVtIG9uIHJlbGF0aW9uIGZpZWxkczpcbiAgICAgIGRlbGV0ZSBmaWVsZEFyZ3MuaXNSZXF1aXJlZDtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgY29udmVuaWVuY2UgZmllbGRzXG4gICAgZGVsZXRlIGZpZWxkQXJncy5tb2RlbDtcbiAgICBkZWxldGUgZmllbGRBcmdzLnJlbGF0aW9uVHlwZTtcblxuICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkKFxuICAgICAgZmllbGRBcmdzLFxuICAgICAgTXV0YXRpb25Nb2RlLkNyZWF0ZSxcbiAgICAgIEZpZWxkVHlwZS5SZWxhdGlvbmFsRmllbGRcbiAgICApO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkVW5pb25GaWVsZChmaWVsZEFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBmaWVsZEFyZ3MubW9kZWxBcGlJZCA9IHRoaXMuYXJncy5hcGlJZDtcbiAgICBpZiAoIWZpZWxkQXJncy5tb2RlbHMgfHwgZmllbGRBcmdzLm1vZGVscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbW9kZWxzIGNhbm5vdCBiZSBlbXB0eWApO1xuICAgIH1cblxuICAgIGlmICghZmllbGRBcmdzLnJldmVyc2VGaWVsZCkge1xuICAgICAgZmllbGRBcmdzLnJldmVyc2VGaWVsZCA9IHtcbiAgICAgICAgYXBpSWQ6IGByZWxhdGVkJHtmaWVsZEFyZ3MubW9kZWxBcGlJZH1gLFxuICAgICAgICBkaXNwbGF5TmFtZTogYFJlbGF0ZWQgJHtmaWVsZEFyZ3MubW9kZWxBcGlJZH1gLFxuICAgICAgfTtcbiAgICB9XG4gICAgZmllbGRBcmdzLnJldmVyc2VGaWVsZC5tb2RlbEFwaUlkcyA9IGZpZWxkQXJncy5tb2RlbHM7XG5cbiAgICBmaWVsZEFyZ3MuaXNMaXN0ID1cbiAgICAgIGZpZWxkQXJncy5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uVHlwZS5PbmVUb01hbnkgfHxcbiAgICAgIGZpZWxkQXJncy5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uVHlwZS5NYW55VG9NYW55O1xuICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQuaXNMaXN0ID1cbiAgICAgIGZpZWxkQXJncy5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uVHlwZS5NYW55VG9PbmUgfHxcbiAgICAgIGZpZWxkQXJncy5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uVHlwZS5NYW55VG9NYW55O1xuXG4gICAgLy8gcmVtb3ZlIGNvbnZlbmllbmNlIGZpZWxkc1xuICAgIGRlbGV0ZSBmaWVsZEFyZ3MubW9kZWxzO1xuICAgIGRlbGV0ZSBmaWVsZEFyZ3MucmVsYXRpb25UeXBlO1xuXG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoXG4gICAgICBmaWVsZEFyZ3MsXG4gICAgICBNdXRhdGlvbk1vZGUuQ3JlYXRlLFxuICAgICAgRmllbGRUeXBlLlVuaW9uRmllbGRcbiAgICApO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXBkYXRlUmVsYXRpb25hbEZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuXG4gICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGQoXG4gICAgICBmaWVsZEFyZ3MsXG4gICAgICBNdXRhdGlvbk1vZGUuVXBkYXRlLFxuICAgICAgRmllbGRUeXBlLlJlbGF0aW9uYWxGaWVsZFxuICAgICk7XG4gICAgdGhpcy5saXN0ZW5lci5yZWdpc3RlckNoYW5nZShmaWVsZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVVbmlvbkZpZWxkKGZpZWxkQXJnczogYW55KTogTW9kZWwge1xuICAgIGZpZWxkQXJncy5tb2RlbEFwaUlkID0gdGhpcy5hcmdzLmFwaUlkO1xuICAgIGZpZWxkQXJncy5yZXZlcnNlRmllbGQgPSB7XG4gICAgICBtb2RlbEFwaUlkczogZmllbGRBcmdzLm1vZGVscyxcbiAgICB9O1xuXG4gICAgLy8gcmVtb3ZlIGNvbnZlbmllbmNlIGZpZWxkXG4gICAgZGVsZXRlIGZpZWxkQXJncy5tb2RlbHM7XG5cbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChcbiAgICAgIGZpZWxkQXJncyxcbiAgICAgIE11dGF0aW9uTW9kZS5VcGRhdGUsXG4gICAgICBGaWVsZFR5cGUuVW5pb25GaWVsZFxuICAgICk7XG5cbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZEVudW1lcmFibGVGaWVsZChmaWVsZEFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBpZiAoIWZpZWxkQXJncy5lbnVtZXJhdGlvbkFwaUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbnVtZXJhdGlvbkFwaUlkIGlzIHJlcXVpcmVkIGZvciBlbnVtZXJhYmxlIGZpZWxkXCIpO1xuICAgIH1cbiAgICBmaWVsZEFyZ3MubW9kZWxBcGlJZCA9IHRoaXMuYXJncy5hcGlJZDtcbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChcbiAgICAgIGZpZWxkQXJncyxcbiAgICAgIE11dGF0aW9uTW9kZS5DcmVhdGUsXG4gICAgICBGaWVsZFR5cGUuRW51bWVyYWJsZUZpZWxkXG4gICAgKTtcbiAgICB0aGlzLmxpc3RlbmVyLnJlZ2lzdGVyQ2hhbmdlKGZpZWxkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUVudW1lcmFibGVGaWVsZChmaWVsZEFyZ3M6IGFueSk6IE1vZGVsIHtcbiAgICBmaWVsZEFyZ3MubW9kZWxBcGlJZCA9IHRoaXMuYXJncy5hcGlJZDtcblxuICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkKFxuICAgICAgZmllbGRBcmdzLFxuICAgICAgTXV0YXRpb25Nb2RlLlVwZGF0ZSxcbiAgICAgIEZpZWxkVHlwZS5FbnVtZXJhYmxlRmllbGRcbiAgICApO1xuICAgIHRoaXMubGlzdGVuZXIucmVnaXN0ZXJDaGFuZ2UoZmllbGQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVsZXRlRmllbGQoYXBpSWQ6IHN0cmluZyk6IE1vZGVsIHtcbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChcbiAgICAgIHsgYXBpSWQsIG1vZGVsQXBpSWQ6IHRoaXMuYXJncy5hcGlJZCB9LFxuICAgICAgTXV0YXRpb25Nb2RlLkRlbGV0ZVxuICAgICk7XG4gICAgdGhpcy5saXN0ZW5lci5yZWdpc3RlckNoYW5nZShmaWVsZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoYXNDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIC8vIGFsbCBtb2RlcyBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGNoYW5nZXMgZXhjZXB0IFVwZGF0ZS5cbiAgICBpZiAodGhpcy5tb2RlICE9PSBNdXRhdGlvbk1vZGUuVXBkYXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gYXBpSWQgaXMgYWx3YXlzIGEgcmVxdWlyZW1lbnQsIGxlbmd0aCBvZiAxIG1lYW5zIGl0cyBhcGlJZCBvbmx5LlxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmFyZ3MpLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZW5lcmF0ZUNoYW5nZSgpOiBNaWdyYXRpb25DaGFuZ2Uge1xuICAgIGxldCBhY3Rpb246IHN0cmluZztcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuQ3JlYXRlOlxuICAgICAgICBhY3Rpb24gPSBcImNyZWF0ZU1vZGVsXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuVXBkYXRlOlxuICAgICAgICBhY3Rpb24gPSBcInVwZGF0ZU1vZGVsXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNdXRhdGlvbk1vZGUuRGVsZXRlOlxuICAgICAgICBhY3Rpb24gPSBcImRlbGV0ZU1vZGVsXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNoYW5nZVthY3Rpb25dID0gdGhpcy5hcmdzO1xuICAgIHJldHVybiBjaGFuZ2U7XG4gIH1cbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gZmllbGRBcmdzXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RGaWVsZFZhbGlkYXRpb25zKFxuICBmaWVsZEFyZ3M6IENyZWF0ZVNpbXBsZUZpZWxkQXJnc1xuKTogR3JhcGhRTFNpbXBsZUZpZWxkVmFsaWRhdGlvbnNJbnB1dCB7XG4gIGNvbnN0IHZhbGlkYXRpb25zOiBHcmFwaFFMU2ltcGxlRmllbGRWYWxpZGF0aW9uc0lucHV0ID0ge307XG4gIHN3aXRjaCAoZmllbGRBcmdzLnR5cGUpIHtcbiAgICBjYXNlIEdyYXBoUUxTaW1wbGVGaWVsZFR5cGUuSW50OlxuICAgICAgdmFsaWRhdGlvbnMuSW50ID0geyByYW5nZTogZmllbGRBcmdzLnZhbGlkYXRpb25zPy5yYW5nZSB9O1xuICAgICAgaWYgKGZpZWxkQXJncy5pc0xpc3QpIHtcbiAgICAgICAgdmFsaWRhdGlvbnMuSW50Lmxpc3RJdGVtQ291bnQgPSBmaWVsZEFyZ3MudmFsaWRhdGlvbnM/Lmxpc3RJdGVtQ291bnQ7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgR3JhcGhRTFNpbXBsZUZpZWxkVHlwZS5GbG9hdDpcbiAgICAgIHZhbGlkYXRpb25zLkZsb2F0ID0geyByYW5nZTogZmllbGRBcmdzLnZhbGlkYXRpb25zPy5yYW5nZSB9O1xuICAgICAgaWYgKGZpZWxkQXJncy5pc0xpc3QpIHtcbiAgICAgICAgdmFsaWRhdGlvbnMuRmxvYXQubGlzdEl0ZW1Db3VudCA9IGZpZWxkQXJncy52YWxpZGF0aW9ucz8ubGlzdEl0ZW1Db3VudDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBHcmFwaFFMU2ltcGxlRmllbGRUeXBlLlN0cmluZzpcbiAgICAgIHZhbGlkYXRpb25zLlN0cmluZyA9IHtcbiAgICAgICAgY2hhcmFjdGVyczogZmllbGRBcmdzLnZhbGlkYXRpb25zPy5jaGFyYWN0ZXJzLFxuICAgICAgICBtYXRjaGVzOiBmaWVsZEFyZ3MudmFsaWRhdGlvbnM/Lm1hdGNoZXMsXG4gICAgICAgIG5vdE1hdGNoZXM6IGZpZWxkQXJncy52YWxpZGF0aW9ucz8ubm90TWF0Y2hlcyxcbiAgICAgIH07XG4gICAgICBpZiAoZmllbGRBcmdzLmlzTGlzdCkge1xuICAgICAgICB2YWxpZGF0aW9ucy5TdHJpbmcubGlzdEl0ZW1Db3VudCA9IGZpZWxkQXJncy52YWxpZGF0aW9ucz8ubGlzdEl0ZW1Db3VudDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZmllbGQgdmFsaWRhdGlvbnMgbm90IHN1cHBvcnRlZCBmb3IgJHtmaWVsZEFyZ3MudHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0aW9ucztcbn1cblxuZXhwb3J0IHsgTW9kZWwsIE1vZGVsQ2xhc3MgfTtcbiJdfQ== |
{ | ||
"name": "@graphcms/migration", | ||
"version": "0.0.12", | ||
"version": "0.0.13", | ||
"description": "SDK for GraphCMS migrations", | ||
@@ -17,2 +17,3 @@ "main": "lib/index.js", | ||
"example": "yarn build && node example/example.js", | ||
"example-remote": "yarn build && node example/example-remote.js", | ||
"example-ts": "yarn build && ts-node example/example-ts.ts", | ||
@@ -23,2 +24,3 @@ "docs": "typedoc", | ||
"dependencies": { | ||
"@types/node": "^14.11.2", | ||
"graphql-request": "2.1.0-next.1", | ||
@@ -28,3 +30,2 @@ "uuid": "^8.3.0" | ||
"devDependencies": { | ||
"@types/node": "^14.0.27", | ||
"@types/uuid": "^8.3.0", | ||
@@ -31,0 +32,0 @@ "dotenv": "^8.2.0", |
@@ -359,2 +359,18 @@ # migration | ||
To create an asset field. | ||
```js | ||
model.addRelationalField({ | ||
apiId, | ||
displayName, | ||
model: "Asset", // this is compulsory to indicate Asset field. | ||
// optional but can be specified to customize the details. | ||
reverseField: { | ||
apiId, | ||
displayName, | ||
}, | ||
}); | ||
``` | ||
To create a union field. | ||
@@ -361,0 +377,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
422014
12
24
4812
456
3
+ Added@types/node@^14.11.2
+ Added@types/node@14.18.63(transitive)