@anyakichi/cdk-rsync-backup 0.2.0 → 0.2.2

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  AWS CDK L3 construct for cloud backup system with rsync.
4
4
 
5
5
  Create a full system backup of an on-premise server as EBS snapshots.
6
- When you copy a backup with rsync, the system will
6
+ When you send files with rsync, the system will
7
7
 
8
8
  - Create an EBS volume (from snapshot if exists)
9
9
  - Attach and mount the volume to the EC2 instance
@@ -21,6 +21,8 @@ $ npm install @anyakichi/cdk-rsync-backup
21
21
 
22
22
  ## Usage
23
23
 
24
+ ### Backup
25
+
24
26
  ```typescript
25
27
  import * as cdk from "aws-cdk-lib";
26
28
  import { Construct } from "constructs";
@@ -30,8 +32,8 @@ export class CdkDemoStack extends cdk.Stack {
30
32
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
31
33
  super(scope, id, props);
32
34
 
33
- // Create `hostname` rsync module with 100 GiB EBS. SSH public key
34
- // is required per module.
35
+ // Create `hostname` rsync module with 100 GiB EBS.
36
+ // SSH public key is required per module.
35
37
  const rsyncBackup = new RsyncBackup(this, "RsyncBackup", {
36
38
  modules: [
37
39
  {
@@ -55,8 +57,9 @@ parameter is ignored.
55
57
  When you create a new backup, simply execute rsync.
56
58
 
57
59
  ```
58
- # rsync -azAXHS -e 'ssh -i id_rsa' --delete --numeric-ids / \
59
- root@ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com::hostname/
60
+ # rsync -azAXHS -e 'ssh -i id_rsa' --delete --numeric-ids \
61
+ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
62
+ / root@ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com::hostname/
60
63
  ```
61
64
 
62
65
  You can get the host SSH private key to login your instance from AWS
@@ -64,7 +67,30 @@ System Manager Parameter Sotre.
64
67
 
65
68
  ```
66
69
  $ aws ssm get-parameter \
67
- --name /ec2/keypair/$(aws ec2 describe-key-pairs
70
+ --name /ec2/keypair/$(aws ec2 describe-key-pairs \
68
71
  --key-names rsync-backup --query "KeyPairs[].KeyPairId" --output text) \
69
72
  --with-decryption --query Parameter.Value --output text
70
73
  ```
74
+
75
+ ### Restore
76
+
77
+ Create a new EC2 instance and attach a volume created from a required
78
+ snapshot, then copy the backup data.
79
+
80
+ Reading backup data from the backup instance is disabled by default.
81
+
82
+ ## Recommended workflow
83
+
84
+ Backup data transfer on Internet is not always reliable. Two-way backup
85
+ is recommended for reliability.
86
+
87
+ - Take a snapshot on local machine. rsnapshot with LVM snapshot is easy
88
+ and convenient. This should be finished in predictable time.
89
+
90
+ - Send a local backup to EC2 instance.
91
+
92
+ First level backups can be used for recovery from operation mistakes.
93
+ You can easily copy the files from local backups.
94
+
95
+ Second level backups are for disaster recovery. Its recovery cost is
96
+ relatively high.
package/lib/index.d.ts CHANGED
@@ -9,9 +9,10 @@ export interface RsyncBackupModule {
9
9
  export interface RsyncBackupProps {
10
10
  readonly modules?: RsyncBackupModule[];
11
11
  readonly instanceId?: string;
12
- readonly securityGroup?: ec2.ISecurityGroup;
13
- readonly vpc?: ec2.IVpc;
14
12
  readonly keyName?: string;
13
+ readonly vpc?: ec2.IVpc;
14
+ readonly securityGroup?: ec2.ISecurityGroup;
15
+ readonly instanceType?: ec2.InstanceType;
15
16
  readonly init?: ec2.CloudFormationInit;
16
17
  readonly logsBucket?: s3.IBucket;
17
18
  }
package/lib/index.js CHANGED
@@ -26,9 +26,10 @@ class RsyncBackup extends constructs_1.Construct {
26
26
  });
27
27
  securityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(22), "Allow SSH Access");
28
28
  }
29
- const ami = new ec2.AmazonLinuxImage({
29
+ const instanceType = props.instanceType ||
30
+ ec2.InstanceType.of(ec2.InstanceClass.T4G, ec2.InstanceSize.NANO);
31
+ const machineImage = new ec2.AmazonLinuxImage({
30
32
  generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
31
- cpuType: ec2.AmazonLinuxCpuType.ARM_64,
32
33
  });
33
34
  const policy = new iam.PolicyDocument({
34
35
  statements: [
@@ -111,15 +112,15 @@ class RsyncBackup extends constructs_1.Construct {
111
112
  }
112
113
  })();
113
114
  const instance = new ec2.Instance(this, props.instanceId || "Instance", {
114
- vpc,
115
- instanceType: ec2.InstanceType.of(ec2.InstanceClass.T4G, ec2.InstanceSize.NANO),
116
- machineImage: ami,
117
- securityGroup: securityGroup,
118
115
  keyName: cdk.Token.asString(keyPair.ref),
119
- role: role,
120
- init: init,
116
+ vpc,
117
+ securityGroup,
118
+ instanceType,
119
+ machineImage,
120
+ role,
121
+ init,
121
122
  });
122
123
  }
123
124
  }
124
125
  exports.RsyncBackup = RsyncBackup;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBQ3ZDLDZCQUE2QjtBQXFCN0IsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFDeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUEwQixFQUFFO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQ1YsS0FBSyxDQUFDLFVBQVU7WUFDaEIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ2hDLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87YUFDekMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxHQUFHLEdBQ1AsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLElBQUksYUFBaUMsQ0FBQztRQUN0QyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDdkIsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckM7YUFBTTtZQUNMLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDM0QsR0FBRztnQkFDSCxnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztZQUVILGFBQWEsQ0FBQyxjQUFjLENBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUNoQixrQkFBa0IsQ0FDbkIsQ0FBQztTQUNIO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDbkMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO1lBQ3BELE9BQU8sRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsTUFBTTtTQUN2QyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDcEMsVUFBVSxFQUFFO2dCQUNWLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztvQkFDdEIsT0FBTyxFQUFFO3dCQUNQLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2dCQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztvQkFDdEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDO29CQUM1QyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2RCxDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM5QyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUM7WUFDeEQsY0FBYyxFQUFFO2dCQUNkLFdBQVcsRUFBRSxNQUFNO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDbEQsT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUNyQixrQkFBa0IsRUFDbEIsa0JBQWtCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FDdEM7WUFDRCxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FDcEIsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDJCQUEyQixDQUFDLEVBQ2pEO2dCQUNFLElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FDRjtZQUNELEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUNwQiw4QkFBOEIsRUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FDN0M7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDakIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO2lCQUMzRDtnQkFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRTFELFVBQVUsQ0FBQyxHQUFHLENBQ1osR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3BCLDRCQUE0QixDQUFDLENBQUMsSUFBSSxPQUFPLEVBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixDQUFDLENBQzlDLENBQ0YsQ0FBQztnQkFDRixVQUFVLENBQUMsR0FBRyxDQUNaLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO29CQUMxQixjQUFjO29CQUNkLElBQUk7b0JBQ0osWUFBWSxDQUFDLENBQUMsSUFBSSxJQUFJO29CQUN0Qiw0QkFBNEIsQ0FBQyxDQUFDLElBQUksT0FBTztpQkFDMUMsQ0FBQyxDQUNILENBQUM7Z0JBQ0YsVUFBVSxDQUFDLEdBQUcsQ0FDWixHQUFHLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FDMUIsd0ZBQXdGLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksV0FBVyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0saUNBQWlDLENBQ3hLLENBQ0YsQ0FBQzthQUNIO1NBQ0Y7YUFBTTtZQUNMLFVBQVUsQ0FBQyxHQUFHLENBQ1osR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3BCLHNDQUFzQyxFQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxDQUM5QyxDQUNGLENBQUM7WUFDRixVQUFVLENBQUMsR0FBRyxDQUNaLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO2dCQUMxQixjQUFjO2dCQUNkLElBQUk7Z0JBQ0osbUJBQW1CO2dCQUNuQixzQ0FBc0M7YUFDdkMsQ0FBQyxDQUNILENBQUM7WUFDRixVQUFVLENBQUMsR0FBRyxDQUNaLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO2dCQUMxQixjQUFjO2dCQUNkLElBQUk7Z0JBQ0osOERBQThEO2dCQUM5RCw0QkFBNEI7YUFDN0IsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2hELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdEQ7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRUwsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLFVBQVUsRUFBRTtZQUN0RSxHQUFHO1lBQ0gsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFDckIsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3RCO1lBQ0QsWUFBWSxFQUFFLEdBQUc7WUFDakIsYUFBYSxFQUFFLGFBQWE7WUFDNUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDeEMsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5LRCxrQ0FtS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSc3luY0JhY2t1cE1vZHVsZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3NoS2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSc3luY0JhY2t1cFByb3BzIHtcbiAgcmVhZG9ubHkgbW9kdWxlcz86IFJzeW5jQmFja3VwTW9kdWxlW107XG5cbiAgcmVhZG9ubHkgaW5zdGFuY2VJZD86IHN0cmluZztcblxuICByZWFkb25seSBzZWN1cml0eUdyb3VwPzogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgcmVhZG9ubHkga2V5TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaW5pdD86IGVjMi5DbG91ZEZvcm1hdGlvbkluaXQ7XG5cbiAgcmVhZG9ubHkgbG9nc0J1Y2tldD86IHMzLklCdWNrZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSc3luY0JhY2t1cCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSc3luY0JhY2t1cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHByb3BzLmxvZ3NCdWNrZXQgfHxcbiAgICAgIG5ldyBzMy5CdWNrZXQodGhpcywgXCJMb2dzQnVja2V0XCIsIHtcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdnBjID1cbiAgICAgIHByb3BzLnZwYyB8fCBjZGsuYXdzX2VjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZQQ1wiLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KTtcblxuICAgIGxldCBzZWN1cml0eUdyb3VwOiBlYzIuSVNlY3VyaXR5R3JvdXA7XG4gICAgaWYgKHByb3BzLnNlY3VyaXR5R3JvdXApIHtcbiAgICAgIHNlY3VyaXR5R3JvdXAgPSBwcm9wcy5zZWN1cml0eUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICAgIHZwYyxcbiAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBlYzIuUGVlci5hbnlJcHY0KCksXG4gICAgICAgIGVjMi5Qb3J0LnRjcCgyMiksXG4gICAgICAgIFwiQWxsb3cgU1NIIEFjY2Vzc1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFtaSA9IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSh7XG4gICAgICBnZW5lcmF0aW9uOiBlYzIuQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWF8yLFxuICAgICAgY3B1VHlwZTogZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5BUk1fNjQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiZWMyOkRlc2NyaWJlSW5zdGFuY2VzXCIsXG4gICAgICAgICAgICBcImVjMjpEZXNjcmliZVNuYXBzaG90c1wiLFxuICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVWb2x1bWVzXCIsXG4gICAgICAgICAgICBcImVjMjpEZXNjcmliZVZvbHVtZVN0YXR1c1wiLFxuICAgICAgICAgICAgXCJlYzI6QXR0YWNoVm9sdW1lXCIsXG4gICAgICAgICAgICBcImVjMjpEZXRhY2hWb2x1bWVcIixcbiAgICAgICAgICAgIFwiZWMyOkNyZWF0ZVZvbHVtZVwiLFxuICAgICAgICAgICAgXCJlYzI6RGVsZXRlVm9sdW1lXCIsXG4gICAgICAgICAgICBcImVjMjpDcmVhdGVTbmFwc2hvdFwiLFxuICAgICAgICAgICAgXCJlYzI6Q3JlYXRlVGFnc1wiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInMzOlB1dE9iamVjdFwiLCBcInMzOlB1dE9iamVjdEFjbFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtidWNrZXQuYnVja2V0QXJuLCBidWNrZXQuYnVja2V0QXJuICsgXCIvKlwiXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkluc3RhbmNlUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgcnN5bmNCYWNrdXA6IHBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IGVjMi5DZm5LZXlQYWlyKHRoaXMsIFwiS2V5UGFpclwiLCB7XG4gICAgICBrZXlOYW1lOiBcInJzeW5jLWJhY2t1cFwiLFxuICAgIH0pO1xuICAgIGtleVBhaXIuYXBwbHlSZW1vdmFsUG9saWN5KGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuXG4gICAgY29uc3QgaW5pdENvbmZpZyA9IG5ldyBlYzIuSW5pdENvbmZpZyhbXG4gICAgICBlYzIuSW5pdEZpbGUuZnJvbVN0cmluZyhcbiAgICAgICAgXCIvZXRjL2Vudmlyb25tZW50XCIsXG4gICAgICAgIGBTM19MT0dTX0JVQ0tFVD0ke2J1Y2tldC5idWNrZXROYW1lfWBcbiAgICAgICksXG4gICAgICBlYzIuSW5pdEZpbGUuZnJvbUFzc2V0KFxuICAgICAgICBcIi91c3IvbG9jYWwvYmluL3JzeW5jLWJhY2t1cFwiLFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2Fzc2V0cy9yc3luYy1iYWNrdXAuc2hcIiksXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlOiBcIjAwMDc1NVwiLFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgXCIvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuaW5jXCIsXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vYXNzZXRzL3JzeW5jZC5pbmNcIilcbiAgICAgICksXG4gICAgXSk7XG5cbiAgICBpZiAocHJvcHMubW9kdWxlcykge1xuICAgICAgZm9yIChjb25zdCBbaSwgbV0gb2YgcHJvcHMubW9kdWxlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgaWYgKG0uc2l6ZSA8IDAgfHwgIU51bWJlci5pc0ludGVnZXIobS5zaXplKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1vZHVsZSBzaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGV2aWNlID0gU3RyaW5nLmZyb21DaGFyQ29kZShcImJcIi5jaGFyQ29kZUF0KDApICsgaSk7XG5cbiAgICAgICAgaW5pdENvbmZpZy5hZGQoXG4gICAgICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgICAgIGAvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuJHttLm5hbWV9LmNvbmZgLFxuICAgICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9hc3NldHMvcnN5bmNkLmNvbmZcIilcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICAgIGVjMi5Jbml0Q29tbWFuZC5hcmd2Q29tbWFuZChbXG4gICAgICAgICAgICBcIi91c3IvYmluL3NlZFwiLFxuICAgICAgICAgICAgXCItaVwiLFxuICAgICAgICAgICAgYHMvQGhvc3RALyR7bS5uYW1lfS9nYCxcbiAgICAgICAgICAgIGAvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuJHttLm5hbWV9LmNvbmZgLFxuICAgICAgICAgIF0pXG4gICAgICAgICk7XG4gICAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICAgIGVjMi5Jbml0Q29tbWFuZC5zaGVsbENvbW1hbmQoXG4gICAgICAgICAgICBgZWNobyAnbm8tcG9ydC1mb3J3YXJkaW5nLG5vLWFnZW50LWZvcndhcmRpbmcsbm8tWDExLWZvcndhcmRpbmcsY29tbWFuZD1cInJzeW5jLWJhY2t1cCAke20ubmFtZX0gJHttLnNpemV9IC9kZXYvc2Qke2RldmljZX1cIiAke20uc3NoS2V5fScgPj4gL3Jvb3QvLnNzaC9hdXRob3JpemVkX2tleXNgXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgICBcIi9zcnYvcnN5bmMtYmFja3VwL3JzeW5jZC5iYWNrdXAuY29uZlwiLFxuICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vYXNzZXRzL3JzeW5jZC5jb25mXCIpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgZWMyLkluaXRDb21tYW5kLmFyZ3ZDb21tYW5kKFtcbiAgICAgICAgICBcIi91c3IvYmluL3NlZFwiLFxuICAgICAgICAgIFwiLWlcIixcbiAgICAgICAgICBgcy9AaG9zdEAvYmFja3VwL2dgLFxuICAgICAgICAgIGAvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuYmFja3VwLmNvbmZgLFxuICAgICAgICBdKVxuICAgICAgKTtcbiAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICBlYzIuSW5pdENvbW1hbmQuYXJndkNvbW1hbmQoW1xuICAgICAgICAgIFwiL3Vzci9iaW4vc2VkXCIsXG4gICAgICAgICAgXCItaVwiLFxuICAgICAgICAgICdzfGNvbW1hbmQ9XCIuKlwiIHxjb21tYW5kPVwicnN5bmMtYmFja3VwIGJhY2t1cCAxMDAgL2Rldi9zZGJcIiB8JyxcbiAgICAgICAgICBcIi9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzXCIsXG4gICAgICAgIF0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXQgPSAoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLmluaXQpIHtcbiAgICAgICAgcHJvcHMuaW5pdC5hZGRDb25maWcoXCJyc3luY0JhY2t1cFwiLCBpbml0Q29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHByb3BzLmluaXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZWMyLkNsb3VkRm9ybWF0aW9uSW5pdC5mcm9tQ29uZmlnKGluaXRDb25maWcpO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBlYzIuSW5zdGFuY2UodGhpcywgcHJvcHMuaW5zdGFuY2VJZCB8fCBcIkluc3RhbmNlXCIsIHtcbiAgICAgIHZwYyxcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuVDRHLFxuICAgICAgICBlYzIuSW5zdGFuY2VTaXplLk5BTk9cbiAgICAgICksXG4gICAgICBtYWNoaW5lSW1hZ2U6IGFtaSxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHNlY3VyaXR5R3JvdXAsXG4gICAgICBrZXlOYW1lOiBjZGsuVG9rZW4uYXNTdHJpbmcoa2V5UGFpci5yZWYpLFxuICAgICAgcm9sZTogcm9sZSxcbiAgICAgIGluaXQ6IGluaXQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBQ3ZDLDZCQUE2QjtBQXNCN0IsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFDeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUEwQixFQUFFO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQ1YsS0FBSyxDQUFDLFVBQVU7WUFDaEIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ2hDLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87YUFDekMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxHQUFHLEdBQ1AsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLElBQUksYUFBaUMsQ0FBQztRQUN0QyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDdkIsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckM7YUFBTTtZQUNMLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDM0QsR0FBRztnQkFDSCxnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztZQUVILGFBQWEsQ0FBQyxjQUFjLENBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUNoQixrQkFBa0IsQ0FDbkIsQ0FB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LENBQUMsSUFBSSxFQUFFO2dCQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ25CO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN0RDtRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFTCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFO1lBQ3RFLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3hDLEdBQUc7WUFDSCxhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixJQUFJO1lBQ0osSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5LRCxrQ0FtS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSc3luY0JhY2t1cE1vZHVsZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3NoS2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSc3luY0JhY2t1cFByb3BzIHtcbiAgcmVhZG9ubHkgbW9kdWxlcz86IFJzeW5jQmFja3VwTW9kdWxlW107XG5cbiAgcmVhZG9ubHkgaW5zdGFuY2VJZD86IHN0cmluZztcblxuICByZWFkb25seSBrZXlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cD86IGVjMi5JU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogZWMyLkluc3RhbmNlVHlwZTtcbiAgcmVhZG9ubHkgaW5pdD86IGVjMi5DbG91ZEZvcm1hdGlvbkluaXQ7XG5cbiAgcmVhZG9ubHkgbG9nc0J1Y2tldD86IHMzLklCdWNrZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSc3luY0JhY2t1cCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSc3luY0JhY2t1cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHByb3BzLmxvZ3NCdWNrZXQgfHxcbiAgICAgIG5ldyBzMy5CdWNrZXQodGhpcywgXCJMb2dzQnVja2V0XCIsIHtcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdnBjID1cbiAgICAgIHByb3BzLnZwYyB8fCBjZGsuYXdzX2VjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZQQ1wiLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KTtcblxuICAgIGxldCBzZWN1cml0eUdyb3VwOiBlYzIuSVNlY3VyaXR5R3JvdXA7XG4gICAgaWYgKHByb3BzLnNlY3VyaXR5R3JvdXApIHtcbiAgICAgIHNlY3VyaXR5R3JvdXAgPSBwcm9wcy5zZWN1cml0eUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICAgIHZwYyxcbiAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBlYzIuUGVlci5hbnlJcHY0KCksXG4gICAgICAgIGVjMi5Qb3J0LnRjcCgyMiksXG4gICAgICAgIFwiQWxsb3cgU1NIIEFjY2Vzc1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9XG4gICAgICBwcm9wcy5pbnN0YW5jZVR5cGUgfHxcbiAgICAgIGVjMi5JbnN0YW5jZVR5cGUub2YoZWMyLkluc3RhbmNlQ2xhc3MuVDRHLCBlYzIuSW5zdGFuY2VTaXplLk5BTk8pO1xuXG4gICAgY29uc3QgbWFjaGluZUltYWdlID0gbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKHtcbiAgICAgIGdlbmVyYXRpb246IGVjMi5BbWF6b25MaW51eEdlbmVyYXRpb24uQU1BWk9OX0xJTlVYXzIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiZWMyOkRlc2NyaWJlSW5zdGFuY2VzXCIsXG4gICAgICAgICAgICBcImVjMjpEZXNjcmliZVNuYXBzaG90c1wiLFxuICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVWb2x1bWVzXCIsXG4gICAgICAgICAgICBcImVjMjpEZXNjcmliZVZvbHVtZVN0YXR1c1wiLFxuICAgICAgICAgICAgXCJlYzI6QXR0YWNoVm9sdW1lXCIsXG4gICAgICAgICAgICBcImVjMjpEZXRhY2hWb2x1bWVcIixcbiAgICAgICAgICAgIFwiZWMyOkNyZWF0ZVZvbHVtZVwiLFxuICAgICAgICAgICAgXCJlYzI6RGVsZXRlVm9sdW1lXCIsXG4gICAgICAgICAgICBcImVjMjpDcmVhdGVTbmFwc2hvdFwiLFxuICAgICAgICAgICAgXCJlYzI6Q3JlYXRlVGFnc1wiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInMzOlB1dE9iamVjdFwiLCBcInMzOlB1dE9iamVjdEFjbFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtidWNrZXQuYnVja2V0QXJuLCBidWNrZXQuYnVja2V0QXJuICsgXCIvKlwiXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkluc3RhbmNlUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgcnN5bmNCYWNrdXA6IHBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IGVjMi5DZm5LZXlQYWlyKHRoaXMsIFwiS2V5UGFpclwiLCB7XG4gICAgICBrZXlOYW1lOiBcInJzeW5jLWJhY2t1cFwiLFxuICAgIH0pO1xuICAgIGtleVBhaXIuYXBwbHlSZW1vdmFsUG9saWN5KGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuXG4gICAgY29uc3QgaW5pdENvbmZpZyA9IG5ldyBlYzIuSW5pdENvbmZpZyhbXG4gICAgICBlYzIuSW5pdEZpbGUuZnJvbVN0cmluZyhcbiAgICAgICAgXCIvZXRjL2Vudmlyb25tZW50XCIsXG4gICAgICAgIGBTM19MT0dTX0JVQ0tFVD0ke2J1Y2tldC5idWNrZXROYW1lfWBcbiAgICAgICksXG4gICAgICBlYzIuSW5pdEZpbGUuZnJvbUFzc2V0KFxuICAgICAgICBcIi91c3IvbG9jYWwvYmluL3JzeW5jLWJhY2t1cFwiLFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2Fzc2V0cy9yc3luYy1iYWNrdXAuc2hcIiksXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlOiBcIjAwMDc1NVwiLFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgXCIvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuaW5jXCIsXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vYXNzZXRzL3JzeW5jZC5pbmNcIilcbiAgICAgICksXG4gICAgXSk7XG5cbiAgICBpZiAocHJvcHMubW9kdWxlcykge1xuICAgICAgZm9yIChjb25zdCBbaSwgbV0gb2YgcHJvcHMubW9kdWxlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgaWYgKG0uc2l6ZSA8IDAgfHwgIU51bWJlci5pc0ludGVnZXIobS5zaXplKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1vZHVsZSBzaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGV2aWNlID0gU3RyaW5nLmZyb21DaGFyQ29kZShcImJcIi5jaGFyQ29kZUF0KDApICsgaSk7XG5cbiAgICAgICAgaW5pdENvbmZpZy5hZGQoXG4gICAgICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgICAgIGAvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuJHttLm5hbWV9LmNvbmZgLFxuICAgICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9hc3NldHMvcnN5bmNkLmNvbmZcIilcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICAgIGVjMi5Jbml0Q29tbWFuZC5hcmd2Q29tbWFuZChbXG4gICAgICAgICAgICBcIi91c3IvYmluL3NlZFwiLFxuICAgICAgICAgICAgXCItaVwiLFxuICAgICAgICAgICAgYHMvQGhvc3RALyR7bS5uYW1lfS9nYCxcbiAgICAgICAgICAgIGAvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuJHttLm5hbWV9LmNvbmZgLFxuICAgICAgICAgIF0pXG4gICAgICAgICk7XG4gICAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICAgIGVjMi5Jbml0Q29tbWFuZC5zaGVsbENvbW1hbmQoXG4gICAgICAgICAgICBgZWNobyAnbm8tcG9ydC1mb3J3YXJkaW5nLG5vLWFnZW50LWZvcndhcmRpbmcsbm8tWDExLWZvcndhcmRpbmcsY29tbWFuZD1cInJzeW5jLWJhY2t1cCAke20ubmFtZX0gJHttLnNpemV9IC9kZXYvc2Qke2RldmljZX1cIiAke20uc3NoS2V5fScgPj4gL3Jvb3QvLnNzaC9hdXRob3JpemVkX2tleXNgXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgICBcIi9zcnYvcnN5bmMtYmFja3VwL3JzeW5jZC5iYWNrdXAuY29uZlwiLFxuICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vYXNzZXRzL3JzeW5jZC5jb25mXCIpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgZWMyLkluaXRDb21tYW5kLmFyZ3ZDb21tYW5kKFtcbiAgICAgICAgICBcIi91c3IvYmluL3NlZFwiLFxuICAgICAgICAgIFwiLWlcIixcbiAgICAgICAgICBgcy9AaG9zdEAvYmFja3VwL2dgLFxuICAgICAgICAgIGAvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuYmFja3VwLmNvbmZgLFxuICAgICAgICBdKVxuICAgICAgKTtcbiAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICBlYzIuSW5pdENvbW1hbmQuYXJndkNvbW1hbmQoW1xuICAgICAgICAgIFwiL3Vzci9iaW4vc2VkXCIsXG4gICAgICAgICAgXCItaVwiLFxuICAgICAgICAgICdzfGNvbW1hbmQ9XCIuKlwiIHxjb21tYW5kPVwicnN5bmMtYmFja3VwIGJhY2t1cCAxMDAgL2Rldi9zZGJcIiB8JyxcbiAgICAgICAgICBcIi9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzXCIsXG4gICAgICAgIF0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXQgPSAoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLmluaXQpIHtcbiAgICAgICAgcHJvcHMuaW5pdC5hZGRDb25maWcoXCJyc3luY0JhY2t1cFwiLCBpbml0Q29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHByb3BzLmluaXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZWMyLkNsb3VkRm9ybWF0aW9uSW5pdC5mcm9tQ29uZmlnKGluaXRDb25maWcpO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBlYzIuSW5zdGFuY2UodGhpcywgcHJvcHMuaW5zdGFuY2VJZCB8fCBcIkluc3RhbmNlXCIsIHtcbiAgICAgIGtleU5hbWU6IGNkay5Ub2tlbi5hc1N0cmluZyhrZXlQYWlyLnJlZiksXG4gICAgICB2cGMsXG4gICAgICBzZWN1cml0eUdyb3VwLFxuICAgICAgaW5zdGFuY2VUeXBlLFxuICAgICAgbWFjaGluZUltYWdlLFxuICAgICAgcm9sZSxcbiAgICAgIGluaXQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@anyakichi/cdk-rsync-backup",
3
3
  "description": "AWS CDK L3 construct for cloud backup system with rsync",
4
- "version": "0.2.0",
4
+ "version": "0.2.2",
5
5
  "author": "INAJIMA Daisuke <inajima@gmail.com>",
6
6
  "scripts": {
7
7
  "build": "tsc",