cmp-aws-database 1.2.0-dev.121 → 1.2.0-dev.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/customer-user/default-platter/default-platters-model.d.ts +4 -0
- package/dist/customer-user/default-platter/default-platters-model.js +17 -1
- package/dist/customer-user/order-module/order/order-dao.d.ts +12 -0
- package/dist/customer-user/order-module/order/order-dao.js +17 -1
- package/package.json +1 -1
|
@@ -100,7 +100,23 @@ __decorate([
|
|
|
100
100
|
(0, annotations_1.attribute)(),
|
|
101
101
|
__metadata("design:type", Number)
|
|
102
102
|
], DefaultPlatterModel.prototype, "discountPercentage", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, annotations_1.attribute)(),
|
|
105
|
+
__metadata("design:type", Number)
|
|
106
|
+
], DefaultPlatterModel.prototype, "vegMinPrice", void 0);
|
|
107
|
+
__decorate([
|
|
108
|
+
(0, annotations_1.attribute)(),
|
|
109
|
+
__metadata("design:type", Number)
|
|
110
|
+
], DefaultPlatterModel.prototype, "vegMaxPrice", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
(0, annotations_1.attribute)(),
|
|
113
|
+
__metadata("design:type", Number)
|
|
114
|
+
], DefaultPlatterModel.prototype, "nonVegMinPrice", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, annotations_1.attribute)(),
|
|
117
|
+
__metadata("design:type", Number)
|
|
118
|
+
], DefaultPlatterModel.prototype, "nonVegMaxPrice", void 0);
|
|
103
119
|
exports.DefaultPlatterModel = DefaultPlatterModel = __decorate([
|
|
104
120
|
(0, annotations_1.table)("DefaultPlattersTable")
|
|
105
121
|
], DefaultPlatterModel);
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wbGF0dGVycy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXN0b21lci11c2VyL2RlZmF1bHQtcGxhdHRlci9kZWZhdWx0LXBsYXR0ZXJzLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHVEQUErRTtBQUMvRSxpREFBNkM7QUFHdEMsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBb0IsU0FBUSxzQkFBUztDQThEakQsQ0FBQTtBQTlEWSxrREFBbUI7QUFFNUI7SUFEQyxJQUFBLGtDQUFvQixFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDOztzREFDdkI7QUFFbEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3dEQUNRO0FBRXBCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs0REFDYztBQUUxQjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDOztzREFDOUU7QUFFbEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3VEQUNPO0FBRW5CO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt1REFDTztBQUVuQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ0s7QUFFakI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MERBQ2xFO0FBRXRCO0lBREMsSUFBQSx1QkFBUyxHQUFFOztxREFDSztBQUVqQjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsYUFBYTs7O3NEQUNoRjtBQUVsQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7eURBQ1c7QUFFdkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3FEQUNLO0FBRWpCO0lBREMsSUFBQSx1QkFBUyxFQUFDLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7O3dEQUMzRTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7b0RBQ0k7QUFHaEI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MkRBQ2xFO0FBR3ZCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt5REFDUztBQUdyQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7MkRBQ1c7QUFHdkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OzJEQUNXO0FBR3ZCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs2REFDYztBQUcxQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7NkRBQ2M7QUFHMUI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OytEQUNnQjtBQUc1QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7d0RBQ1E7QUFHcEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3dEQUNRO0FBR3BCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzsyREFDVztBQUd2QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7MkRBQ1c7OEJBN0RkLG1CQUFtQjtJQUQvQixJQUFBLG1CQUFLLEVBQUMsc0JBQXNCLENBQUM7R0FDakIsbUJBQW1CLENBOEQvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZSwgYXV0b0dlbmVyYXRlZEhhc2hLZXksIHRhYmxlIH0gZnJvbSBcIkBub3ZhLW9kbS9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcblxuQHRhYmxlKFwiRGVmYXVsdFBsYXR0ZXJzVGFibGVcIilcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGxhdHRlck1vZGVsIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgICBAYXV0b0dlbmVyYXRlZEhhc2hLZXkoeyB0eXBlOiAnU3RyaW5nJyB9KVxuICAgIHBsYXR0ZXJJZDogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHBsYXR0ZXJOYW1lOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgZXZlbnRDYXRlZ29yaWVzOiBzdHJpbmdbXTtcbiAgICBAYXR0cmlidXRlKHsgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcInBsYXR0ZXJUeXBlQmFzZVByaWNlSW5kZXhcIjogXCJSQU5HRVwiIH0sIHR5cGU6ICdOdW1iZXInIH0pXG4gICAgYmFzZVByaWNlOiBudW1iZXI7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbWluaW11bVBheDogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIG1heGltdW1QYXg6IG51bWJlcjtcbiAgICBAYXR0cmlidXRlKClcbiAgICBtaW5QcmljZTogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwicGxhdHRlckFjdGl2ZUluZGV4XCI6IFwiSEFTSFwiIH0sIHR5cGU6ICdTdHJpbmcnIH0pXG4gICAgcGxhdHRlckFjdGl2ZTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJtZWFsVGltZXNJbmRleFwiOiBcIkhBU0hcIiB9LCB0eXBlOiAnU3RyaW5nJyB9KSAvLyBWMiBVcGRhdGVkXG4gICAgbWVhbFRpbWVzOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbWVudUxvY2F0aW9uOiBzdHJpbmdbXTtcbiAgICBAYXR0cmlidXRlKClcbiAgICBtZW51VHlwZTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwicGxhdHRlclR5cGVCYXNlUHJpY2VJbmRleFwiOiBcIkhBU0hcIiB9LCB0eXBlOiAnU3RyaW5nJyB9KVxuICAgIHBsYXR0ZXJUeXBlOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcG9wdWxhcjogc3RyaW5nO1xuXG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJwbGF0dGVyU3ViVHlwZUluZGV4XCI6IFwiSEFTSFwiIH0sIHR5cGU6ICdTdHJpbmcnIH0pXG4gICAgcGxhdHRlclN1YlR5cGU6IHN0cmluZzsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGljb25JbWFnZVRhZzogc3RyaW5nOyAvLyBWMlxuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcGxhdHRlclRleHRUYWc6IHN0cmluZzsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHBsYXR0ZXJDdWlzaW5lOiBzdHJpbmc7IC8vIFYyXG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBwbGF0dGVyRXZlbnRUeXBlPzogc3RyaW5nOyAvLyBWMlxuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcGxhdGVGYWN0b3JWYWx1ZT86IG51bWJlcjsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGRpc2NvdW50UGVyY2VudGFnZT86IG51bWJlcjsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHZlZ01pblByaWNlOiBudW1iZXI7IC8vIE5ldyBBZGRlZCAwNy0wMy0yMDI2XG5cbiAgICBAYXR0cmlidXRlKClcbiAgICB2ZWdNYXhQcmljZTogbnVtYmVyOyAvLyBOZXcgQWRkZWQgMDctMDMtMjAyNlxuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbm9uVmVnTWluUHJpY2U6IG51bWJlcjsgLy8gTmV3IEFkZGVkIDA3LTAzLTIwMjZcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIG5vblZlZ01heFByaWNlOiBudW1iZXI7IC8vIE5ldyBBZGRlZCAwNy0wMy0yMDI2XG59XG4iXX0=
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { GenericDAO } from "../../../base-dao";
|
|
2
2
|
import { OrderModel } from "./order-model";
|
|
3
|
+
export interface GetOrdersByUserIdResponse {
|
|
4
|
+
orders: OrderModel[];
|
|
5
|
+
isFirstOrder: boolean;
|
|
6
|
+
}
|
|
3
7
|
declare class OrderDAO extends GenericDAO<OrderModel> {
|
|
4
8
|
/**
|
|
5
9
|
* Get Order by Order ID
|
|
@@ -7,6 +11,14 @@ declare class OrderDAO extends GenericDAO<OrderModel> {
|
|
|
7
11
|
* @returns Order Model
|
|
8
12
|
*/
|
|
9
13
|
getById: (orderId: string) => Promise<OrderModel>;
|
|
14
|
+
/**
|
|
15
|
+
* Get orders by User ID with firstOrder flag.
|
|
16
|
+
* firstOrder is true if at least one order has status in firstOrderStatuses.
|
|
17
|
+
* @param userId User ID
|
|
18
|
+
* @param firstOrderStatuses Statuses that count as "first order" (default: APPROVED, PENDING, COMPLETED)
|
|
19
|
+
* @returns Orders and firstOrder boolean
|
|
20
|
+
*/
|
|
21
|
+
getByUserId: (userId: string, firstOrderStatuses?: string[]) => Promise<GetOrdersByUserIdResponse>;
|
|
10
22
|
}
|
|
11
23
|
export declare const orderDao: OrderDAO;
|
|
12
24
|
export {};
|
|
@@ -16,7 +16,23 @@ class OrderDAO extends base_dao_1.GenericDAO {
|
|
|
16
16
|
order.orderId = orderId;
|
|
17
17
|
return this.get(order);
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Get orders by User ID with firstOrder flag.
|
|
21
|
+
* firstOrder is true if at least one order has status in firstOrderStatuses.
|
|
22
|
+
* @param userId User ID
|
|
23
|
+
* @param firstOrderStatuses Statuses that count as "first order" (default: APPROVED, PENDING, COMPLETED)
|
|
24
|
+
* @returns Orders and firstOrder boolean
|
|
25
|
+
*/
|
|
26
|
+
this.getByUserId = async (userId, firstOrderStatuses = ["APPROVED", "PENDING", "COMPLETED"]) => {
|
|
27
|
+
const orders = [];
|
|
28
|
+
const results = await this.parallelQuery(order_model_1.OrderModel, [{ userId }], 1, { indexName: "userIndex" });
|
|
29
|
+
for (const order of results.flat()) {
|
|
30
|
+
orders.push(order);
|
|
31
|
+
}
|
|
32
|
+
const firstOrder = orders.some((order) => firstOrderStatuses.includes(order.orderStatus));
|
|
33
|
+
return { orders, isFirstOrder: firstOrder };
|
|
34
|
+
};
|
|
19
35
|
}
|
|
20
36
|
}
|
|
21
37
|
exports.orderDao = new OrderDAO();
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvb3JkZXItbW9kdWxlL29yZGVyL29yZGVyLWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBdUQ7QUFDdkQsK0NBQTJDO0FBTzNDLE1BQU0sUUFBUyxTQUFRLHFCQUFzQjtJQUE3Qzs7UUFDSTs7OztXQUlHO1FBQ0gsWUFBTyxHQUFHLEtBQUssRUFBRSxPQUFlLEVBQXVCLEVBQUU7WUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSx3QkFBVSxFQUFFLENBQUM7WUFDL0IsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQUVGOzs7Ozs7V0FNRztRQUNILGdCQUFXLEdBQUcsS0FBSyxFQUNmLE1BQWMsRUFDZCxxQkFBK0IsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxFQUNqQyxFQUFFO1lBQ3BDLE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHdCQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDbEcsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFtQixDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNyQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQXFCLENBQUMsQ0FDM0QsQ0FBQztZQUNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNOLENBQUM7Q0FBQTtBQUVZLFFBQUEsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljREFPLCBtYXBwZXIgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1kYW9cIjtcbmltcG9ydCB7IE9yZGVyTW9kZWwgfSBmcm9tIFwiLi9vcmRlci1tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldE9yZGVyc0J5VXNlcklkUmVzcG9uc2Uge1xuICAgIG9yZGVyczogT3JkZXJNb2RlbFtdO1xuICAgIGlzRmlyc3RPcmRlcjogYm9vbGVhbjtcbn1cblxuY2xhc3MgT3JkZXJEQU8gZXh0ZW5kcyBHZW5lcmljREFPPE9yZGVyTW9kZWw+IHtcbiAgICAvKipcbiAgICAgKiBHZXQgT3JkZXIgYnkgT3JkZXIgSURcbiAgICAgKiBAcGFyYW0gb3JkZXJJZCBPcmRlciBJRFxuICAgICAqIEByZXR1cm5zIE9yZGVyIE1vZGVsXG4gICAgICovXG4gICAgZ2V0QnlJZCA9IGFzeW5jIChvcmRlcklkOiBzdHJpbmcpOiBQcm9taXNlPE9yZGVyTW9kZWw+ID0+IHtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBuZXcgT3JkZXJNb2RlbCgpO1xuICAgICAgICBvcmRlci5vcmRlcklkID0gb3JkZXJJZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KG9yZGVyKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0IG9yZGVycyBieSBVc2VyIElEIHdpdGggZmlyc3RPcmRlciBmbGFnLlxuICAgICAqIGZpcnN0T3JkZXIgaXMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb3JkZXIgaGFzIHN0YXR1cyBpbiBmaXJzdE9yZGVyU3RhdHVzZXMuXG4gICAgICogQHBhcmFtIHVzZXJJZCBVc2VyIElEXG4gICAgICogQHBhcmFtIGZpcnN0T3JkZXJTdGF0dXNlcyBTdGF0dXNlcyB0aGF0IGNvdW50IGFzIFwiZmlyc3Qgb3JkZXJcIiAoZGVmYXVsdDogQVBQUk9WRUQsIFBFTkRJTkcsIENPTVBMRVRFRClcbiAgICAgKiBAcmV0dXJucyBPcmRlcnMgYW5kIGZpcnN0T3JkZXIgYm9vbGVhblxuICAgICAqL1xuICAgIGdldEJ5VXNlcklkID0gYXN5bmMgKFxuICAgICAgICB1c2VySWQ6IHN0cmluZyxcbiAgICAgICAgZmlyc3RPcmRlclN0YXR1c2VzOiBzdHJpbmdbXSA9IFtcIkFQUFJPVkVEXCIsIFwiUEVORElOR1wiLCBcIkNPTVBMRVRFRFwiXVxuICAgICk6IFByb21pc2U8R2V0T3JkZXJzQnlVc2VySWRSZXNwb25zZT4gPT4ge1xuICAgICAgICBjb25zdCBvcmRlcnM6IE9yZGVyTW9kZWxbXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5wYXJhbGxlbFF1ZXJ5KE9yZGVyTW9kZWwsIFt7IHVzZXJJZCB9XSwgMSwgeyBpbmRleE5hbWU6IFwidXNlckluZGV4XCIgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgb3JkZXIgb2YgcmVzdWx0cy5mbGF0KCkpIHtcbiAgICAgICAgICAgIG9yZGVycy5wdXNoKG9yZGVyIGFzIE9yZGVyTW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpcnN0T3JkZXIgPSBvcmRlcnMuc29tZSgob3JkZXIpID0+XG4gICAgICAgICAgICBmaXJzdE9yZGVyU3RhdHVzZXMuaW5jbHVkZXMob3JkZXIub3JkZXJTdGF0dXMgYXMgc3RyaW5nKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyBvcmRlcnMsIGlzRmlyc3RPcmRlcjogZmlyc3RPcmRlciB9O1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBvcmRlckRhbyA9IG5ldyBPcmRlckRBTygpOyJdfQ==
|