aws-sdk-rekognition 1.72.0 → 1.73.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59e3c384ad0740cd57cc26b976cfc30f0b0ed8651a37b8100489e8ce2faedabc
4
- data.tar.gz: 240fc9c7d44843b9c4e2829931f467a6b3a1328352ca6b65453a98cec036094b
3
+ metadata.gz: 92251b0f044672d1160f7436ab44d156c043c2a438af9b8b150887d9a013fa7d
4
+ data.tar.gz: f105900aa5b99126639d60d0dd2b08959f5133f2dd1180037143f63a4b9ca63b
5
5
  SHA512:
6
- metadata.gz: 417c29e0ef8da4ce0cbe2745a25cf49591719cbbd07aa0f8c2f7bf6eeaed28c06edf1e865af40bf9210525bb7f00c8be63052e87c0aad42e42ede10f63e498f4
7
- data.tar.gz: 78802af11d77ace741a2cce11f5c4673d9a00ea92c5844593f4f9af04cc6d1e61e093a6503a4088ba425aa74b9ba72545fb407ec34a2734a807021a3d2559190
6
+ metadata.gz: d2800231e49700ed3309794aee9f209641b25ef95a30d09edf89edd203c364298b7315ae6a1f7736f1264fb4589ad8d96dce5ada003fc2c899def6edcd3d6673
7
+ data.tar.gz: 7f8267247b5d8cdbc34730ce8d87f1f5c327e791fffe64c7fad5ec0cb43c38bfdb5a4f151ac14c9eb219f76137cdb0f74ebf5726eaf6265f06cddc2d7c993274
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.73.0 (2022-12-12)
5
+ ------------------
6
+
7
+ * Feature - Adds support for "aliases" and "categories", inclusion and exclusion filters for labels and label categories, and aggregating labels by video segment timestamps for Stored Video Label Detection APIs.
8
+
4
9
  1.72.0 (2022-11-11)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.72.0
1
+ 1.73.0
@@ -2226,7 +2226,7 @@ module Aws::Rekognition
2226
2226
  # * Aliases - Possible Aliases for the label.
2227
2227
  #
2228
2228
  # * Categories - The label categories that the detected label belongs
2229
- # to. A given label can belong to more than one category.
2229
+ # to.
2230
2230
  #
2231
2231
  # * BoundingBox — Bounding boxes are described for all instances of
2232
2232
  # detected common object labels, returned in an array of Instance
@@ -2245,11 +2245,11 @@ module Aws::Rekognition
2245
2245
  #
2246
2246
  # * Dominant Color - An array of the dominant colors in the image.
2247
2247
  #
2248
- # * Foreground - Information about the Sharpness and Brightness of the
2249
- # input image’s foreground.
2248
+ # * Foreground - Information about the sharpness, brightness, and
2249
+ # dominant colors of the input image’s foreground.
2250
2250
  #
2251
- # * Background - Information about the Sharpness and Brightness of the
2252
- # input image’s background.
2251
+ # * Background - Information about the sharpness, brightness, and
2252
+ # dominant colors of the input image’s background.
2253
2253
  #
2254
2254
  # The list of returned labels will include at least one label for every
2255
2255
  # detected object, along with information about that label. In the
@@ -3403,25 +3403,69 @@ module Aws::Rekognition
3403
3403
  # StartLabelDetection which returns a job identifier (`JobId`). When the
3404
3404
  # label detection operation finishes, Amazon Rekognition publishes a
3405
3405
  # completion status to the Amazon Simple Notification Service topic
3406
- # registered in the initial call to `StartlabelDetection`. To get the
3407
- # results of the label detection operation, first check that the status
3408
- # value published to the Amazon SNS topic is `SUCCEEDED`. If so, call
3409
- # GetLabelDetection and pass the job identifier (`JobId`) from the
3410
- # initial call to `StartLabelDetection`.
3406
+ # registered in the initial call to `StartlabelDetection`.
3407
+ #
3408
+ # To get the results of the label detection operation, first check that
3409
+ # the status value published to the Amazon SNS topic is `SUCCEEDED`. If
3410
+ # so, call GetLabelDetection and pass the job identifier (`JobId`) from
3411
+ # the initial call to `StartLabelDetection`.
3411
3412
  #
3412
3413
  # `GetLabelDetection` returns an array of detected labels (`Labels`)
3413
3414
  # sorted by the time the labels were detected. You can also sort by the
3414
- # label name by specifying `NAME` for the `SortBy` input parameter.
3415
+ # label name by specifying `NAME` for the `SortBy` input parameter. If
3416
+ # there is no `NAME` specified, the default sort is by timestamp.
3415
3417
  #
3416
- # The labels returned include the label name, the percentage confidence
3417
- # in the accuracy of the detected label, and the time the label was
3418
- # detected in the video.
3418
+ # You can select how results are aggregated by using the `AggregateBy`
3419
+ # input parameter. The default aggregation method is `TIMESTAMPS`. You
3420
+ # can also aggregate by `SEGMENTS`, which aggregates all instances of
3421
+ # labels detected in a given segment.
3419
3422
  #
3420
- # The returned labels also include bounding box information for common
3421
- # objects, a hierarchical taxonomy of detected labels, and the version
3422
- # of the label model used for detection.
3423
+ # The returned Labels array may include the following attributes:
3423
3424
  #
3424
- # Use MaxResults parameter to limit the number of labels returned. If
3425
+ # * Name - The name of the detected label.
3426
+ #
3427
+ # * Confidence - The level of confidence in the label assigned to a
3428
+ # detected object.
3429
+ #
3430
+ # * Parents - The ancestor labels for a detected label.
3431
+ # GetLabelDetection returns a hierarchical taxonomy of detected
3432
+ # labels. For example, a detected car might be assigned the label car.
3433
+ # The label car has two parent labels: Vehicle (its parent) and
3434
+ # Transportation (its grandparent). The response includes the all
3435
+ # ancestors for a label, where every ancestor is a unique label. In
3436
+ # the previous example, Car, Vehicle, and Transportation are returned
3437
+ # as unique labels in the response.
3438
+ #
3439
+ # * Aliases - Possible Aliases for the label.
3440
+ #
3441
+ # * Categories - The label categories that the detected label belongs
3442
+ # to.
3443
+ #
3444
+ # * BoundingBox — Bounding boxes are described for all instances of
3445
+ # detected common object labels, returned in an array of Instance
3446
+ # objects. An Instance object contains a BoundingBox object,
3447
+ # describing the location of the label on the input image. It also
3448
+ # includes the confidence for the accuracy of the detected bounding
3449
+ # box.
3450
+ #
3451
+ # * Timestamp - Time, in milliseconds from the start of the video, that
3452
+ # the label was detected. For aggregation by `SEGMENTS`, the
3453
+ # `StartTimestampMillis`, `EndTimestampMillis`, and `DurationMillis`
3454
+ # structures are what define a segment. Although the “Timestamp”
3455
+ # structure is still returned with each label, its value is set to be
3456
+ # the same as `StartTimestampMillis`.
3457
+ #
3458
+ # Timestamp and Bounding box information are returned for detected
3459
+ # Instances, only if aggregation is done by `TIMESTAMPS`. If aggregating
3460
+ # by `SEGMENTS`, information about detected instances isn’t returned.
3461
+ #
3462
+ # The version of the label model used for the detection is also
3463
+ # returned.
3464
+ #
3465
+ # **Note `DominantColors` isn't returned for `Instances`, although it
3466
+ # is shown as part of the response in the sample seen below.**
3467
+ #
3468
+ # Use `MaxResults` parameter to limit the number of labels returned. If
3425
3469
  # there are more results than specified in `MaxResults`, the value of
3426
3470
  # `NextToken` in the operation response contains a pagination token for
3427
3471
  # getting the next set of results. To get the next page of results, call
@@ -3453,6 +3497,10 @@ module Aws::Rekognition
3453
3497
  # group, the array element are sorted by detection confidence. The
3454
3498
  # default sort is by `TIMESTAMP`.
3455
3499
  #
3500
+ # @option params [String] :aggregate_by
3501
+ # Defines how to aggregate the returned results. Results can be
3502
+ # aggregated by timestamps or segments.
3503
+ #
3456
3504
  # @return [Types::GetLabelDetectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3457
3505
  #
3458
3506
  # * {Types::GetLabelDetectionResponse#job_status #job_status} => String
@@ -3471,6 +3519,7 @@ module Aws::Rekognition
3471
3519
  # max_results: 1,
3472
3520
  # next_token: "PaginationToken",
3473
3521
  # sort_by: "NAME", # accepts NAME, TIMESTAMP
3522
+ # aggregate_by: "TIMESTAMPS", # accepts TIMESTAMPS, SEGMENTS
3474
3523
  # })
3475
3524
  #
3476
3525
  # @example Response structure
@@ -3509,6 +3558,9 @@ module Aws::Rekognition
3509
3558
  # resp.labels[0].label.aliases[0].name #=> String
3510
3559
  # resp.labels[0].label.categories #=> Array
3511
3560
  # resp.labels[0].label.categories[0].name #=> String
3561
+ # resp.labels[0].start_timestamp_millis #=> Integer
3562
+ # resp.labels[0].end_timestamp_millis #=> Integer
3563
+ # resp.labels[0].duration_millis #=> Integer
3512
3564
  # resp.label_model_version #=> String
3513
3565
  #
3514
3566
  # @overload get_label_detection(params = {})
@@ -5744,6 +5796,22 @@ module Aws::Rekognition
5744
5796
  # so, call GetLabelDetection and pass the job identifier (`JobId`) from
5745
5797
  # the initial call to `StartLabelDetection`.
5746
5798
  #
5799
+ # *Optional Parameters*
5800
+ #
5801
+ # `StartLabelDetection` has the `GENERAL_LABELS` Feature applied by
5802
+ # default. This feature allows you to provide filtering criteria to the
5803
+ # `Settings` parameter. You can filter with sets of individual labels or
5804
+ # with label categories. You can specify inclusive filters, exclusive
5805
+ # filters, or a combination of inclusive and exclusive filters. For more
5806
+ # information on filtering, see [Detecting labels in a video][1].
5807
+ #
5808
+ # You can specify `MinConfidence` to control the confidence threshold
5809
+ # for the labels returned. The default is 50.
5810
+ #
5811
+ #
5812
+ #
5813
+ # [1]: https://docs.aws.amazon.com/rekognition/latest/dg/labels-detecting-labels-video.html
5814
+ #
5747
5815
  # @option params [required, Types::Video] :video
5748
5816
  # The video in which you want to detect labels. The video must be stored
5749
5817
  # in an Amazon S3 bucket.
@@ -5763,7 +5831,8 @@ module Aws::Rekognition
5763
5831
  # lower than this specified value.
5764
5832
  #
5765
5833
  # If you don't specify `MinConfidence`, the operation returns labels
5766
- # with confidence values greater than or equal to 50 percent.
5834
+ # and bounding boxes (if detected) with confidence values greater than
5835
+ # or equal to 50 percent.
5767
5836
  #
5768
5837
  # @option params [Types::NotificationChannel] :notification_channel
5769
5838
  # The Amazon SNS topic ARN you want Amazon Rekognition Video to publish
@@ -5777,6 +5846,15 @@ module Aws::Rekognition
5777
5846
  # Service topic. For example, you can use `JobTag` to group related jobs
5778
5847
  # and identify them in the completion notification.
5779
5848
  #
5849
+ # @option params [Array<String>] :features
5850
+ # The features to return after video analysis. You can specify that
5851
+ # GENERAL\_LABELS are returned.
5852
+ #
5853
+ # @option params [Types::LabelDetectionSettings] :settings
5854
+ # The settings for a StartLabelDetection request.Contains the specified
5855
+ # parameters for the label detection request of an asynchronous label
5856
+ # analysis operation. Settings can include filters for GENERAL\_LABELS.
5857
+ #
5780
5858
  # @return [Types::StartLabelDetectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5781
5859
  #
5782
5860
  # * {Types::StartLabelDetectionResponse#job_id #job_id} => String
@@ -5798,6 +5876,15 @@ module Aws::Rekognition
5798
5876
  # role_arn: "RoleArn", # required
5799
5877
  # },
5800
5878
  # job_tag: "JobTag",
5879
+ # features: ["GENERAL_LABELS"], # accepts GENERAL_LABELS
5880
+ # settings: {
5881
+ # general_labels: {
5882
+ # label_inclusion_filters: ["GeneralLabelsFilterValue"],
5883
+ # label_exclusion_filters: ["GeneralLabelsFilterValue"],
5884
+ # label_category_inclusion_filters: ["GeneralLabelsFilterValue"],
5885
+ # label_category_exclusion_filters: ["GeneralLabelsFilterValue"],
5886
+ # },
5887
+ # },
5801
5888
  # })
5802
5889
  #
5803
5890
  # @example Response structure
@@ -6469,7 +6556,7 @@ module Aws::Rekognition
6469
6556
  params: params,
6470
6557
  config: config)
6471
6558
  context[:gem_name] = 'aws-sdk-rekognition'
6472
- context[:gem_version] = '1.72.0'
6559
+ context[:gem_version] = '1.73.0'
6473
6560
  Seahorse::Client::Request.new(handlers, context)
6474
6561
  end
6475
6562
 
@@ -242,6 +242,10 @@ module Aws::Rekognition
242
242
  LabelCategories = Shapes::ListShape.new(name: 'LabelCategories')
243
243
  LabelCategory = Shapes::StructureShape.new(name: 'LabelCategory')
244
244
  LabelDetection = Shapes::StructureShape.new(name: 'LabelDetection')
245
+ LabelDetectionAggregateBy = Shapes::StringShape.new(name: 'LabelDetectionAggregateBy')
246
+ LabelDetectionFeatureList = Shapes::ListShape.new(name: 'LabelDetectionFeatureList')
247
+ LabelDetectionFeatureName = Shapes::StringShape.new(name: 'LabelDetectionFeatureName')
248
+ LabelDetectionSettings = Shapes::StructureShape.new(name: 'LabelDetectionSettings')
245
249
  LabelDetectionSortBy = Shapes::StringShape.new(name: 'LabelDetectionSortBy')
246
250
  LabelDetections = Shapes::ListShape.new(name: 'LabelDetections')
247
251
  Labels = Shapes::ListShape.new(name: 'Labels')
@@ -1056,6 +1060,7 @@ module Aws::Rekognition
1056
1060
  GetLabelDetectionRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
1057
1061
  GetLabelDetectionRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
1058
1062
  GetLabelDetectionRequest.add_member(:sort_by, Shapes::ShapeRef.new(shape: LabelDetectionSortBy, location_name: "SortBy"))
1063
+ GetLabelDetectionRequest.add_member(:aggregate_by, Shapes::ShapeRef.new(shape: LabelDetectionAggregateBy, location_name: "AggregateBy"))
1059
1064
  GetLabelDetectionRequest.struct_class = Types::GetLabelDetectionRequest
1060
1065
 
1061
1066
  GetLabelDetectionResponse.add_member(:job_status, Shapes::ShapeRef.new(shape: VideoJobStatus, location_name: "JobStatus"))
@@ -1207,8 +1212,16 @@ module Aws::Rekognition
1207
1212
 
1208
1213
  LabelDetection.add_member(:timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "Timestamp"))
1209
1214
  LabelDetection.add_member(:label, Shapes::ShapeRef.new(shape: Label, location_name: "Label"))
1215
+ LabelDetection.add_member(:start_timestamp_millis, Shapes::ShapeRef.new(shape: ULong, location_name: "StartTimestampMillis"))
1216
+ LabelDetection.add_member(:end_timestamp_millis, Shapes::ShapeRef.new(shape: ULong, location_name: "EndTimestampMillis"))
1217
+ LabelDetection.add_member(:duration_millis, Shapes::ShapeRef.new(shape: ULong, location_name: "DurationMillis"))
1210
1218
  LabelDetection.struct_class = Types::LabelDetection
1211
1219
 
1220
+ LabelDetectionFeatureList.member = Shapes::ShapeRef.new(shape: LabelDetectionFeatureName)
1221
+
1222
+ LabelDetectionSettings.add_member(:general_labels, Shapes::ShapeRef.new(shape: GeneralLabelsSettings, location_name: "GeneralLabels"))
1223
+ LabelDetectionSettings.struct_class = Types::LabelDetectionSettings
1224
+
1212
1225
  LabelDetections.member = Shapes::ShapeRef.new(shape: LabelDetection)
1213
1226
 
1214
1227
  Labels.member = Shapes::ShapeRef.new(shape: Label)
@@ -1557,6 +1570,8 @@ module Aws::Rekognition
1557
1570
  StartLabelDetectionRequest.add_member(:min_confidence, Shapes::ShapeRef.new(shape: Percent, location_name: "MinConfidence"))
1558
1571
  StartLabelDetectionRequest.add_member(:notification_channel, Shapes::ShapeRef.new(shape: NotificationChannel, location_name: "NotificationChannel"))
1559
1572
  StartLabelDetectionRequest.add_member(:job_tag, Shapes::ShapeRef.new(shape: JobTag, location_name: "JobTag"))
1573
+ StartLabelDetectionRequest.add_member(:features, Shapes::ShapeRef.new(shape: LabelDetectionFeatureList, location_name: "Features"))
1574
+ StartLabelDetectionRequest.add_member(:settings, Shapes::ShapeRef.new(shape: LabelDetectionSettings, location_name: "Settings"))
1560
1575
  StartLabelDetectionRequest.struct_class = Types::StartLabelDetectionRequest
1561
1576
 
1562
1577
  StartLabelDetectionResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
@@ -50,6 +50,9 @@ module Aws::Rekognition
50
50
 
51
51
  def initialize(options = {})
52
52
  self[:region] = options[:region]
53
+ if self[:region].nil?
54
+ raise ArgumentError, "Missing required EndpointParameter: :region"
55
+ end
53
56
  self[:use_dual_stack] = options[:use_dual_stack]
54
57
  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
58
  if self[:use_dual_stack].nil?
@@ -29,110 +29,109 @@ module Aws::Rekognition
29
29
  # @api private
30
30
  RULES = <<-JSON
31
31
  eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
- bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
- dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
- cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
- dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
- ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
- ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
- ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
- aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
- OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
- UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
- dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
- UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
- dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
- ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
- IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
- aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
- bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
- ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
- Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
- cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
- InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
- aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
- cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
- InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
- W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
- UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
- SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
- eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
- InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
- LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
- ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
- b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
- fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
- RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
- ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
- ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
- ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
- dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
- dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
- Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
- In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOnRydWUsImRvY3VtZW50
33
+ YXRpb24iOiJUaGUgQVdTIHJlZ2lvbiB1c2VkIHRvIGRpc3BhdGNoIHRoZSBy
34
+ ZXF1ZXN0LiIsInR5cGUiOiJTdHJpbmcifSwiVXNlRHVhbFN0YWNrIjp7ImJ1
35
+ aWx0SW4iOiJBV1M6OlVzZUR1YWxTdGFjayIsInJlcXVpcmVkIjp0cnVlLCJk
36
+ ZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRhdGlvbiI6IldoZW4gdHJ1ZSwgdXNl
37
+ IHRoZSBkdWFsLXN0YWNrIGVuZHBvaW50LiBJZiB0aGUgY29uZmlndXJlZCBl
38
+ bmRwb2ludCBkb2VzIG5vdCBzdXBwb3J0IGR1YWwtc3RhY2ssIGRpc3BhdGNo
39
+ aW5nIHRoZSByZXF1ZXN0IE1BWSByZXR1cm4gYW4gZXJyb3IuIiwidHlwZSI6
40
+ IkJvb2xlYW4ifSwiVXNlRklQUyI6eyJidWlsdEluIjoiQVdTOjpVc2VGSVBT
41
+ IiwicmVxdWlyZWQiOnRydWUsImRlZmF1bHQiOmZhbHNlLCJkb2N1bWVudGF0
42
+ aW9uIjoiV2hlbiB0cnVlLCBzZW5kIHRoaXMgcmVxdWVzdCB0byB0aGUgRklQ
43
+ Uy1jb21wbGlhbnQgcmVnaW9uYWwgZW5kcG9pbnQuIElmIHRoZSBjb25maWd1
44
+ cmVkIGVuZHBvaW50IGRvZXMgbm90IGhhdmUgYSBGSVBTIGNvbXBsaWFudCBl
45
+ bmRwb2ludCwgZGlzcGF0Y2hpbmcgdGhlIHJlcXVlc3Qgd2lsbCByZXR1cm4g
46
+ YW4gZXJyb3IuIiwidHlwZSI6IkJvb2xlYW4ifSwiRW5kcG9pbnQiOnsiYnVp
47
+ bHRJbiI6IlNESzo6RW5kcG9pbnQiLCJyZXF1aXJlZCI6ZmFsc2UsImRvY3Vt
48
+ ZW50YXRpb24iOiJPdmVycmlkZSB0aGUgZW5kcG9pbnQgdXNlZCB0byBzZW5k
49
+ IHRoaXMgcmVxdWVzdCIsInR5cGUiOiJTdHJpbmcifX0sInJ1bGVzIjpbeyJj
50
+ b25kaXRpb25zIjpbeyJmbiI6ImF3cy5wYXJ0aXRpb24iLCJhcmd2IjpbeyJy
51
+ ZWYiOiJSZWdpb24ifV0sImFzc2lnbiI6IlBhcnRpdGlvblJlc3VsdCJ9XSwi
52
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJp
53
+ c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfV0sInR5cGUiOiJ0
54
+ cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
55
+ dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1dLCJlcnJv
56
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRklQUyBhbmQgY3VzdG9tIGVu
57
+ ZHBvaW50IGFyZSBub3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJj
58
+ b25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
59
+ aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoi
60
+ VXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZp
61
+ Z3VyYXRpb246IER1YWxzdGFjayBhbmQgY3VzdG9tIGVuZHBvaW50IGFyZSBu
62
+ b3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJjb25kaXRpb25zIjpb
63
+ XSwiZW5kcG9pbnQiOnsidXJsIjp7InJlZiI6IkVuZHBvaW50In0sInByb3Bl
64
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
65
+ fSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3Yi
66
+ Olt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX0seyJmbiI6ImJvb2xlYW5FcXVh
67
+ bHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0
68
+ eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
69
+ b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
70
+ Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJUFMi
71
+ XX1dfSx7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
72
+ OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
73
+ InN1cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVz
74
+ IjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6
75
+ Ly9yZWtvZ25pdGlvbi1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQj
76
+ ZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJz
77
+ Ijp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwi
78
+ ZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sgYXJlIGVuYWJsZWQsIGJ1dCB0
79
+ aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9uZSBvciBib3RoIiwi
80
+ dHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVh
81
+ bkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1dLCJ0
82
+ eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
83
+ b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
84
+ Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJUFMi
85
+ XX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltd
86
+ LCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6
87
+ InN0cmluZ0VxdWFscyIsImFyZ3YiOlt7InJlZiI6IlJlZ2lvbiJ9LCJyZWtv
88
+ Z25pdGlvbi5jYS1jZW50cmFsLTEiXX1dLCJlbmRwb2ludCI6eyJ1cmwiOiJo
89
+ dHRwczovL3Jla29nbml0aW9uLWZpcHMuY2EtY2VudHJhbC0xLmFtYXpvbmF3
90
+ cy5jb20iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoi
91
+ ZW5kcG9pbnQifSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxz
92
+ IiwiYXJndiI6W3sicmVmIjoiUmVnaW9uIn0sInJla29nbml0aW9uLnVzLWVh
93
+ c3QtMSJdfV0sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRp
94
+ b24tZmlwcy51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMi
95
+ Ont9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0
96
+ aW9ucyI6W3siZm4iOiJzdHJpbmdFcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJS
97
+ ZWdpb24ifSwicmVrb2duaXRpb24udXMtZWFzdC0yIl19XSwiZW5kcG9pbnQi
98
+ OnsidXJsIjoiaHR0cHM6Ly9yZWtvZ25pdGlvbi1maXBzLnVzLWVhc3QtMi5h
99
+ bWF6b25hd3MuY29tIiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwi
100
+ dHlwZSI6ImVuZHBvaW50In0seyJjb25kaXRpb25zIjpbeyJmbiI6InN0cmlu
101
+ Z0VxdWFscyIsImFyZ3YiOlt7InJlZiI6IlJlZ2lvbiJ9LCJyZWtvZ25pdGlv
102
+ bi51cy13ZXN0LTEiXX1dLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3Jl
103
+ a29nbml0aW9uLWZpcHMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJwcm9w
104
+ ZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifSx7
105
+ ImNvbmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6W3si
106
+ cmVmIjoiUmVnaW9uIn0sInJla29nbml0aW9uLnVzLXdlc3QtMiJdfV0sImVu
107
+ ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlwcy51cy13
108
+ ZXN0LTIuYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJz
109
+ Ijp7fX0sInR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3siZm4i
110
+ OiJzdHJpbmdFcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwicmVr
111
+ b2duaXRpb24udXMtZ292LXdlc3QtMSJdfV0sImVuZHBvaW50Ijp7InVybCI6
112
+ Imh0dHBzOi8vcmVrb2duaXRpb24tZmlwcy51cy1nb3Ytd2VzdC0xLmFtYXpv
113
+ bmF3cy5jb20iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBl
114
+ IjoiZW5kcG9pbnQifSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1
115
+ cmwiOiJodHRwczovL3Jla29nbml0aW9uLWZpcHMue1JlZ2lvbn0ue1BhcnRp
116
+ dGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRl
117
+ cnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6
118
+ W10sImVycm9yIjoiRklQUyBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlv
119
+ biBkb2VzIG5vdCBzdXBwb3J0IEZJUFMiLCJ0eXBlIjoiZXJyb3IifV19LHsi
120
+ Y29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3si
121
+ cmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJy
122
+ dWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwi
73
123
  YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
124
  YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
125
  cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
- dCI6eyJ1cmwiOiJodHRwczovL3Jla29nbml0aW9uLWZpcHMue1JlZ2lvbn0u
77
- e1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVy
78
- dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7
79
- ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBh
80
- cmUgZW5hYmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBv
81
- cnQgb25lIG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9u
82
- cyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNl
83
- RklQUyJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
84
- dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
85
- Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
86
- In0sInN1cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6
87
- W3siY29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNv
88
- bmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6W3sicmVm
89
- IjoiUmVnaW9uIn0sInJla29nbml0aW9uLmNhLWNlbnRyYWwtMSJdfV0sImVu
90
- ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlwcy5jYS1j
91
- ZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFk
92
- ZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3si
93
- Zm4iOiJzdHJpbmdFcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwi
94
- cmVrb2duaXRpb24udXMtZWFzdC0xIl19XSwiZW5kcG9pbnQiOnsidXJsIjoi
95
- aHR0cHM6Ly9yZWtvZ25pdGlvbi1maXBzLnVzLWVhc3QtMS5hbWF6b25hd3Mu
96
- Y29tIiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVu
97
- ZHBvaW50In0seyJjb25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIs
98
- ImFyZ3YiOlt7InJlZiI6IlJlZ2lvbiJ9LCJyZWtvZ25pdGlvbi51cy1lYXN0
99
- LTIiXX1dLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3Jla29nbml0aW9u
100
- LWZpcHMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJwcm9wZXJ0aWVzIjp7
101
- fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifSx7ImNvbmRpdGlv
102
- bnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiUmVn
103
- aW9uIn0sInJla29nbml0aW9uLnVzLXdlc3QtMSJdfV0sImVuZHBvaW50Ijp7
104
- InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlwcy51cy13ZXN0LTEuYW1h
105
- em9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5
106
- cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3siZm4iOiJzdHJpbmdF
107
- cXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwicmVrb2duaXRpb24u
108
- dXMtd2VzdC0yIl19XSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9yZWtv
109
- Z25pdGlvbi1maXBzLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwicHJvcGVy
110
- dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In0seyJj
111
- b25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIsImFyZ3YiOlt7InJl
112
- ZiI6IlJlZ2lvbiJ9LCJyZWtvZ25pdGlvbi51cy1nb3Ytd2VzdC0xIl19XSwi
113
- ZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9yZWtvZ25pdGlvbi1maXBzLnVz
114
- LWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJo
115
- ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6
116
- W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlw
117
- cy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9w
118
- ZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19
119
- XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGlzIGVuYWJsZWQg
120
- YnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRklQUyIsInR5
121
- cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5F
122
- cXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1d
123
- LCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6
124
- ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIs
125
- ImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0R1
126
- YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
127
- aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRp
128
- b24ue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZm
129
- aXh9IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVu
130
- ZHBvaW50In1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkR1YWxTdGFj
131
- ayBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
132
- b3J0IER1YWxTdGFjayIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
133
- IjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9yZWtvZ25pdGlvbi57
134
- UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0
135
- aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19XX0=
126
+ dCI6eyJ1cmwiOiJodHRwczovL3Jla29nbml0aW9uLntSZWdpb259LntQYXJ0
127
+ aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMi
128
+ Ont9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25k
129
+ aXRpb25zIjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQg
130
+ dGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0
131
+ eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7
132
+ InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24ue1JlZ2lvbn0ue1BhcnRpdGlv
133
+ blJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMi
134
+ Ont9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
136
135
 
137
136
  JSON
138
137
  end