UNPKG

@spartacus/core

Version:

Spartacus - the core framework

146 lines 20.5 kB
import { EntityFailAction, EntityLoadAction, EntitySuccessAction, } from '../../../state/utils/entity-loader/entity-loader.action'; import { EntityProcessesDecrementAction, EntityProcessesIncrementAction, } from '../../../state/utils/entity-processes-loader/entity-processes-loader.action'; import { EntityRemoveAction } from '../../../state/utils/entity/entity.action'; import { ProcessesLoaderResetAction } from '../../../state/utils/processes-loader/processes-loader.action'; import { MULTI_CART_DATA } from '../multi-cart-state'; export const CREATE_CART = '[Cart] Create Cart'; export const CREATE_CART_FAIL = '[Cart] Create Cart Fail'; export const CREATE_CART_SUCCESS = '[Cart] Create Cart Success'; export const LOAD_CART = '[Cart] Load Cart'; export const LOAD_CART_FAIL = '[Cart] Load Cart Fail'; export const LOAD_CART_SUCCESS = '[Cart] Load Cart Success'; export const LOAD_CARTS_SUCCESS = '[Cart] Load Carts Success'; export const ADD_EMAIL_TO_CART = '[Cart] Add Email to Cart'; export const ADD_EMAIL_TO_CART_FAIL = '[Cart] Add Email to Cart Fail'; export const ADD_EMAIL_TO_CART_SUCCESS = '[Cart] Add Email to Cart Success'; export const MERGE_CART = '[Cart] Merge Cart'; export const MERGE_CART_SUCCESS = '[Cart] Merge Cart Success'; export const RESET_CART_DETAILS = '[Cart] Reset Cart Details'; export const REMOVE_CART = '[Cart] Remove Cart'; export const DELETE_CART = '[Cart] Delete Cart'; export const DELETE_CART_SUCCESS = '[Cart] Delete Cart Success'; export const DELETE_CART_FAIL = '[Cart] Delete Cart Fail'; export class CreateCart extends EntityLoadAction { constructor(payload) { super(MULTI_CART_DATA, payload.tempCartId); this.payload = payload; this.type = CREATE_CART; } } export class CreateCartFail extends EntityFailAction { constructor(payload) { super(MULTI_CART_DATA, payload.tempCartId); this.payload = payload; this.type = CREATE_CART_FAIL; } } export class CreateCartSuccess extends EntitySuccessAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = CREATE_CART_SUCCESS; } } export class AddEmailToCart extends EntityProcessesIncrementAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = ADD_EMAIL_TO_CART; } } export class AddEmailToCartFail extends EntityProcessesDecrementAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = ADD_EMAIL_TO_CART_FAIL; } } export class AddEmailToCartSuccess extends EntityProcessesDecrementAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = ADD_EMAIL_TO_CART_SUCCESS; } } export class LoadCart extends EntityLoadAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = LOAD_CART; } } export class LoadCartFail extends EntityFailAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId, payload.error); this.payload = payload; this.type = LOAD_CART_FAIL; } } export class LoadCartSuccess extends EntitySuccessAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = LOAD_CART_SUCCESS; } } export class LoadCartsSuccess extends EntitySuccessAction { constructor(payload) { super(MULTI_CART_DATA, payload.map((cart) => cart === null || cart === void 0 ? void 0 : cart.code)); this.payload = payload; this.type = LOAD_CARTS_SUCCESS; } } export class MergeCart { constructor(payload) { this.payload = payload; this.type = MERGE_CART; } } export class MergeCartSuccess extends EntityRemoveAction { constructor(payload) { super(MULTI_CART_DATA, payload.oldCartId); this.payload = payload; this.type = MERGE_CART_SUCCESS; } } /** * On site context change we want to keep current list of entities, but we want to clear the value and flags. * With ProcessesLoaderResetAction we run it on every entity of this type. */ export class ResetCartDetails extends ProcessesLoaderResetAction { constructor() { super(MULTI_CART_DATA); this.type = RESET_CART_DETAILS; } } /** * Used for cleaning cart in local state, when we get information that it no longer exists in the backend. * For removing particular cart in both places use DeleteCart actions. */ export class RemoveCart extends EntityRemoveAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = REMOVE_CART; } } export class DeleteCart { constructor(payload) { this.payload = payload; this.type = DELETE_CART; } } export class DeleteCartSuccess extends EntityRemoveAction { constructor(payload) { super(MULTI_CART_DATA, payload.cartId); this.payload = payload; this.type = DELETE_CART_SUCCESS; } } export class DeleteCartFail { constructor(payload) { this.payload = payload; this.type = DELETE_CART_FAIL; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9jYXJ0L3N0b3JlL2FjdGlvbnMvY2FydC5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEdBQ3BCLE1BQU0seURBQXlELENBQUM7QUFDakUsT0FBTyxFQUNMLDhCQUE4QixFQUM5Qiw4QkFBOEIsR0FDL0IsTUFBTSw2RUFBNkUsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLHlCQUF5QixDQUFDO0FBQzFELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBRWhFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztBQUM1QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsdUJBQXVCLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsMkJBQTJCLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsK0JBQStCLENBQUM7QUFDdEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsa0NBQWtDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFH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LFlBQW1CLE9BQTJDO1FBQTNDLFlBQU8sR0FBUCxPQUFPLENBQW9DO1FBRHJELFNBQUksR0FBRyxXQUFXLENBQUM7SUFDcUMsQ0FBQztDQUNuRTtBQUVELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFFdkQsWUFBbUIsT0FBMkM7UUFDNUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFEdEIsWUFBTyxHQUFQLE9BQU8sQ0FBb0M7UUFEckQsU0FBSSxHQUFHLG1CQUFtQixDQUFDO0lBR3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW1CLE9BQXVEO1FBQXZELFlBQU8sR0FBUCxPQUFPLENBQWdEO1FBRGpFLFNBQUksR0FBRyxnQkFBZ0IsQ0FBQztJQUM0QyxDQUFDO0NBQy9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ2FydCB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2NhcnQubW9kZWwnO1xuaW1wb3J0IHtcbiAgRW50aXR5RmFpbEFjdGlvbixcbiAgRW50aXR5TG9hZEFjdGlvbixcbiAgRW50aXR5U3VjY2Vzc0FjdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vc3RhdGUvdXRpbHMvZW50aXR5LWxvYWRlci9lbnRpdHktbG9hZGVyLmFjdGlvbic7XG5pbXBvcnQge1xuICBFbnRpdHlQcm9jZXNzZXNEZWNyZW1lbnRBY3Rpb24sXG4gIEVudGl0eVByb2Nlc3Nlc0luY3JlbWVudEFjdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vc3RhdGUvdXRpbHMvZW50aXR5LXByb2Nlc3Nlcy1sb2FkZXIvZW50aXR5LXByb2Nlc3Nlcy1sb2FkZXIuYWN0aW9uJztcbmltcG9ydCB7IEVudGl0eVJlbW92ZUFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3N0YXRlL3V0aWxzL2VudGl0eS9lbnRpdHkuYWN0aW9uJztcbmltcG9ydCB7IFByb2Nlc3Nlc0xvYWRlclJlc2V0QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3RhdGUvdXRpbHMvcHJvY2Vzc2VzLWxvYWRlci9wcm9jZXNzZXMtbG9hZGVyLmFjdGlvbic7XG5pbXBvcnQgeyBNVUxUSV9DQVJUX0RBVEEgfSBmcm9tICcuLi9tdWx0aS1jYXJ0LXN0YXRlJztcblxuZXhwb3J0IGNvbnN0IENSRUFURV9DQVJUID0gJ1tDYXJ0XSBDcmVhdGUgQ2FydCc7XG5leHBvcnQgY29uc3QgQ1JFQVRFX0NBUlRfRkFJTCA9ICdbQ2FydF0gQ3JlYXRlIENhcnQgRmFpbCc7XG5leHBvcnQgY29uc3QgQ1JFQVRFX0NBUlRfU1VDQ0VTUyA9ICdbQ2FydF0gQ3JlYXRlIENhcnQgU3VjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBMT0FEX0NBUlQgPSAnW0NhcnRdIExvYWQgQ2FydCc7XG5leHBvcnQgY29uc3QgTE9BRF9DQVJUX0ZBSUwgPSAnW0NhcnRdIExvYWQgQ2FydCBGYWlsJztcbmV4cG9ydCBjb25zdCBMT0FEX0NBUlRfU1VDQ0VTUyA9ICdbQ2FydF0gTG9hZCBDYXJ0IFN1Y2Nlc3MnO1xuXG5leHBvcnQgY29uc3QgTE9BRF9DQVJUU19TVUNDRVNTID0gJ1tDYXJ0XSBMb2FkIENhcnRzIFN1Y2Nlc3MnO1xuXG5leHBvcnQgY29uc3QgQUREX0VNQUlMX1RPX0NBUlQgPSAnW0NhcnRdIEFkZCBFbWFpbCB0byBDYXJ0JztcbmV4cG9ydCBjb25zdCBBRERfRU1BSUxfVE9fQ0FSVF9GQUlMID0gJ1tDYXJ0XSBBZGQgRW1haWwgdG8gQ2FydCBGYWlsJztcbmV4cG9ydCBjb25zdCBBRERfRU1BSUxfVE9fQ0FSVF9TVUNDRVNTID0gJ1tDYXJ0XSBBZGQgRW1haWwgdG8gQ2FydCBTdWNjZXNzJztcblxuZXhwb3J0IGNvbnN0IE1FUkdFX0NBUlQgPSAnW0NhcnRdIE1lcmdlIENhcnQnO1xuZXhwb3J0IGNvbnN0IE1FUkdFX0NBUlRfU1VDQ0VTUyA9ICdbQ2FydF0gTWVyZ2UgQ2FydCBTdWNjZXNzJztcblxuZXhwb3J0IGNvbnN0IFJFU0VUX0NBUlRfREVUQUlMUyA9ICdbQ2FydF0gUmVzZXQgQ2FydCBEZXRhaWxzJztcblxuZXhwb3J0IGNvbnN0IFJFTU9WRV9DQVJUID0gJ1tDYXJ0XSBSZW1vdmUgQ2FydCc7XG5cbmV4cG9ydCBjb25zdCBERUxFVEVfQ0FSVCA9ICdbQ2FydF0gRGVsZXRlIENhcnQnO1xuZXhwb3J0IGNvbnN0IERFTEVURV9DQVJUX1NVQ0NFU1MgPSAnW0NhcnRdIERlbGV0ZSBDYXJ0IFN1Y2Nlc3MnO1xuZXhwb3J0IGNvbnN0IERFTEVURV9DQVJUX0ZBSUwgPSAnW0NhcnRdIERlbGV0ZSBDYXJ0IEZhaWwnO1xuXG5pbnRlcmZhY2UgQ3JlYXRlQ2FydFBheWxvYWQge1xuICB1c2VySWQ6IHN0cmluZztcbiAgLyoqIFVzZWQgYXMgYSB1bmlxdWUga2V5IGluIG5ncnggY2FydHMgc3RvcmUgKHdlIGRvbid0IGtub3cgY2FydElkIGF0IHRoYXQgdGltZSkgKi9cbiAgdGVtcENhcnRJZDogc3RyaW5nO1xuICBleHRyYURhdGE/OiB7XG4gICAgYWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcbiAgLyoqIEFub255bW91cyBjYXJ0IHdoaWNoIHNob3VsZCBiZSBtZXJnZWQgdG8gbmV3IGNhcnQgKi9cbiAgb2xkQ2FydElkPzogc3RyaW5nO1xuICAvKiogQ2FydCB0byB3aGljaCBzaG91bGQgd2UgbWVyZ2UgKG5vdCBwYXNzaW5nIHRoaXMgd2lsbCBjcmVhdGUgbmV3IGNhcnQpICovXG4gIHRvTWVyZ2VDYXJ0R3VpZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUNhcnQgZXh0ZW5kcyBFbnRpdHlMb2FkQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IENSRUFURV9DQVJUO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogQ3JlYXRlQ2FydFBheWxvYWQpIHtcbiAgICBzdXBlcihNVUxUSV9DQVJUX0RBVEEsIHBheWxvYWQudGVtcENhcnRJZCk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNhcnRGYWlsUGF5bG9hZCBleHRlbmRzIENyZWF0ZUNhcnRQYXlsb2FkIHtcbiAgZXJyb3I6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUNhcnRGYWlsIGV4dGVuZHMgRW50aXR5RmFpbEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBDUkVBVEVfQ0FSVF9GQUlMO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogQ3JlYXRlQ2FydEZhaWxQYXlsb2FkKSB7XG4gICAgc3VwZXIoTVVMVElfQ0FSVF9EQVRBLCBwYXlsb2FkLnRlbXBDYXJ0SWQpO1xuICB9XG59XG5cbmludGVyZmFjZSBDcmVhdGVDYXJ0U3VjY2Vzc1BheWxvYWQgZXh0ZW5kcyBDcmVhdGVDYXJ0UGF5bG9hZCB7XG4gIGNhcnQ6IENhcnQ7XG4gIGNhcnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQ2FydFN1Y2Nlc3MgZXh0ZW5kcyBFbnRpdHlTdWNjZXNzQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IENSRUFURV9DQVJUX1NVQ0NFU1M7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBDcmVhdGVDYXJ0U3VjY2Vzc1BheWxvYWQpIHtcbiAgICBzdXBlcihNVUxUSV9DQVJUX0RBVEEsIHBheWxvYWQuY2FydElkKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkRW1haWxUb0NhcnQgZXh0ZW5kcyBFbnRpdHlQcm9jZXNzZXNJbmNyZW1lbnRBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gQUREX0VNQUlMX1RPX0NBUlQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwYXlsb2FkOiB7IHVzZXJJZDogc3RyaW5nOyBjYXJ0SWQ6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9XG4gICkge1xuICAgIHN1cGVyKE1VTFRJX0NBUlRfREFUQSwgcGF5bG9hZC5jYXJ0SWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRFbWFpbFRvQ2FydEZhaWwgZXh0ZW5kcyBFbnRpdHlQcm9jZXNzZXNEZWNyZW1lbnRBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gQUREX0VNQUlMX1RPX0NBUlRfRkFJTDtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBheWxvYWQ6IHtcbiAgICAgIHVzZXJJZDogc3RyaW5nO1xuICAgICAgY2FydElkOiBzdHJpbmc7XG4gICAgICBlcnJvcjogYW55O1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKE1VTFRJX0NBUlRfREFUQSwgcGF5bG9hZC5jYXJ0SWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRFbWFpbFRvQ2FydFN1Y2Nlc3MgZXh0ZW5kcyBFbnRpdHlQcm9jZXNzZXNEZWNyZW1lbnRBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gQUREX0VNQUlMX1RPX0NBUlRfU1VDQ0VTUztcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBheWxvYWQ6IHsgdXNlcklkOiBzdHJpbmc7IGNhcnRJZDogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIoTVVMVElfQ0FSVF9EQVRBLCBwYXlsb2FkLmNhcnRJZCk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIExvYWRDYXJ0UGF5bG9hZCB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBjYXJ0SWQ6IHN0cmluZztcbiAgZXh0cmFEYXRhPzoge1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkQ2FydCBleHRlbmRzIEVudGl0eUxvYWRBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gTE9BRF9DQVJUO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogTG9hZENhcnRQYXlsb2FkKSB7XG4gICAgc3VwZXIoTVVMVElfQ0FSVF9EQVRBLCBwYXlsb2FkLmNhcnRJZCk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIExvYWRDYXJ0RmFpbFBheWxvYWQgZXh0ZW5kcyBMb2FkQ2FydFBheWxvYWQge1xuICBlcnJvcjogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTG9hZENhcnRGYWlsIGV4dGVuZHMgRW50aXR5RmFpbEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBMT0FEX0NBUlRfRkFJTDtcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IExvYWRDYXJ0RmFpbFBheWxvYWQpIHtcbiAgICBzdXBlcihNVUxUSV9DQVJUX0RBVEEsIHBheWxvYWQuY2FydElkLCBwYXlsb2FkLmVycm9yKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgTG9hZENhcnRTdWNjZXNzUGF5bG9hZCBleHRlbmRzIExvYWRDYXJ0UGF5bG9hZCB7XG4gIGNhcnQ6IENhcnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkQ2FydFN1Y2Nlc3MgZXh0ZW5kcyBFbnRpdHlTdWNjZXNzQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IExPQURfQ0FSVF9TVUNDRVNTO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogTG9hZENhcnRTdWNjZXNzUGF5bG9hZCkge1xuICAgIHN1cGVyKE1VTFRJX0NBUlRfREFUQSwgcGF5bG9hZC5jYXJ0SWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkQ2FydHNTdWNjZXNzIGV4dGVuZHMgRW50aXR5U3VjY2Vzc0FjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBMT0FEX0NBUlRTX1NVQ0NFU1M7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBDYXJ0W10pIHtcbiAgICBzdXBlcihcbiAgICAgIE1VTFRJX0NBUlRfREFUQSxcbiAgICAgIHBheWxvYWQubWFwKChjYXJ0KSA9PiBjYXJ0Py5jb2RlKVxuICAgICk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIE1lcmdlQ2FydFBheWxvYWQge1xuICBjYXJ0SWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGV4dHJhRGF0YT86IHsgYWN0aXZlPzogYm9vbGVhbiB9O1xuICAvKipcbiAgICogTWVyZ2VDYXJ0IGFjdGlvbnMgdHJpZ2dlcnMgQ3JlYXRlQ2FydCB3aGljaCByZXF1aXJlcyB0aGlzIHBhcmFtZXRlciwgc28gdGhhdCdzIHdoeSBpdCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHRlbXBDYXJ0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1lcmdlQ2FydCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBNRVJHRV9DQVJUO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogTWVyZ2VDYXJ0UGF5bG9hZCkge31cbn1cblxuaW50ZXJmYWNlIE1lcmdlQ2FydFN1Y2Nlc3NQYXlsb2FkIGV4dGVuZHMgTWVyZ2VDYXJ0UGF5bG9hZCB7XG4gIC8qKlxuICAgKiBQcmV2aW91cyBjYXJ0IGlkIHdoaWNoIHdhcyBtZXJnZWQgd2l0aCBuZXcvdXNlciBjYXJ0LlxuICAgKiBOZWVkZWQgdG8ga25vdyB3aGljaCBvYnNvbGV0ZSBlbnRpdHkgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqL1xuICBvbGRDYXJ0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1lcmdlQ2FydFN1Y2Nlc3MgZXh0ZW5kcyBFbnRpdHlSZW1vdmVBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gTUVSR0VfQ0FSVF9TVUNDRVNTO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogTWVyZ2VDYXJ0U3VjY2Vzc1BheWxvYWQpIHtcbiAgICBzdXBlcihNVUxUSV9DQVJUX0RBVEEsIHBheWxvYWQub2xkQ2FydElkKTtcbiAgfVxufVxuXG4vKipcbiAqIE9uIHNpdGUgY29udGV4dCBjaGFuZ2Ugd2Ugd2FudCB0byBrZWVwIGN1cnJlbnQgbGlzdCBvZiBlbnRpdGllcywgYnV0IHdlIHdhbnQgdG8gY2xlYXIgdGhlIHZhbHVlIGFuZCBmbGFncy5cbiAqIFdpdGggUHJvY2Vzc2VzTG9hZGVyUmVzZXRBY3Rpb24gd2UgcnVuIGl0IG9uIGV2ZXJ5IGVudGl0eSBvZiB0aGlzIHR5cGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNldENhcnREZXRhaWxzIGV4dGVuZHMgUHJvY2Vzc2VzTG9hZGVyUmVzZXRBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gUkVTRVRfQ0FSVF9ERVRBSUxTO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihNVUxUSV9DQVJUX0RBVEEpO1xuICB9XG59XG5cbi8qKlxuICogVXNlZCBmb3IgY2xlYW5pbmcgY2FydCBpbiBsb2NhbCBzdGF0ZSwgd2hlbiB3ZSBnZXQgaW5mb3JtYXRpb24gdGhhdCBpdCBubyBsb25nZXIgZXhpc3RzIGluIHRoZSBiYWNrZW5kLlxuICogRm9yIHJlbW92aW5nIHBhcnRpY3VsYXIgY2FydCBpbiBib3RoIHBsYWNlcyB1c2UgRGVsZXRlQ2FydCBhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgUmVtb3ZlQ2FydCBleHRlbmRzIEVudGl0eVJlbW92ZUFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBSRU1PVkVfQ0FSVDtcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHsgY2FydElkOiBzdHJpbmcgfSkge1xuICAgIHN1cGVyKE1VTFRJX0NBUlRfREFUQSwgcGF5bG9hZC5jYXJ0SWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVDYXJ0IGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IERFTEVURV9DQVJUO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogeyB1c2VySWQ6IHN0cmluZzsgY2FydElkOiBzdHJpbmcgfSkge31cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUNhcnRTdWNjZXNzIGV4dGVuZHMgRW50aXR5UmVtb3ZlQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IERFTEVURV9DQVJUX1NVQ0NFU1M7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiB7IHVzZXJJZDogc3RyaW5nOyBjYXJ0SWQ6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoTVVMVElfQ0FSVF9EQVRBLCBwYXlsb2FkLmNhcnRJZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUNhcnRGYWlsIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IERFTEVURV9DQVJUX0ZBSUw7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiB7IHVzZXJJZDogc3RyaW5nOyBjYXJ0SWQ6IHN0cmluZzsgZXJyb3I6IGFueSB9KSB7fVxufVxuXG5leHBvcnQgdHlwZSBDYXJ0QWN0aW9uID1cbiAgfCBDcmVhdGVDYXJ0XG4gIHwgQ3JlYXRlQ2FydEZhaWxcbiAgfCBDcmVhdGVDYXJ0U3VjY2Vzc1xuICB8IExvYWRDYXJ0XG4gIHwgTG9hZENhcnRGYWlsXG4gIHwgTG9hZENhcnRTdWNjZXNzXG4gIHwgTG9hZENhcnRzU3VjY2Vzc1xuICB8IE1lcmdlQ2FydFxuICB8IE1lcmdlQ2FydFN1Y2Nlc3NcbiAgfCBSZXNldENhcnREZXRhaWxzXG4gIHwgQWRkRW1haWxUb0NhcnRcbiAgfCBBZGRFbWFpbFRvQ2FydEZhaWxcbiAgfCBBZGRFbWFpbFRvQ2FydFN1Y2Nlc3NcbiAgfCBEZWxldGVDYXJ0XG4gIHwgRGVsZXRlQ2FydFN1Y2Nlc3NcbiAgfCBEZWxldGVDYXJ0RmFpbFxuICB8IFJlbW92ZUNhcnQ7XG4iXX0=