truemark-cdk-lib 0.0.38 → 1.0.1-alpha.0

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.
@@ -0,0 +1 @@
1
+ export * from "./lib";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./lib"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9saWJcIlxuIl19
@@ -0,0 +1,23 @@
1
+ import { Construct } from "constructs";
2
+ import { Bucket } from "aws-cdk-lib/aws-s3";
3
+ import { RemovalPolicy } from "aws-cdk-lib/core";
4
+ import { OriginAccessIdentity } from "aws-cdk-lib/aws-cloudfront";
5
+ export interface CloudfrontBucketProps {
6
+ /**
7
+ * Policy to apply when the bucket is removed from this stack.
8
+ * @default RemovalPolicy.RETAIN
9
+ */
10
+ readonly removalPolicy?: RemovalPolicy;
11
+ /**
12
+ * Whether all objects should be automatically deleted when the bucket is removed from the stack or when the stack is deleted.
13
+ * Requires the removalPolicy to be set to RemovalPolicy.DESTROY.
14
+ *
15
+ * @default false
16
+ */
17
+ readonly autoDeleteObjects?: boolean;
18
+ }
19
+ export declare class CloudfrontBucket extends Construct {
20
+ readonly bucket: Bucket;
21
+ readonly originAccessIdentity: OriginAccessIdentity;
22
+ constructor(scope: Construct, id: string, props: CloudfrontBucketProps);
23
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudfrontBucket = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const aws_s3_1 = require("../../aws-s3");
6
+ const aws_s3_2 = require("aws-cdk-lib/aws-s3");
7
+ const core_1 = require("aws-cdk-lib/core");
8
+ const aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
9
+ class CloudfrontBucket extends constructs_1.Construct {
10
+ constructor(scope, id, props) {
11
+ var _a, _b;
12
+ super(scope, id);
13
+ const removalPolicy = (_a = props.removalPolicy) !== null && _a !== void 0 ? _a : core_1.RemovalPolicy.RETAIN;
14
+ this.bucket = new aws_s3_1.ExtendedBucket(this, "Default", {
15
+ encryption: aws_s3_2.BucketEncryption.S3_MANAGED,
16
+ removalPolicy,
17
+ autoDeleteObjects: ((_b = props.autoDeleteObjects) !== null && _b !== void 0 ? _b : false) && removalPolicy === core_1.RemovalPolicy.DESTROY,
18
+ blockPublicAccess: aws_s3_2.BlockPublicAccess.BLOCK_ALL,
19
+ });
20
+ this.originAccessIdentity = new aws_cloudfront_1.OriginAccessIdentity(this, "Access");
21
+ this.bucket.grantRead(this.originAccessIdentity);
22
+ }
23
+ }
24
+ exports.CloudfrontBucket = CloudfrontBucket;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1idWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZyb250LWJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFDckMseUNBQTRDO0FBQzVDLCtDQUErRTtBQUMvRSwyQ0FBK0M7QUFDL0MsK0RBQWdFO0FBbUJoRSxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxhQUFhLFNBQUcsS0FBSyxDQUFDLGFBQWEsbUNBQUksb0JBQWEsQ0FBQyxNQUFNLENBQUM7UUFFbEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHVCQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNoRCxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtZQUN2QyxhQUFhO1lBQ2IsaUJBQWlCLEVBQUUsT0FBQyxLQUFLLENBQUMsaUJBQWlCLG1DQUFJLEtBQUssQ0FBQyxJQUFJLGFBQWEsS0FBSyxvQkFBYSxDQUFDLE9BQU87WUFDaEcsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxxQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBcEJELDRDQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtFeHRlbmRlZEJ1Y2tldH0gZnJvbSBcIi4uLy4uL2F3cy1zM1wiO1xuaW1wb3J0IHtCbG9ja1B1YmxpY0FjY2VzcywgQnVja2V0LCBCdWNrZXRFbmNyeXB0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQge1JlbW92YWxQb2xpY3l9IGZyb20gXCJhd3MtY2RrLWxpYi9jb3JlXCI7XG5pbXBvcnQge09yaWdpbkFjY2Vzc0lkZW50aXR5fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZGZyb250QnVja2V0UHJvcHMge1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgdG8gYXBwbHkgd2hlbiB0aGUgYnVja2V0IGlzIHJlbW92ZWQgZnJvbSB0aGlzIHN0YWNrLlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYWxsIG9iamVjdHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZCB3aGVuIHRoZSBidWNrZXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjayBvciB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLlxuICAgKiBSZXF1aXJlcyB0aGUgcmVtb3ZhbFBvbGljeSB0byBiZSBzZXQgdG8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0RlbGV0ZU9iamVjdHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQ2xvdWRmcm9udEJ1Y2tldCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIHJlYWRvbmx5IG9yaWdpbkFjY2Vzc0lkZW50aXR5OiBPcmlnaW5BY2Nlc3NJZGVudGl0eTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRmcm9udEJ1Y2tldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuXG4gICAgdGhpcy5idWNrZXQgPSBuZXcgRXh0ZW5kZWRCdWNrZXQodGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCwgLy8gQ2xvdWRGcm9udCBjYW4gdXNlIEtNUyB3aXRoIFMzXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IChwcm9wcy5hdXRvRGVsZXRlT2JqZWN0cyA/PyBmYWxzZSkgJiYgcmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCwgLy8gUmVjb21tZW5kZWQgdG8gYXZvaWQgcGVybWlzc2lvbnMgaXNzdWVzXG4gICAgfSk7XG5cbiAgICB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5ID0gbmV3IE9yaWdpbkFjY2Vzc0lkZW50aXR5KHRoaXMsIFwiQWNjZXNzXCIpO1xuICAgIHRoaXMuYnVja2V0LmdyYW50UmVhZCh0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5KTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export * from "./cloudfront-bucket";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./cloudfront-bucket"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jbG91ZGZyb250LWJ1Y2tldFwiXG4iXX0=
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * as aws_apigatewayv2 from "./aws-apigatewayv2";
2
2
  export * as aws_centergauge from "./aws-centergauge";
3
+ export * as aws_cloudfront from "./aws-cloudfront";
3
4
  export * as aws_cloudwatch from "./aws-cloudwatch";
4
5
  export * as aws_codepipeline from "./aws-codepipeline";
5
6
  export * as aws_dynamodb from "./aws-dynamodb";
package/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.aws_apigatewayv2 = require("./aws-apigatewayv2");
4
4
  exports.aws_centergauge = require("./aws-centergauge");
5
+ exports.aws_cloudfront = require("./aws-cloudfront");
5
6
  exports.aws_cloudwatch = require("./aws-cloudwatch");
6
7
  exports.aws_codepipeline = require("./aws-codepipeline");
7
8
  exports.aws_dynamodb = require("./aws-dynamodb");
@@ -14,4 +15,4 @@ exports.aws_sqs = require("./aws-sqs");
14
15
  exports.aws_ssm = require("./aws-ssm");
15
16
  exports.aws_website = require("./aws-website");
16
17
  exports.helpers = require("./helpers");
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlEQUF1RDtBQUN2RCx1REFBcUQ7QUFDckQscURBQW1EO0FBQ25ELHlEQUF1RDtBQUN2RCxpREFBK0M7QUFDL0MsNkNBQTJDO0FBQzNDLHFEQUFtRDtBQUNuRCwrQ0FBNkM7QUFDN0MscUNBQW1DO0FBQ25DLHVDQUFxQztBQUNyQyx1Q0FBcUM7QUFDckMsdUNBQXFDO0FBQ3JDLCtDQUE2QztBQUM3Qyx1Q0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBhd3NfYXBpZ2F0ZXdheXYyIGZyb20gXCIuL2F3cy1hcGlnYXRld2F5djJcIjtcbmV4cG9ydCAqIGFzIGF3c19jZW50ZXJnYXVnZSBmcm9tIFwiLi9hd3MtY2VudGVyZ2F1Z2VcIjtcbmV4cG9ydCAqIGFzIGF3c19jbG91ZHdhdGNoIGZyb20gXCIuL2F3cy1jbG91ZHdhdGNoXCI7XG5leHBvcnQgKiBhcyBhd3NfY29kZXBpcGVsaW5lIGZyb20gXCIuL2F3cy1jb2RlcGlwZWxpbmVcIjtcbmV4cG9ydCAqIGFzIGF3c19keW5hbW9kYiBmcm9tIFwiLi9hd3MtZHluYW1vZGJcIjtcbmV4cG9ydCAqIGFzIGF3c19sYW1iZGEgZnJvbSBcIi4vYXdzLWxhbWJkYVwiO1xuZXhwb3J0ICogYXMgYXdzX21vbml0b3JpbmcgZnJvbSBcIi4vYXdzLW1vbml0b3JpbmdcIjtcbmV4cG9ydCAqIGFzIGF3c19yb3V0ZTUzIGZyb20gXCIuL2F3cy1yb3V0ZTUzXCI7XG5leHBvcnQgKiBhcyBhd3NfczMgZnJvbSBcIi4vYXdzLXMzXCI7XG5leHBvcnQgKiBhcyBhd3Nfc2VzIGZyb20gXCIuL2F3cy1zZXNcIjtcbmV4cG9ydCAqIGFzIGF3c19zcXMgZnJvbSBcIi4vYXdzLXNxc1wiO1xuZXhwb3J0ICogYXMgYXdzX3NzbSBmcm9tIFwiLi9hd3Mtc3NtXCI7XG5leHBvcnQgKiBhcyBhd3Nfd2Vic2l0ZSBmcm9tIFwiLi9hd3Mtd2Vic2l0ZVwiO1xuZXhwb3J0ICogYXMgaGVscGVycyBmcm9tIFwiLi9oZWxwZXJzXCI7XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlEQUF1RDtBQUN2RCx1REFBcUQ7QUFDckQscURBQW1EO0FBQ25ELHFEQUFtRDtBQUNuRCx5REFBdUQ7QUFDdkQsaURBQStDO0FBQy9DLDZDQUEyQztBQUMzQyxxREFBbUQ7QUFDbkQsK0NBQTZDO0FBQzdDLHFDQUFtQztBQUNuQyx1Q0FBcUM7QUFDckMsdUNBQXFDO0FBQ3JDLHVDQUFxQztBQUNyQywrQ0FBNkM7QUFDN0MsdUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgYXdzX2FwaWdhdGV3YXl2MiBmcm9tIFwiLi9hd3MtYXBpZ2F0ZXdheXYyXCI7XG5leHBvcnQgKiBhcyBhd3NfY2VudGVyZ2F1Z2UgZnJvbSBcIi4vYXdzLWNlbnRlcmdhdWdlXCI7XG5leHBvcnQgKiBhcyBhd3NfY2xvdWRmcm9udCBmcm9tIFwiLi9hd3MtY2xvdWRmcm9udFwiO1xuZXhwb3J0ICogYXMgYXdzX2Nsb3Vkd2F0Y2ggZnJvbSBcIi4vYXdzLWNsb3Vkd2F0Y2hcIjtcbmV4cG9ydCAqIGFzIGF3c19jb2RlcGlwZWxpbmUgZnJvbSBcIi4vYXdzLWNvZGVwaXBlbGluZVwiO1xuZXhwb3J0ICogYXMgYXdzX2R5bmFtb2RiIGZyb20gXCIuL2F3cy1keW5hbW9kYlwiO1xuZXhwb3J0ICogYXMgYXdzX2xhbWJkYSBmcm9tIFwiLi9hd3MtbGFtYmRhXCI7XG5leHBvcnQgKiBhcyBhd3NfbW9uaXRvcmluZyBmcm9tIFwiLi9hd3MtbW9uaXRvcmluZ1wiO1xuZXhwb3J0ICogYXMgYXdzX3JvdXRlNTMgZnJvbSBcIi4vYXdzLXJvdXRlNTNcIjtcbmV4cG9ydCAqIGFzIGF3c19zMyBmcm9tIFwiLi9hd3MtczNcIjtcbmV4cG9ydCAqIGFzIGF3c19zZXMgZnJvbSBcIi4vYXdzLXNlc1wiO1xuZXhwb3J0ICogYXMgYXdzX3NxcyBmcm9tIFwiLi9hd3Mtc3FzXCI7XG5leHBvcnQgKiBhcyBhd3Nfc3NtIGZyb20gXCIuL2F3cy1zc21cIjtcbmV4cG9ydCAqIGFzIGF3c193ZWJzaXRlIGZyb20gXCIuL2F3cy13ZWJzaXRlXCI7XG5leHBvcnQgKiBhcyBoZWxwZXJzIGZyb20gXCIuL2hlbHBlcnNcIjtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
- "version": "0.0.38",
3
+ "version": "1.0.1-alpha.0+0750dd4",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "scripts": {
@@ -11,14 +11,22 @@
11
11
  "devDependencies": {
12
12
  "@types/jest": "^27.4.1",
13
13
  "@types/node": "10.17.27",
14
- "aws-cdk-lib": "2.28.0",
15
- "constructs": "10.1.41",
14
+ "aws-cdk-lib": "2.42.1",
15
+ "constructs": "10.1.107",
16
16
  "jest": "^27.5.1",
17
17
  "ts-jest": "^27.1.4",
18
18
  "typescript": "~3.9.7"
19
19
  },
20
20
  "peerDependencies": {
21
+ "@aws-cdk/aws-apigatewayv2-alpha": "^2.18.0-alpha.0",
22
+ "@aws-cdk/aws-apigatewayv2-integrations-alpha": "^2.18.0-alpha.0",
23
+ "@aws-cdk/aws-appsync-alpha": "^2.18.0-alpha.0",
24
+ "@aws-cdk/aws-lambda-go-alpha": "^2.18.0-alpha.0",
25
+ "@aws-cdk/aws-lambda-python-alpha": "^2.18.0-alpha.0",
26
+ "@aws-cdk/aws-redshift-alpha": "^2.18.0-alpha.0",
27
+ "@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
21
28
  "aws-cdk-lib": "^2.28.0",
29
+ "cdk-monitoring-constructs": "^1.10.0",
22
30
  "constructs": "^10.1.41"
23
31
  },
24
32
  "exports": {
@@ -26,6 +34,7 @@
26
34
  "./package.json": "./package.json",
27
35
  "./aws-apigatewayv2": "./aws-apigatewayv2/index.js",
28
36
  "./aws-centergauge": "./aws-centergauge/index.js",
37
+ "./aws-cloudfront": "./aws-cloudfront/index.js",
29
38
  "./aws-cloudwatch": "./aws-cloudwatch/index.js",
30
39
  "./aws-codepipeline": "./aws-codepipeline/index.js",
31
40
  "./aws-dynamodb": "./aws-dynamodb/index.js",
@@ -42,15 +51,5 @@
42
51
  "publishConfig": {
43
52
  "access": "public"
44
53
  },
45
- "dependencies": {
46
- "@aws-cdk/aws-apigatewayv2-alpha": "^2.18.0-alpha.0",
47
- "@aws-cdk/aws-apigatewayv2-integrations-alpha": "^2.18.0-alpha.0",
48
- "@aws-cdk/aws-appsync-alpha": "^2.18.0-alpha.0",
49
- "@aws-cdk/aws-lambda-go-alpha": "^2.18.0-alpha.0",
50
- "@aws-cdk/aws-lambda-python-alpha": "^2.18.0-alpha.0",
51
- "@aws-cdk/aws-redshift-alpha": "^2.18.0-alpha.0",
52
- "@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
53
- "cdk-monitoring-constructs": "^1.10.0"
54
- },
55
- "gitHead": "3eb809d2ae43489b07e80361e7e1cac54008daaf"
54
+ "gitHead": "0750dd4d66c4668055caf2d66712e2cbccefd1a7"
56
55
  }