<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>136644</bug_id>
          
          <creation_ts>2014-09-08 14:26:13 -0700</creation_ts>
          <short_desc>Separate the Apple media controls module from other ports</short_desc>
          <delta_ts>2014-09-09 15:19:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033949</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 14:26:13 -0700</bug_when>
    <thetext>Currently, mediaControlsApple is acting as the base class for all ports that use JS-based controls. It&apos;s nice that we&apos;re trying to consolidate all behaviour into one place, but that one place should not be an Apple-specific controller.

For now, make a Base.js that is identical to the Apple.js, and have the EFL and GTK ports use that. Over time we&apos;ll probably change Apple.js to use the same base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033951</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 14:29:18 -0700</bug_when>
    <thetext>Lots of discussion in 131951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033953</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 14:29:32 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=131951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033957</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 14:36:31 -0700</bug_when>
    <thetext>rdar://problem/18270969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033959</commentid>
    <comment_count>4</comment_count>
      <attachid>237812</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 14:38:02 -0700</bug_when>
    <thetext>Created attachment 237812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033962</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 14:51:12 -0700</bug_when>
    <thetext>Letting EWS check the ports I can&apos;t build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033968</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 15:32:51 -0700</bug_when>
    <thetext>EFL EWS seems to be stuck. Committing for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033969</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-08 15:33:50 -0700</bug_when>
    <thetext>Committed r173401: &lt;http://trac.webkit.org/changeset/173401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033970</commentid>
    <comment_count>8</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2014-09-08 15:36:54 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Currently, mediaControlsApple is acting as the base class for all ports that use JS-based controls. It&apos;s nice that we&apos;re trying to consolidate all behaviour into one place, but that one place should not be an Apple-specific controller.
&gt; 
&gt; For now, make a Base.js that is identical to the Apple.js, and have the EFL and GTK ports use that. Over time we&apos;ll probably change Apple.js to use the same base.

For me it would be more credible if you had based the Apple controls already on Base, otherwise the discussion on bug 131951 is completely disregarded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034185</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-09-09 15:19:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
 
&gt; For me it would be more credible if you had based the Apple controls already on Base, otherwise the discussion on bug 131951 is completely disregarded.

I understand your point, although this stuff is really supposed to be platform specific. The part that is really the base of the implementation is the HTMLMediaElement and the MediaControlsHost.

For example, we might want to replicate the way scrubbing works on iOS, where vertical position implies a scrubbing speed. That&apos;s not a stylistic thing - it&apos;s behaviour that we&apos;d have to implement. It&apos;s quite hard to do that for platforms you don&apos;t have access to.

We&apos;re already sharing base functionality. All this change did was move it up the stack a bit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237812</attachid>
            <date>2014-09-08 14:38:02 -0700</date>
            <delta_ts>2014-09-08 14:42:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136644-20140909073757.patch</filename>
            <type>text/plain</type>
            <size>84704</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE0OTAzY2EzNDU0NDZi
YjJlYzlhNjgxNjY3OGQ5MmEwZmIyMTU2Mi4uODM3YzI2ZmE0N2UxMTc4Mjg0OGQ2NzVhY2ZmNjA0
OTliODQyMWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTA5LTA4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTZXBhcmF0ZSB0aGUgQXBwbGUg
bWVkaWEgY29udHJvbHMgbW9kdWxlIGZyb20gb3RoZXIgcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjY0NAorICAgICAgICByZGFyOi8vcHJv
YmxlbS8xODI3MDk2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgYSBtZWRpYUNvbnRyb2xzQmFzZS57anN8Y3NzfSB0aGF0IGFjdHMgYXMgdGhl
IGJhc2UKKyAgICAgICAgY2xhc3MgZm9yIHRoZSBFRkwgYW5kIEdUSyBwb3J0cyAodGhleSB3ZXJl
IHVzaW5nIG1lZGlhQ29udHJvbHNBcHBsZSkuCisgICAgICAgIE92ZXIgdGltZSwgdGhlIEFwcGxl
LXNwZWNpZmljIGNvbnRyb2xzIG1heSB1c2UgbW9yZSBvZiB0aGUKKyAgICAgICAgQmFzZSBjbGFz
cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5j
c3M6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xz
QmFzZS5qczogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjptZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCk6IExvYWQgQmFzZSByYXRoZXIgdGhhbiBBcHBsZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjptZWRpYUNvbnRyb2xzU2NyaXB0KTogRGl0dG8uCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjptZWRpYUNvbnRyb2xzU2NyaXB0KTogRGl0dG8uCisKIDIwMTQtMDktMDggIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGVudW0gY2xh
c3MgZm9yIHRoZSBSdW5Qb3N0TGF5b3V0VGFza3MgZW51bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNCYXNlLmNzcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5jc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjYwMzAzMTNkNWVlMjVlZDE0YjQxNzFkNzhhNGQyN2U4YTBhNjY1YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNv
bnRyb2xzQmFzZS5jc3MKQEAgLTAsMCArMSw3NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCithdWRpbyB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDog
MjVweDsKK30KKworYm9keTotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDM4LCAzOCwgMzgpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1t
ZWRpYSB7CisgICAgbWFyZ2luOiBhdXRvOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7Cit9CisK
K3ZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBh
bmVsIHsKKyAgICBib3R0b206IDBweDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVk
aWE6Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwubm8tdmlkZW8geworICAgIG9wYWNpdHk6
IDE7Cit9CisKKzo6LXdlYmtpdC1tZWRpYS1jb250cm9scyB7CisgICAgd2lkdGg6IGluaGVyaXQ7
CisgICAgaGVpZ2h0OiBpbmhlcml0OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBkaXNw
bGF5OiAtd2Via2l0LWZsZXg7CisgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogc3RyZXRjaDsKKyAg
ICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CisgICAgLXdlYmtpdC1mbGV4LWRp
cmVjdGlvbjogY29sdW1uOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNv
bnRhaW5lciwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKKyAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKK30KKwor
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwtY29tcG9zaXRlZC1wYXJlbnQgewor
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgIHdpZHRoOiAxMDAlOwor
fQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwKK2F1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3R0b206IDA7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgcGFkZGluZy10b3A6IDFweDsKKyAgICBtaW4taGVpZ2h0OiAyNXB4OworICAgIGhlaWdodDog
MjVweDsKKyAgICBsaW5lLWhlaWdodDogMjVweDsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBu
b25lOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91bmQt
aW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwKKyAgICAgICAgcmdiYSgwLCAgMCwg
IDAsICAuOTIpIDAsCisgICAgICAgIHJnYmEoMCwgIDAsICAwLCAgLjkyKSAxcHgsCisgICAgICAg
IHJnYmEoODksIDg5LCA4OSwgLjkyKSAxcHgsCisgICAgICAgIHJnYmEoODksIDg5LCA4OSwgLjky
KSAycHgsCisgICAgICAgIHJnYmEoNjAsIDYwLCA2MCwgLjkyKSAycHgsCisgICAgICAgIHJnYmEo
MzUsIDM1LCAzNSwgLjkyKSAxMnB4LAorICAgICAgICByZ2JhKDMwLCAzMCwgMzAsIC45MikgMTJw
eCwKKyAgICAgICAgcmdiYSgzMCwgMzAsIDMwLCAuOTIpIDEzcHgsCisgICAgICAgIHJnYmEoMjUs
IDI1LCAyNSwgLjkyKSAxM3B4LAorICAgICAgICByZ2JhKDE3LCAxNywgMTcsIC45MikgMTAwJQor
ICAgICk7CisKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgLXdlYmtpdC1mbGV4LWRp
cmVjdGlvbjogcm93OworICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICAtd2Vi
a2l0LXVzZXItc2VsZWN0OiBub25lOworCisgICAgZGlyZWN0aW9uOiBsdHI7CisKKyAgICB0cmFu
c2l0aW9uOiBvcGFjaXR5IDAuMjVzIGxpbmVhcjsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtcGFuZWwgeworICAgIGN1cnNvcjogbm9uZTsKKyAgICBvcGFjaXR5OiAwOworfQor
Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbC5zaG93LAordmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtcGFuZWwucGF1c2VkLAordmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGFuZWw6aG92ZXIgeworICAgIGN1cnNvcjogaW5oZXJpdDsKKyAgICBvcGFjaXR5OiAx
OworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCBidXR0b24sCithdWRp
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCBidXR0b24geworICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbm9uZTsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwYWRkaW5nOiAwOworICAg
IGJvcmRlcjogMDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgd2lkdGg6IDE2cHg7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tn
cm91bmQtb3JpZ2luOiBjb250ZW50LWJveDsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw
ZWF0OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKKyAgICAtd2Via2l0LWZpbHRl
cjogZHJvcC1zaGFkb3coYmxhY2sgMCAxcHggMXB4KTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtcGFuZWwgYnV0dG9uOmFjdGl2ZSwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBhbmVsIGJ1dHRvbjphY3RpdmUgeworICAgIC13ZWJraXQtZmlsdGVyOiBkcm9wLXNo
YWRvdyh3aGl0ZSAwIDAgMTBweCk7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXJld2luZC1idXR0b24sCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXdpbmQtYnV0
dG9uIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE1IDE3Ij48
bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50IiB4Mj0iMCIgeTI9IjEwMCUiIGdyYWRpZW50VW5p
dHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9InJnYigyMTYs
IDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40NDQ0NCIgc3RvcC1jb2xvcj0icmdiKDIxNiwg
MjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0PSIwLjQ0NDQ0IiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAy
MDgsIDIwOCkiLz48c3RvcCBvZmZzZXQ9IjAuNTU1NTUiIHN0b3AtY29sb3I9InJnYigyMDgsIDIw
OCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41NTU1NSIgc3RvcC1jb2xvcj0icmdiKDIwMCwgMjAw
LCAyMDApIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCki
Lz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Im0gNy45MTMxLDIgMCwtMS41NDggLTIuNTg2LDIu
MTU1IDAsLTIuMTcxIC0yLjU4MiwyLjIwOCAyLjU4MiwyLjE3NSAwLC0yLjEzOSAyLjU4NiwyLjE1
NSAwLC0xLjI3NiBjIDMuMTM4LDAuMTI5IDUuNDkxLDIuNjgxIDUuNTQzLDUuODM4IGwgLTEuMDMx
LDAgMC4wMTYsMC4yMTUgMS4wMTUsMCBjIC0wLjA2LDMuMTkgLTIuNjI5LDUuNzY1IC01LjgxOSw1
LjgzMyBsIDAsLTEuMDE4IC0wLjIxNCwwIDAsMS4wMjEgYyAtMy4yMSwtMC4wNDcgLTUuODAxLC0y
LjYzMSAtNS44NjIsLTUuODM2IGwgMS4wNDUsMCAtMC4wMTYsLTAuMjE1IC0xLjA0NSwwIGMgLTAu
MDUyLC0wLjI4OCAtMC4zMTgsLTAuNjU0IC0wLjc2NiwtMC42NTQgLTAuNTM4LDAgLTAuNzU1LDAu
NDg0IC0wLjc1NSwwLjc1IDAsNC4xNDYgMy4zMzEsNy41MDYgNy40NzYsNy41MDYgNC4xNDYsMCA3
LjUwNiwtMy4zNiA3LjUwNiwtNy41MDYgMCwtNC4wNTkgLTMuMDY2LC03LjM1NyAtNy4wOTMsLTcu
NDkzIiBmaWxsPSJ1cmwoI2dyYWRpZW50KSIvPjxwYXRoIGQ9Im0gNS4xNzI5LDExLjA1MTggYyAt
MC4zOCwwIC0wLjY2OCwtMC4xMjkgLTAuOTQ1LC0wLjM2NiAtMC4wODMsLTAuMDcxIC0wLjE4Niwt
MC4xMzQgLTAuMzM4LC0wLjEzNCAtMC4yNzcsMCAtMC41MTEsMC4yMzggLTAuNTExLDAuNTIxIDAs
MC4xNTQgMC4wODMsMC4zMDEgMC4xNzksMC4zODMgMC4zOTQsMC4zNDYgMC45MTEsMC41NjMgMS42
MDEsMC41NjMgMS4wNzcsMCAxLjczOSwtMC42ODEgMS43MzksLTEuNjA4IGwgMCwtMC4wMTMgYyAw
LC0wLjkxMSAtMC42NDEsLTEuMjY1IC0xLjI5NiwtMS4zNzYgbCAwLjk0NSwtMC45MTkgYyAwLjE5
MywtMC4xOSAwLjMxNywtMC4zMzcgMC4zMTcsLTAuNjA0IDAsLTAuMjk0IC0wLjIyOCwtMC40Nzcg
LTAuNTM4LC0wLjQ3NyBsIC0yLjM1NCwwIGMgLTAuMjQ4LDAgLTAuNDU1LDAuMjEgLTAuNDU1LDAu
NDY0IDAsMC4yNTMgMC4yMDcsMC40NjMgMC40NTUsMC40NjMgbCAxLjQ4NSwwIC0wLjkzOSwwLjk2
MSBjIC0wLjE2NiwwLjE2OSAtMC4yMjgsMC4yOTUgLTAuMjI4LDAuNDQ0IDAsMC4yNSAwLjIwNyww
LjQ2MyAwLjQ1NSwwLjQ2MyBsIDAuMTY2LDAgYyAwLjU5NCwwIDAuOTQ1LDAuMjIyIDAuOTQ1LDAu
NjI0IGwgMCwwLjAxMiBjIDAsMC4zNjcgLTAuMjgyLDAuNTk5IC0wLjY4MywwLjU5OSIgZmlsbD0i
dXJsKCNncmFkaWVudCkiLz48cGF0aCBkPSJtIDEwLjM1NCw5LjUzNDIgYyAwLDAuODc2IC0wLjM3
OSwxLjUyNSAtMC45NzksMS41MjUgLTAuNTk5LDAgLTAuOTkyLC0wLjY1NSAtMC45OTIsLTEuNTM5
IGwgMCwtMC4wMTIgYyAwLC0wLjg4NCAwLjM4OCwtMS41MjcgMC45NzksLTEuNTI3IDAuNTkyLDAg
MC45OTIsMC42NjMgMC45OTIsMS41MzkgbCAwLDAuMDE0IHogbSAtMC45NzksLTIuNTEyIGMgLTEu
MTk3LDAgLTIuMDA4LDEuMDk3IC0yLjAwOCwyLjQ5OCBsIDAsMC4wMTQgYyAwLDEuNDAxIDAuNzky
LDIuNDg0IDEuOTk1LDIuNDg0IDEuMjA1LDAgMi4wMSwtMS4wOTcgMi4wMSwtMi40OTggbCAwLC0w
LjAxMiBjIDAsLTEuNDAyIC0wLjgwNSwtMi40ODYgLTEuOTk3LC0yLjQ4NiIgZmlsbD0idXJsKCNn
cmFkaWVudCkiLz48L3N2Zz4nKTsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE4cHg7
CisgICAgbWFyZ2luLWJvdHRvbTogMXB4OworICAgIG1hcmdpbi1sZWZ0OiA2cHg7CisgICAgbWFy
Z2luLXJpZ2h0OiA0cHg7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXkt
YnV0dG9uLAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24geworICAg
IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTUgMTUiPjxsaW5lYXJHcmFk
aWVudCBpZD0iZ3JhZGllbnQiIHgyPSIwIiB5Mj0iMTAwJSIgZ3JhZGllbnRVbml0cz0idXNlclNw
YWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0icmdiKDIxNiwgMjE2LCAyMTYp
Ii8+PHN0b3Agb2Zmc2V0PSIwLjQzNzUiIHN0b3AtY29sb3I9InJnYigyMTYsIDIxNiwgMjE2KSIv
PjxzdG9wIG9mZnNldD0iMC40Mzc1IiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48
c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Ag
b2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InJnYigyMDAsIDIwMCwgMjAwKSIvPjxzdG9wIG9mZnNl
dD0iMSIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PC9saW5lYXJHcmFkaWVudD48
cGF0aCBkPSJNIDAsMCB2IDE2IGggNiB2IC0xNiBoIC02IHoiIGZpbGw9InVybCgjZ3JhZGllbnQp
Ii8+PHBhdGggZD0iTSA5LDAgdiAxNiBoIDYgdiAtMTYgaCAtNiB6IiBmaWxsPSJ1cmwoI2dyYWRp
ZW50KSIvPjwvc3ZnPicpOworICAgIG1hcmdpbi1sZWZ0OiA2cHg7CisgICAgbWFyZ2luLXJpZ2h0
OiAxcHg7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLnBh
dXNlZCwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLnBhdXNlZCB7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNSAxNSI+PGxpbmVh
ckdyYWRpZW50IGlkPSJncmFkaWVudCIgeDI9IjAiIHkyPSIxMDAlIiBncmFkaWVudFVuaXRzPSJ1
c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZ2IoMjE2LCAyMTYs
IDIxNikiLz48c3RvcCBvZmZzZXQ9IjAuNDM3NSIgc3RvcC1jb2xvcj0icmdiKDIxNiwgMjE2LCAy
MTYpIi8+PHN0b3Agb2Zmc2V0PSIwLjQzNzUiIHN0b3AtY29sb3I9InJnYigyMDgsIDIwOCwgMjA4
KSIvPjxzdG9wIG9mZnNldD0iMC41IiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48
c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1jb2xvcj0icmdiKDIwMCwgMjAwLCAyMDApIi8+PHN0b3Ag
b2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48L2xpbmVhckdyYWRp
ZW50PjxwYXRoIGQ9Ik0gMCwwIDE1LDcgMCwxNSB6IiBmaWxsPSJ1cmwoI2dyYWRpZW50KSIvPjwv
c3ZnPicpOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAubXV0ZS1i
b3gsCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAubXV0ZS1ib3ggeworICAg
IHdpZHRoOiAyMnB4OworICAgIGhlaWdodDogMjJweDsKKyAgICBtYXJnaW4tcmlnaHQ6IDJweDsK
KworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Cisg
ICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOworICAgIC13ZWJraXQtanVzdGlmeS1j
b250ZW50OiBjZW50ZXI7CisgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOworfQorCit2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiwKK2F1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uLAordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtdm9sdW1lLW1heC1idXR0b24geworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTpp
bWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3
Qm94PSIwIDAgMTUgMTUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZGllbnQiIHgyPSIwIiB5Mj0i
MTAwJSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3Rv
cC1jb2xvcj0icmdiKDIxNiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0PSIwLjQzNzUiIHN0b3At
Y29sb3I9InJnYigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40Mzc1IiBzdG9wLWNv
bG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1jb2xvcj0i
cmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InJnYigy
MDAsIDIwMCwgMjAwKSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4
LCAyMDgpIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJtIDAsOSAwLC00IDMsMCAzLC0zIDAs
MTAgLTMsLTMgLTMsMCB6IiBzdHlsZT0iZmlsbDp1cmwoI2dyYWRpZW50KSAiLz48cGF0aCBkPSJt
IDEwLjQ0OSwxLjA4NyBjIDEuOTYzLDEuMDU1IDMuMzIyLDMuMjkxIDMuMzIyLDUuODgxIDAsMi42
NDIgLTEuNDAyLDQuOTEzIC0zLjQyNCw1Ljk0NSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6dXJs
KCNncmFkaWVudCk7c3Ryb2tlLXdpZHRoOjEuMjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7Ii8+PHBh
dGggZD0ibSA5LjEzLDMuMTM0IGMgMS4yODksMC42ODEgMi4xODEsMi4xNDIgMi4xODEsMy44MzUg
MCwxLjc0MzAwMSAtMC45MzksMy4yNCAtMi4yODUsMy44OTciIHN0eWxlPSJmaWxsOm5vbmU7c3Ry
b2tlOnVybCgjZ3JhZGllbnQpO3N0cm9rZS13aWR0aDoxLjI1O3N0cm9rZS1saW5lY2FwOnJvdW5k
OyIvPjxwYXRoIGQ9Ik0gNy43OTQsNS4xNzUgQyA4LjQwMzAwMSw1LjQ5MSA4LjgyNzAwMSw2LjE2
NyA4LjgyNzAwMSw2Ljk3MSA4LjgyNzAwMSw3LjgxOCA4LjM1Niw4LjUzNzAwMSA3LjY4OCw4Ljgy
NiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6dXJsKCNncmFkaWVudCk7c3Ryb2tlLXdpZHRoOjEu
MjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7Ii8+PC9zdmc+Jyk7CisgICAgd2lkdGg6IDE0cHg7Cit9
CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIC52b2x1bWUtYm94LAorYXVk
aW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLnZvbHVtZS1ib3ggeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIGhlaWdodDog
MjJweDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogMDsKKworICAgIC13ZWJraXQtdHJhbnNm
b3JtOiByb3RhdGUoLTkwZGVnKTsKKyAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDExcHgg
MTFweDsKKworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91
bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KAorICAgICAgICBsZWZ0LAorICAgICAg
ICByZ2JhKDE3LCAxNywgMTcsICAwLjkyKSwKKyAgICAgICAgcmdiYSg0MiwgNDIsIDQyLCAwLjky
KQorICAgICk7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjk1KTsKKyAg
ICBib3JkZXItcmFkaXVzOiAxMnB4OworCisgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OworICAg
IC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOworCisgICAgb3Bh
Y2l0eTogMDsKKyAgICAvKiBtYWtlIHplcm8gd2lkdGggKHJhdGhlciB0aGFuIGRpc3BsYXk6bm9u
ZSkgZm9yIEFYIGFuZCBGS0EgKi8KKyAgICB3aWR0aDogMDsgLyogd2lsbCBiZWNvbWUgMTE0cHgg
d2hlbiBzaG93biAqLworCit9CisKKy8qIEZJWE1FOiBuZWVkcyBDU1M0ICFzdWJqZWN0IHNlbGVj
dG9yIHRvIHNob3cgd2hlbiBzbGlkZXIgaW5zaWRlIC52b2x1bWUtYm94IGlzIGZvY3VzZWQgKi8K
K3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIC5tdXRlLWJveDpob3ZlciAudm9s
dW1lLWJveCwKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIC52b2x1bWUtYm94
OmhvdmVyLAordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLnZvbHVtZS1ib3g6
YWN0aXZlLAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLm11dGUtYm94Omhv
dmVyIC52b2x1bWUtYm94LAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLnZv
bHVtZS1ib3g6aG92ZXIsCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAudm9s
dW1lLWJveDphY3RpdmUgeworICAgIG9wYWNpdHk6IDE7CisgICAgLyogcmVzaXplIHRvIHVzYWJs
ZSBhbW91bnQgKHJhdGhlciB0aGFuIGRpc3BsYXk6bm9uZSkgZm9yIEFYIGFuZCBGS0EgKi8KKyAg
ICB3aWR0aDogMTE0cHg7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXIsCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsK
KyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJv
eDsKKyAgICBoZWlnaHQ6IDEwcHg7CisgICAgd2lkdGg6IDgwcHg7CisgICAgcGFkZGluZzogMDsK
KyAgICBtYXJnaW4tcmlnaHQ6IDZweDsKKworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Vi
a2l0LWxpbmVhci1ncmFkaWVudCgKKyAgICAgICAgdG9wLAorICAgICAgICByZ2JhKDE1LCAxNSwg
MTUsIC44NSkgMCwKKyAgICAgICAgcmdiYSgyMywgMjMsIDIzLCAuODUpIDUwJSwKKyAgICAgICAg
cmdiYSgxNSwgMTUsIDE1LCAuODUpIDEwMCUKKyAgICApOworICAgIGJvcmRlcjogMXB4IHNvbGlk
IHJnYmEoMCwgMCwgMCwgMC44NzUpOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy12b2x1bWUtc2xpZGVyOjotd2Via2l0LXNsaWRlci10aHVtYiwKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKKyAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgd2lkdGg6IDhweDsKKyAgICBoZWlnaHQ6IDhw
eDsKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNw
YXJlbnQ7CisKKyAgICAvKiByb3RhdGVaKCkgZm9yY2VzIHRoZSBsYXllciBpbnRvIGNvbXBvc2l0
aW5nIG1vZGUuCisgICAgU2xpZGVyIHRodW1icyBhcmUgc21hbGwsIHNvIGZvcmNpbmcgYSBjb21w
b3NpdGluZyBsYXllciBpcyBpbmV4cGVuc2l2ZSwKKyAgICAgICBhbmQgaXQga2VlcHMgdGhlIHNs
aWRlciBmcm9tIGhhdmluZyB0byByZXBhaW50IHdoaWxlIHNsaWRpbmcuICovCisgICAgLXdlYmtp
dC10cmFuc2Zvcm06IHJvdGF0ZVooMCk7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1s
aW5lYXItZ3JhZGllbnQoCisgICAgICAgIGxlZnQsCisgICAgICAgIHJnYmEoOTksIDk5LCA5OSwg
MSksCisgICAgICAgIHJnYmEoMTQ0LCAxNDQsIDE0NCwgMSkKKyAgICApOworICAgIGJveC1zaGFk
b3c6IGluc2V0IC0xcHggMCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjUpLCAwIDFweCByZ2JhKDI1
NSwgMjU1LCAyNTUsIC4xNCk7Cit9Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1
bWUtc2xpZGVyOjotd2Via2l0LXNsaWRlci10aHVtYjo6LXdlYmtpdC1zbGlkZXItdGh1bWI6YWN0
aXZlLAordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlcjo6LXdlYmtp
dC1zbGlkZXItdGh1bWI6YWN0aXZlOjotd2Via2l0LXNsaWRlci10aHVtYiwKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iOjot
d2Via2l0LXNsaWRlci10aHVtYjphY3RpdmUsCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy12b2x1bWUtc2xpZGVyOjotd2Via2l0LXNsaWRlci10aHVtYjphY3RpdmU6Oi13ZWJraXQtc2xp
ZGVyLXRodW1iIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVu
dCgKKyAgICAgICAgcmlnaHQgdG9wLAorICAgICAgICByZ2JhKDE2MCwgMTYwLCAxNjAsIDEpLAor
ICAgICAgICByZ2JhKDIyMSwgMjIxLCAyMjEsIDEpCisgICAgKTsKK30KKwordmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24ubXV0ZWQsCithdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1tdXRlLWJ1dHRvbi5tdXRlZCwKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXZvbHVtZS1taW4tYnV0dG9uIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6
aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmll
d0JveD0iMCAwIDE1IDE1Ij48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50IiB4Mj0iMCIgeTI9
IjEwMCUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0
b3AtY29sb3I9InJnYigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40Mzc1IiBzdG9w
LWNvbG9yPSJyZ2IoMjE2LCAyMTYsIDIxNikiLz48c3RvcCBvZmZzZXQ9IjAuNDM3NSIgc3RvcC1j
b2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9
InJnYigyMDgsIDIwOCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41IiBzdG9wLWNvbG9yPSJyZ2Io
MjAwLCAyMDAsIDIwMCkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9InJnYigyMDgsIDIw
OCwgMjA4KSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0ibSAwLDkgMCwtNCAzLDAgMywtMyAw
LDEwIC0zLC0zIC0zLDAgeiIgZmlsbD0idXJsKCNncmFkaWVudCkiLz48L3N2Zz4nKTsKK30KKwor
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0
b24sCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10b2dnbGUtY2xvc2VkLWNhcHRpb25z
LWJ1dHRvbiB7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIG1hcmdp
bjogMCA3cHg7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWws
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDIg
MTA1Ij48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50IiB4Mj0iMCIgeTI9IjEwMCUiIGdyYWRp
ZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9InJn
YigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40Njg3NSIgc3RvcC1jb2xvcj0icmdi
KDIxNiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0PSIwLjQ2ODc1IiBzdG9wLWNvbG9yPSJyZ2Io
MjA4LCAyMDgsIDIwOCkiLz48c3RvcCBvZmZzZXQ9IjAuNTMxMjUiIHN0b3AtY29sb3I9InJnYigy
MDgsIDIwOCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41MzEyNSIgc3RvcC1jb2xvcj0icmdiKDIw
MCwgMjAwLCAyMDApIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgs
IDIwOCkiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik05OC43NjYsNDMuMjI0YzAtMjMuMTYz
LTIxLjc3NS00MS45NC00OC42MzctNDEuOTRjLTI2Ljg1OSwwLTQ4LjYzNSwxOC43NzctNDguNjM1
LDQxLjk0YzAsMTguMjY2LDEzLjU0NiwzMy43OTYsMzIuNDQ0LDM5LjU0OWMxLjEzMSw4LjM1Niwy
Ni4wMzcsMjQuMjU1LDIyLjg2NCwxOS45MjFjLTQuNDYyLTYuMDk2LTUuMTU5LTEzLjE4My01LjA3
LTE3LjU2NkM3Ny44NSw4NC4zOTcsOTguNzY2LDY1LjkyMyw5OC43NjYsNDMuMjI0eiIgZmlsbD0i
dXJsKCNncmFkaWVudCkiLz48L3N2Zz4nKTsKKyAgICBvdXRsaW5lOiAwOworfQorCit2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyLAorYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciB7CisgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyOworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICByaWdodDogMzhw
eDsKKyAgICBib3R0b206IDI5cHg7CisgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0OHB4KTsg
LyogcmlnaHQgKyAxMHB4ICovCisgICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMzlweCk7IC8q
IGJvdHRvbSArIDEwcHggKi8KKyAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgb3ZlcmZsb3ct
eTogc2Nyb2xsOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NSk7Cisg
ICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjc1KTsKKyAgICBib3Jk
ZXItcmFkaXVzOiAxMHB4OworICAgIGN1cnNvcjogZGVmYXVsdDsKKyAgICB6LWluZGV4OiAyOwor
ICAgIHRleHQtYWxpZ246IGluaXRpYWw7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWNsb3NlZC1jYXB0aW9ucy1jb250YWluZXIgLmxpc3QsCithdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIC5saXN0IHsKKyAgICBkaXNwbGF5
OiBibG9jazsKKyAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBCb2xkIiwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOworICAgIGZvbnQtc2l6ZTogMTBwdDsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlv
bnMtY29udGFpbmVyIGgzLAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY2xvc2VkLWNh
cHRpb25zLWNvbnRhaW5lciBoMyB7CisgICAgbWFyZ2luOiAwOworICAgIGNvbG9yOiByZ2IoMTE3
LCAxMTcsIDExNyk7CisgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgYmxhY2s7CisgICAgLXdlYmtp
dC1tYXJnaW4tc3RhcnQ6IDIzcHg7CisgICAgcGFkZGluZy10b3A6IDRweDsKKyAgICBmb250LXdl
aWdodDogYm9sZDsKKyAgICBmb250LXNpemU6IDEwcHQ7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWNsb3NlZC1jYXB0aW9ucy1jb250YWluZXIgdWwsCithdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIHVsIHsKKyAgICBsaXN0
LXN0eWxlLXR5cGU6IG5vbmU7CisgICAgbWFyZ2luOiAwIDAgNHB4IDA7CisgICAgcGFkZGluZzog
MDsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciBsaSwKK2F1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWNsb3NlZC1jYXB0aW9ucy1jb250YWluZXIgbGkgeworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsK
KyAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCBibGFjazsKKyAgICBtYXJnaW46IDA7CisgICAgcGFk
ZGluZy1sZWZ0OiAzN3B4OworICAgIHBhZGRpbmctcmlnaHQ6IDM1cHg7CisgICAgcGFkZGluZy10
b3A6IDAuMTVlbTsKKyAgICBwYWRkaW5nLWJvdHRvbTogMC4yZW07CisgICAgYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHdoaXRlLXNwYWNlOiBub3dy
YXA7CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CisgICAgYm9yZGVyLXRvcDogMXB4IHNv
bGlkIHRyYW5zcGFyZW50OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVu
dDsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY2xvc2VkLWNhcHRpb25zLWNv
bnRhaW5lciBsaTpmb2N1cywKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWNsb3NlZC1j
YXB0aW9ucy1jb250YWluZXIgbGk6Zm9jdXMgeworICAgIG91dGxpbmU6IDA7CisgICAgYmFja2dy
b3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRv
bSwgY29sb3Itc3RvcCgwLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykpLCBjb2xvci1zdG9wKDEs
IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSkpOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIGxpOmhvdmVyLAorYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciBsaTpob3ZlciB7Cisg
ICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBs
ZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLCByZ2IoNzksIDExMiwgMjQ2KSksIGNvbG9yLXN0b3Ao
MSwgcmdiKDI2LCA2OCwgMjQzKSkpOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoNzAs
IDEwMywgMjM0KTsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDMsIDU0LCAyMjkp
OworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29u
dGFpbmVyIGxpLnNlbGVjdGVkOjpiZWZvcmUsCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIGxpLnNlbGVjdGVkOjpiZWZvcmUgeworICAgIGRp
c3BsYXk6IGJsb2NrOworICAgIGNvbnRlbnQ6ICIiOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICB0b3A6IDAuMjVlbTsKKyAgICB3aWR0aDogMS4xZW07CisgICAgaGVpZ2h0OiAxLjFlbTsK
KyAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogLTIwcHg7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHZpZXdCb3g9IjAgMCAzMDAgMzAwIj48cG9seWdvbiBmaWxsPSJyZ2IoMTYzLCAxNjMs
IDE2MykiIHBvaW50cz0iMjUyLjMwMSw0LjQ3NyAxMjYuNjY3LDE5NC4xMDQgNDMuMzU4LDEwOC4z
IDYuODY4LDE2MS40MDggMTMyLjUxNSwyOTAuODE0IDI5Ny43MzIsNDkuOTI2Ii8+PC9zdmc+Jyk7
CisgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKK30KKwordmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciBsaS5zZWxlY3RlZDpob3Zl
cjo6YmVmb3JlLAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY2xvc2VkLWNhcHRpb25z
LWNvbnRhaW5lciBsaS5zZWxlY3RlZDpob3Zlcjo6YmVmb3JlIHsKKyAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMwMCAzMDAiPjxwb2x5Z29uIGZpbGw9IndoaXRlIiBw
b2ludHM9IjI1Mi4zMDEsNC40NzcgMTI2LjY2NywxOTQuMTA0IDQzLjM1OCwxMDguMyA2Ljg2OCwx
NjEuNDA4IDEzMi41MTUsMjkwLjgxNCAyOTcuNzMyLDQ5LjkyNiIvPjwvc3ZnPicpOworfQorCit2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiwKK2F1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE1IDE1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCww
LDApIj48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50IiB4Mj0iMCIgeTI9IjEwMCUiIGdyYWRp
ZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9InJn
YigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40Mzc1IiBzdG9wLWNvbG9yPSJyZ2Io
MjE2LCAyMTYsIDIxNikiLz48c3RvcCBvZmZzZXQ9IjAuNDM3NSIgc3RvcC1jb2xvcj0icmdiKDIw
OCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InJnYigyMDgsIDIw
OCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41IiBzdG9wLWNvbG9yPSJyZ2IoMjAwLCAyMDAsIDIw
MCkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9InJnYigyMDgsIDIwOCwgMjA4KSIvPjwv
bGluZWFyR3JhZGllbnQ+PHBhdGggZD0iTSAxNCwxIG0gMCw2IC0yLC0yIC0yLDIgYyAwLDAgLTEs
MSAtMiwwIC0xLC0xIDAsLTIgMCwtMiBsIDIsLTIgLTIsLTIgNiwwIHoiIHN0eWxlPSJmaWxsOnVy
bCgjZ3JhZGllbnQpICIvPjxwYXRoIGQ9Ik0gMSwxNCBtIDAsLTYgMiwyIDIsLTIgYyAwLDAgMSwt
MSAyLDAgMSwxIDAsMiAwLDIgbCAtMiwyIDIsMiAtNiwwIHoiIHN0eWxlPSJmaWxsOnVybCgjZ3Jh
ZGllbnQpICIvPjwvc3ZnPicpOworICAgIG1hcmdpbjogMCA3cHg7Cit9Cit2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi5leGl0LAorYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24uZXhpdCB7CisgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNSAxNSIgdHJhbnNmb3JtPSJyb3RhdGUoOTAsMCww
KSI+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkaWVudCIgeDI9IjAiIHkyPSIxMDAlIiBncmFkaWVu
dFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZ2Io
MjE2LCAyMTYsIDIxNikiLz48c3RvcCBvZmZzZXQ9IjAuNDM3NSIgc3RvcC1jb2xvcj0icmdiKDIx
NiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0PSIwLjQzNzUiIHN0b3AtY29sb3I9InJnYigyMDgs
IDIwOCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41IiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgs
IDIwOCkiLz48c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1jb2xvcj0icmdiKDIwMCwgMjAwLCAyMDAp
Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48L2xp
bmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0gNyw4IG0gMCw2IC0yLC0yIC0yLDIgYyAwLDAgLTEsMSAt
MiwwIC0xLC0xIDAsLTIgMCwtMiBsIDIsLTIgLTIsLTIgNiwwIHoiIHN0eWxlPSJmaWxsOnVybCgj
Z3JhZGllbnQpICIvPjxwYXRoIGQ9Ik0gOCw3IG0gMCwtNiAyLDIgMiwtMiBjIDAsMCAxLC0xIDIs
MCAxLDEgMCwyIDAsMiBsIC0yLDIgMiwyIC02LDAgeiIgc3R5bGU9ImZpbGw6dXJsKCNncmFkaWVu
dCkgIi8+PC9zdmc+Jyk7Cit9Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zdGF0dXMt
ZGlzcGxheSwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXN0YXR1cy1kaXNwbGF5IHsK
KyAgICBjdXJzb3I6IGRlZmF1bHQ7CisgICAgZm9udDogLXdlYmtpdC1zbWFsbC1jb250cm9sOwor
ICAgIGZvbnQtc2l6ZTogOXB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgY29sb3I6IHdo
aXRlOworICAgIHRleHQtc2hhZG93OiBibGFjayAwcHggMXB4IDFweDsKKworICAgIGxldHRlci1z
cGFjaW5nOiBub3JtYWw7CisgICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CisgICAgbGluZS1oZWln
aHQ6IDI1cHg7CisgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CisgICAgdGV4dC1pbmRlbnQ6IDA7
CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIHRleHQtYWxpZ246IGxlZnQ7CisKKyAg
ICBwYWRkaW5nOiAwIDEycHg7CisKKyAgICAtd2Via2l0LWZsZXg6IDEgMSAwOworfQordmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUsCithdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIC13
ZWJraXQtZmxleDogMSAxIDA7CisgICAgaGVpZ2h0OiA5cHg7CisgICAgbWFyZ2luOiAwOworCisg
ICAgYm9yZGVyLXJhZGl1czogNC41cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc0LCA3
NCwgNzQpOworICAgIGJveC1zaGFkb3c6IGluc2V0IC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgLjY4
KSwgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDgpOworfQordmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmU6Oi13ZWJraXQtc2xpZGVyLXRodW1iLAorYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmU6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKKyAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgd2lkdGg6NnB4OworICAgIGhlaWdodDogNnB4
OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworCisgICAgLyogcm90YXRlWigpIGZvcmNl
cyB0aGUgbGF5ZXIgaW50byBjb21wb3NpdGluZyBtb2RlLgorICAgIFNsaWRlciB0aHVtYnMgYXJl
IHNtYWxsLCBzbyBmb3JjaW5nIGEgY29tcG9zaXRpbmcgbGF5ZXIgaXMgaW5leHBlbnNpdmUsCisg
ICAgICAgYW5kIGl0IGtlZXBzIHRoZSBzbGlkZXIgZnJvbSBoYXZpbmcgdG8gcmVwYWludCB3aGls
ZSBzbGlkaW5nLiAqLworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCkgcm90
YXRlWigtNDVkZWcpOworCisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudCgK
KyAgICAgICAgbGluZWFyLAorICAgICAgICBsZWZ0IGJvdHRvbSwKKyAgICAgICAgcmlnaHQgdG9w
LAorICAgICAgICBjb2xvci1zdG9wKDAsIHJnYmEoOTksICA5OSwgIDk5LCAgMSkpLAorICAgICAg
ICBjb2xvci1zdG9wKDEsIHJnYmEoMTQ0LCAxNDQsIDE0NCwgMSkpCisgICAgKTsKK30KK3ZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lOjotd2Via2l0LXNsaWRlci10aHVtYjph
Y3RpdmUsCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZTphY3RpdmU6Oi13
ZWJraXQtc2xpZGVyLXRodW1iLAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxp
bmU6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmFjdGl2ZSwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWVsaW5lOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIsCisgeworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQoCisgICAgICAgIGxpbmVhciwKKyAgICAg
ICAgbGVmdCBib3R0b20sCisgICAgICAgIHJpZ2h0IHRvcCwKKyAgICAgICAgY29sb3Itc3RvcCgw
LCByZ2JhKDE2MCwgMTYwLCAxNjAsIDEpKSwKKyAgICAgICAgY29sb3Itc3RvcCgxLCByZ2JhKDIy
MSwgMjIxLCAyMjEsIDEpKQorICAgICk7Cit9Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jdXJyZW50LXRpbWUtZGlzcGxheSwKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWUtcmVtYWluaW5nLWRpc3BsYXksCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJy
ZW50LXRpbWUtZGlzcGxheSwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVt
YWluaW5nLWRpc3BsYXkgeworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgLXdl
YmtpdC1mbGV4OiAwIDAgMDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgLXdlYmtp
dC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50
ZXI7CisgICAgY3Vyc29yOiBkZWZhdWx0OworICAgIGZvbnQ6IC13ZWJraXQtc21hbGwtY29udHJv
bDsKKyAgICBmb250LXNpemU6IDlweDsKKyAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgIHdpZHRoOiA0NXB4OworICAgIG1pbi13aWR0aDogNDVweDsK
KyAgICBjb2xvcjogd2hpdGU7CisgICAgdGV4dC1zaGFkb3c6IGJsYWNrIDBweCAxcHggMXB4Owor
ICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CisgICAgd29yZC1zcGFjaW5nOiBub3JtYWw7Cisg
ICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKKyAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKKyAgICB0
ZXh0LWluZGVudDogMHB4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKwordmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIC5ob3VyLWxvbmctdGlt
ZSwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciAuaG91
ci1sb25nLXRpbWUgeworICAgIG1pbi13aWR0aDogNjdweDsKK30KKwordmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyLAorYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7
CisgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93OworICAgIC13ZWJraXQtYWxpZ24taXRl
bXM6IGNlbnRlcjsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAgIC13ZWJraXQt
ZmxleDogMSAxIDA7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHBhZGRpbmc6IDA7Cit9
CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIC50aHVtYm5haWwtdHJhY2ss
CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAudGh1bWJuYWlsLXRyYWNrIHsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgLXdlYmtpdC1mbGV4OiAxIDEgMDsKKyAgICBo
ZWlnaHQ6IDlweDsKKyAgICBtYXJnaW46IDAgMnB4OworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxl
eDsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBzdHJldGNoOworICAgIC13ZWJraXQtZmxleC1k
aXJlY3Rpb246IGNvbHVtbjsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFu
ZWwgLnRodW1ibmFpbCwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIC50aHVt
Ym5haWwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBvcGFjaXR5OiAwOworICAgIHRy
YW5zaXRpb246IG9wYWNpdHkgMC4yNXMgbGluZWFyOworICAgIGJvdHRvbTogMTVweDsKKyAgICB3
aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiA1OHB4OworICAgIG1hcmdpbi1sZWZ0OiAtNTBweDsK
KyAgICBib3JkZXI6IDVweCBzb2xpZCBibGFjazsKKyAgICBib3gtc2hhZG93OiAwIDAgM3B4IHdo
aXRlOworICAgIGJvcmRlci1yYWRpdXM6IDNweDsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtcGFuZWwgLnRodW1ibmFpbC1pbWFnZSwKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBhbmVsIC50aHVtYm5haWwtaW1hZ2UgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhl
aWdodDogMTAwJTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLnRo
dW1ibmFpbC5zaG93LAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLnRodW1i
bmFpbC5zaG93IHsKKyAgICBvcGFjaXR5OiAxOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1wYW5lbCAuaGlkZGVuLAorYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFu
ZWwgLmhpZGRlbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLyogRnVsbCBTY3JlZW4gKi8K
KworLyogCisgICAgUGFnZSBzdHlsZXNoZWV0cyBhcmUgbm90IGFsbG93ZWQgdG8gb3ZlcnJpZGUg
dGhlIHN0eWxlIG9mIG1lZGlhCisgICAgY29udHJvbHMgd2hpbGUgaW4gZnVsbCBzY3JlZW4gbW9k
ZSwgc28gbWFueSBpZiBub3QgYWxsIHRoZSBydWxlcworICAgIGRlZmluZWQgaW4gdGhpcyBzZWN0
aW9uIHdpbGwgYmUgbWFya2VkIGFzICFpbXBvcnRhbnQgdG8gZW5mb3JjZQorICAgIHRoaXMgcmVz
dHJpY3Rpb24gCisqLworCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXBhbmVsIHsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFp
bXBvcnRhbnQ7CisgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRh
bnQ7CisKKyAgICB3aWR0aDogNDQwcHggIWltcG9ydGFudDsKKyAgICBoZWlnaHQ6IDYwcHggIWlt
cG9ydGFudDsKKyAgICBtYXJnaW46IDAgYXV0byA1MHB4IGF1dG8gIWltcG9ydGFudDsKKyAgICBw
YWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OworCisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1s
aW5lYXItZ3JhZGllbnQodG9wLAorICAgICAgICByZ2JhKDQ1LCA0NSwgNDUsIC45NykgMCwKKyAg
ICAgICAgcmdiYSgzMCwgMzAsIDMwLCAuOTcpIDE5cHgsCisgICAgICAgIHJnYmEoMjUsIDI1LCAy
NSwgLjk3KSAxOXB4LAorICAgICAgICByZ2JhKDI1LCAyNSwgMjUsIC45NykgMjBweCwKKyAgICAg
ICAgcmdiYSgxOSwgMTksIDE5LCAuOTcpIDIwcHgsCisgICAgICAgIHJnYmEoMTIsIDEyLCAxMiwg
Ljk3KSAxMDAlCisgICAgKSAhaW1wb3J0YW50OworCisgICAgYm94LXNoYWRvdzogCisgICAgICAg
IGluc2V0IDAgLTFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjUpLAorICAgICAgICBpbnNldCAwICAx
cHggMCAwcHggICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLAorICAgICAgICBpbnNldCAwIC0x
cHggMCAwcHggICByZ2JhKDIwMiwgMjAyLCAyMDIsIDAuMDkpLAorICAgICAgICAwICAwICAgMCAx
cHggcmdiYSgwLCAwLCAwLCAwLjUpOworICAgIGJvcmRlci1yYWRpdXM6IDhweCAhaW1wb3J0YW50
OworCisgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGxpbmVhciAhaW1wb3J0YW50OworfQor
Cit2aWRlbzotd2Via2l0LWFuaW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBvcGFjaXR5OiAwICEgaW1wb3J0YW50OworICAg
IHRyYW5zaXRpb246IG9wYWNpdHkgMCAhIGltcG9ydGFudDsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAudm9sdW1lLWJveCB7Cisg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CisgICAgb3BhY2l0eTogMTsKKyAgICBsZWZ0OiAx
MXB4OworICAgIHRvcDogMTNweDsKKyAgICB3aWR0aDogOTBweDsKKyAgICBoZWlnaHQ6IDE0cHg7
CisgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OworICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246
IHJvdzsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CisgICAgYmFja2dyb3VuZC1p
bWFnZTogbm9uZTsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1z
Y3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgaGVpZ2h0
OiA2cHg7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13
ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwKKyAgICAgICAgcmdiYSgxNiwgMTYsIDE2LCAuMzAw
KSAwLAorICAgICAgICByZ2JhKDksICA5LCAgOSwgIC42MjkpIDEwMCUKKyAgICApOworICAgIGJv
eC1zaGFkb3c6IGluc2V0IC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgLjY4KSwgMCAxcHggcmdiYSgy
NTUsIDI1NSwgMjU1LCAuMDgpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsK
KyAgICB3aWR0aDogMTBweDsKKyAgICBoZWlnaHQ6IDEwcHg7CisgICAgYm9yZGVyLXJhZGl1czog
NXB4OworCisgICAgLyogcm90YXRlWigpIGZvcmNlcyB0aGUgbGF5ZXIgaW50byBjb21wb3NpdGlu
ZyBtb2RlLgorICAgIFNsaWRlciB0aHVtYnMgYXJlIHNtYWxsLCBzbyBmb3JjaW5nIGEgY29tcG9z
aXRpbmcgbGF5ZXIgaXMgaW5leHBlbnNpdmUsCisgICAgICAgYW5kIGl0IGtlZXBzIHRoZSBzbGlk
ZXIgZnJvbSBoYXZpbmcgdG8gcmVwYWludCB3aGlsZSBzbGlkaW5nLiAqLworICAgIC13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGVaKDI3MGRlZyk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24geworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3Zn
K3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw
IDIxIDIyIj48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50IiB4Mj0iMCIgeTI9IjEwMCUiIGdy
YWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9
InJnYigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40NzgiIHN0b3AtY29sb3I9InJn
YigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40NzgiIHN0b3AtY29sb3I9InJnYigy
MDgsIDIwOCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41MjIiIHN0b3AtY29sb3I9InJnYigyMDgs
IDIwOCwgMjA4KSIvPjxzdG9wIG9mZnNldD0iMC41MjIiIHN0b3AtY29sb3I9InJnYigyMDAsIDIw
MCwgMjAwKSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4LCAyMDgp
Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNIDAsMCAwLDIyIDgsMjIgOCwwIHoiIGZpbGw9
InVybCgjZ3JhZGllbnQpIi8+PHBhdGggZD0iTSAxMywwIDEzLDIyIDIxLDIyIDIxLDAgeiIgZmls
bD0idXJsKCNncmFkaWVudCkiLz48L3N2Zz4nKTsKKworICAgIHdpZHRoOiAyMnB4OworICAgIGhl
aWdodDogMjNweDsKKyAgICBsZWZ0OiAyMDlweDsKKyAgICB0b3A6IDlweDsKKyAgICBtYXJnaW46
IDA7CisgICAgcGFkZGluZzogMDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi5wYXVzZWQgeworICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjEgMjIiPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3Jh
ZGllbnQiIHgyPSIwIiB5Mj0iMTAwJSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxz
dG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0icmdiKDIxNiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zm
c2V0PSIwLjQ3OCIgc3RvcC1jb2xvcj0icmdiKDIxNiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0
PSIwLjQ3OCIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIw
LjUyMiIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIwLjUy
MiIgc3RvcC1jb2xvcj0icmdiKDIwMCwgMjAwLCAyMDApIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9w
LWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0g
MCwwIDIxLDExIDAsMjIgeiIgZmlsbD0idXJsKCNncmFkaWVudCkiLz48L3N2Zz4nKTsKK30KKwor
dmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXdpbmQt
YnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTYycHg7CisgICAg
dG9wOiAxM3B4OworICAgIHdpZHRoOiAxOHB4OworICAgIGhlaWdodDogMThweDsKK30KKwordmlk
ZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2st
YnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisKKworICAgIGJhY2tncm91bmQtaW1h
Z2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjIgMTUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZGll
bnQiIHgyPSIwIiB5Mj0iMTAwJSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9w
IG9mZnNldD0iMCIgc3RvcC1jb2xvcj0icmdiKDIxNiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0
PSIwLjQzNzUiIHN0b3AtY29sb3I9InJnYigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0i
MC40Mzc1IiBzdG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48c3RvcCBvZmZzZXQ9IjAu
NSIgc3RvcC1jb2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIHN0
b3AtY29sb3I9InJnYigyMDAsIDIwMCwgMjAwKSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xv
cj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNIDIyLDAg
MTEsNyAyMiwxNSB6IiBmaWxsPSJ1cmwoI2dyYWRpZW50KSIvPjxwYXRoIGQ9Ik0gMTEsMCAwLDcg
MTEsMTUgeiIgZmlsbD0idXJsKCNncmFkaWVudCkiLz48L3N2Zz4nKTsKKworICAgIHdpZHRoOiAy
M3B4OworICAgIGhlaWdodDogMTZweDsKKyAgICBsZWZ0OiAxNTZweDsKKyAgICB0b3A6IDEzcHg7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cmV0dXJuLXRvLXJlYWx0aW1lLWJ1dHRvbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICB3aWR0aDogMjlweDsKKyAgICBoZWlnaHQ6IDE2
cHg7CisgICAgbGVmdDogMjYycHg7CisgICAgdG9wOiAxM3B4OworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24g
eworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgn
ZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB2aWV3Qm94PSIwIDAgMjIgMTUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZGllbnQiIHgyPSIw
IiB5Mj0iMTAwJSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0i
MCIgc3RvcC1jb2xvcj0icmdiKDIxNiwgMjE2LCAyMTYpIi8+PHN0b3Agb2Zmc2V0PSIwLjQzNzUi
IHN0b3AtY29sb3I9InJnYigyMTYsIDIxNiwgMjE2KSIvPjxzdG9wIG9mZnNldD0iMC40Mzc1IiBz
dG9wLWNvbG9yPSJyZ2IoMjA4LCAyMDgsIDIwOCkiLz48c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1j
b2xvcj0icmdiKDIwOCwgMjA4LCAyMDgpIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9
InJnYigyMDAsIDIwMCwgMjAwKSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0icmdiKDIw
OCwgMjA4LCAyMDgpIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNIDAsMCAxMSw3IDAsMTUg
eiIgZmlsbD0idXJsKCNncmFkaWVudCkiLz48cGF0aCBkPSJNIDExLDAgMjIsNyAxMSwxNSB6IiBm
aWxsPSJ1cmwoI2dyYWRpZW50KSIvPjwvc3ZnPicpOworCisgICAgd2lkdGg6IDIzcHg7CisgICAg
aGVpZ2h0OiAxNnB4OworICAgIGxlZnQ6IDI1NnB4OworICAgIHRvcDogMTNweDsKK30KKwordmlk
ZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1j
b250YWluZXIgeworICAgIGhlaWdodDogYXV0bzsKKyAgICB3aWR0aDogNDIwcHg7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogOXB4OworICAgIGxlZnQ6IDhweDsKKyAgICBy
aWdodDogOHB4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXN0YXR1cy1kaXNwbGF5IHsKKyAgICB3aWR0aDogNDIwcHg7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGJvdHRvbTogN3B4OworICAgIGxlZnQ6IDhweDsKKyAgICByaWdo
dDogOHB4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWNsb3NlZC1jYXB0aW9ucy1jb250YWluZXIgeworICAgIGJvdHRvbTogMTE0cHg7Cisg
ICAgcmlnaHQ6IGNhbGMoNTAlIC0gMTgzcHgpOyAvKiAxODNweCBpcyAyMjFweCAoaGFsZiB0aGUg
bWVkaWEgY29udHJvbGxlcidzIHdpZHRoKSBtaW51cyAzOHB4ICh0aGUgcmlnaHQgcG9zaXRpb24g
b2YgdGhlIGNhcHRpb25zIGljb24pLiAqLworICAgIG1heC13aWR0aDogY2FsYyg1MCUgKyAxNzNw
eCk7IC8qIHJpZ2h0ICsgMTBweCAqLworICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDEyNHB4
KTsgLyogYm90dG9tICsgMTBweCAqLworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiAxMDAl
OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgcGFkZGluZy1ib3R0b206IDVweDsKKworICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsK
KworICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CisgICAgd29yZC1zcGFjaW5nOiBub3JtYWw7
CisgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CisgICAgdGV4dC1pbmRlbnQ6IDA7CisgICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisKKyAgICAtd2Via2l0LWZsZXg6IDEgMTsKKworICAgIC13
ZWJraXQtbGluZS1ib3gtY29udGFpbjogYmxvY2sgaW5saW5lLWJveCByZXBsYWNlZDsKK30KKwor
dmlkZW86OmN1ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOwor
fQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkgeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHdoaXRlLXNwYWNlOiBw
cmUtd3JhcDsKKyAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgZm9udDog
MjJweCBzYW5zLXNlcmlmOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRp
c3BsYXktYmFja2Ryb3AgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKwordmlkZW86
OmN1ZSg6ZnV0dXJlKSB7CisgICAgY29sb3I6IGdyYXk7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stY29udGFpbmVyIGIgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQor
Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciB1IHsKKyAgICB0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1jb250YWluZXIgaSB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCit2aWRlbzo6
LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciAuaGlkZGVuLAorYXVkaW86Oi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIgLmhpZGRlbiB7CisgICAgZGlzcGxheTogbm9u
ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9t
ZWRpYUNvbnRyb2xzQmFzZS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzQmFzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjZmNzE5M2Q3ODRjMDVlZmNlZGFk
ZTA4YzY3YThkNzkzN2Y3MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNCYXNlLmpzCkBAIC0wLDAgKzEsMTMxMyBA
QAorZnVuY3Rpb24gY3JlYXRlQ29udHJvbHMocm9vdCwgdmlkZW8sIGhvc3QpCit7CisgICAgcmV0
dXJuIG5ldyBDb250cm9sbGVyKHJvb3QsIHZpZGVvLCBob3N0KTsKK307CisKK2Z1bmN0aW9uIENv
bnRyb2xsZXIocm9vdCwgdmlkZW8sIGhvc3QpCit7CisgICAgdGhpcy52aWRlbyA9IHZpZGVvOwor
ICAgIHRoaXMucm9vdCA9IHJvb3Q7CisgICAgdGhpcy5ob3N0ID0gaG9zdDsKKyAgICB0aGlzLmNv
bnRyb2xzID0ge307CisgICAgdGhpcy5saXN0ZW5lcnMgPSB7fTsKKyAgICB0aGlzLmlzTGl2ZSA9
IGZhbHNlOworICAgIHRoaXMuc3RhdHVzSGlkZGVuID0gdHJ1ZTsKKworICAgIHRoaXMuYWRkVmlk
ZW9MaXN0ZW5lcnMoKTsKKyAgICB0aGlzLmNyZWF0ZUJhc2UoKTsKKyAgICB0aGlzLmNyZWF0ZUNv
bnRyb2xzKCk7CisgICAgdGhpcy51cGRhdGVCYXNlKCk7CisgICAgdGhpcy51cGRhdGVDb250cm9s
cygpOworICAgIHRoaXMudXBkYXRlRHVyYXRpb24oKTsKKyAgICB0aGlzLnVwZGF0ZVByb2dyZXNz
KCk7CisgICAgdGhpcy51cGRhdGVUaW1lKCk7CisgICAgdGhpcy51cGRhdGVSZWFkeVN0YXRlKCk7
CisgICAgdGhpcy51cGRhdGVQbGF5aW5nKCk7CisgICAgdGhpcy51cGRhdGVUaHVtYm5haWwoKTsK
KyAgICB0aGlzLnVwZGF0ZUNhcHRpb25CdXR0b24oKTsKKyAgICB0aGlzLnVwZGF0ZUNhcHRpb25D
b250YWluZXIoKTsKKyAgICB0aGlzLnVwZGF0ZUZ1bGxzY3JlZW5CdXR0b24oKTsKKyAgICB0aGlz
LnVwZGF0ZVZvbHVtZSgpOworICAgIHRoaXMudXBkYXRlSGFzQXVkaW8oKTsKKyAgICB0aGlzLnVw
ZGF0ZUhhc1ZpZGVvKCk7Cit9OworCisvKiBFbnVtcyAqLworQ29udHJvbGxlci5JbmxpbmVDb250
cm9scyA9IDA7CitDb250cm9sbGVyLkZ1bGxTY3JlZW5Db250cm9scyA9IDE7CisKK0NvbnRyb2xs
ZXIuUGxheUFmdGVyU2Vla2luZyA9IDA7CitDb250cm9sbGVyLlBhdXNlQWZ0ZXJTZWVraW5nID0g
MTsKKworLyogR2xvYmFscyAqLworQ29udHJvbGxlci5nTGFzdFRpbWVsaW5lSWQgPSAwOworCitD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKKworICAgIC8qIENvbnN0YW50cyAqLworICAgIEhhbmRs
ZWRWaWRlb0V2ZW50czogeworICAgICAgICBsb2Fkc3RhcnQ6ICdoYW5kbGVMb2FkU3RhcnQnLAor
ICAgICAgICBlcnJvcjogJ2hhbmRsZUVycm9yJywKKyAgICAgICAgYWJvcnQ6ICdoYW5kbGVBYm9y
dCcsCisgICAgICAgIHN1c3BlbmQ6ICdoYW5kbGVTdXNwZW5kJywKKyAgICAgICAgc3RhbGxlZDog
J2hhbmRsZVN0YWxsZWQnLAorICAgICAgICB3YWl0aW5nOiAnaGFuZGxlV2FpdGluZycsCisgICAg
ICAgIGVtcHRpZWQ6ICdoYW5kbGVSZWFkeVN0YXRlQ2hhbmdlJywKKyAgICAgICAgbG9hZGVkbWV0
YWRhdGE6ICdoYW5kbGVSZWFkeVN0YXRlQ2hhbmdlJywKKyAgICAgICAgbG9hZGVkZGF0YTogJ2hh
bmRsZVJlYWR5U3RhdGVDaGFuZ2UnLAorICAgICAgICBjYW5wbGF5OiAnaGFuZGxlUmVhZHlTdGF0
ZUNoYW5nZScsCisgICAgICAgIGNhbnBsYXl0aHJvdWdoOiAnaGFuZGxlUmVhZHlTdGF0ZUNoYW5n
ZScsCisgICAgICAgIHRpbWV1cGRhdGU6ICdoYW5kbGVUaW1lVXBkYXRlJywKKyAgICAgICAgZHVy
YXRpb25jaGFuZ2U6ICdoYW5kbGVEdXJhdGlvbkNoYW5nZScsCisgICAgICAgIHBsYXlpbmc6ICdo
YW5kbGVQbGF5JywKKyAgICAgICAgcGF1c2U6ICdoYW5kbGVQYXVzZScsCisgICAgICAgIHByb2dy
ZXNzOiAnaGFuZGxlUHJvZ3Jlc3MnLAorICAgICAgICB2b2x1bWVjaGFuZ2U6ICdoYW5kbGVWb2x1
bWVDaGFuZ2UnLAorICAgICAgICB3ZWJraXRmdWxsc2NyZWVuY2hhbmdlOiAnaGFuZGxlRnVsbHNj
cmVlbkNoYW5nZScsCisgICAgICAgIHdlYmtpdGJlZ2luZnVsbHNjcmVlbjogJ2hhbmRsZUZ1bGxz
Y3JlZW5DaGFuZ2UnLAorICAgICAgICB3ZWJraXRlbmRmdWxsc2NyZWVuOiAnaGFuZGxlRnVsbHNj
cmVlbkNoYW5nZScsCisgICAgfSwKKyAgICBIaWRlQ29udHJvbHNEZWxheTogNCAqIDEwMDAsCisg
ICAgUmV3aW5kQW1vdW50OiAzMCwKKyAgICBNYXhpbXVtU2Vla1JhdGU6IDgsCisgICAgU2Vla0Rl
bGF5OiAxNTAwLAorICAgIENsYXNzTmFtZXM6IHsKKyAgICAgICAgYWN0aXZlOiAnYWN0aXZlJywK
KyAgICAgICAgZXhpdDogJ2V4aXQnLAorICAgICAgICBmYWlsZWQ6ICdmYWlsZWQnLAorICAgICAg
ICBoaWRkZW46ICdoaWRkZW4nLAorICAgICAgICBoaWRpbmc6ICdoaWRpbmcnLAorICAgICAgICBo
b3VyTG9uZ1RpbWU6ICdob3VyLWxvbmctdGltZScsCisgICAgICAgIGxpc3Q6ICdsaXN0JywKKyAg
ICAgICAgbXV0ZUJveDogJ211dGUtYm94JywKKyAgICAgICAgbXV0ZWQ6ICdtdXRlZCcsCisgICAg
ICAgIHBhdXNlZDogJ3BhdXNlZCcsCisgICAgICAgIHBsYXlpbmc6ICdwbGF5aW5nJywKKyAgICAg
ICAgc2VsZWN0ZWQ6ICdzZWxlY3RlZCcsCisgICAgICAgIHNob3c6ICdzaG93JywKKyAgICAgICAg
dGh1bWJuYWlsOiAndGh1bWJuYWlsJywKKyAgICAgICAgdGh1bWJuYWlsSW1hZ2U6ICd0aHVtYm5h
aWwtaW1hZ2UnLAorICAgICAgICB0aHVtYm5haWxUcmFjazogJ3RodW1ibmFpbC10cmFjaycsCisg
ICAgICAgIHZvbHVtZUJveDogJ3ZvbHVtZS1ib3gnLAorICAgICAgICBub1ZpZGVvOiAnbm8tdmlk
ZW8nLAorICAgICAgICBkb3duOiAnZG93bicsCisgICAgICAgIG91dDogJ291dCcsCisgICAgfSwK
KyAgICBLZXlDb2RlczogeworICAgICAgICBlbnRlcjogMTMsCisgICAgICAgIGVzY2FwZTogMjcs
CisgICAgICAgIHNwYWNlOiAzMiwKKyAgICAgICAgcGFnZVVwOiAzMywKKyAgICAgICAgcGFnZURv
d246IDM0LAorICAgICAgICBlbmQ6IDM1LAorICAgICAgICBob21lOiAzNiwKKyAgICAgICAgbGVm
dDogMzcsCisgICAgICAgIHVwOiAzOCwKKyAgICAgICAgcmlnaHQ6IDM5LAorICAgICAgICBkb3du
OiA0MAorICAgIH0sCisKKyAgICBleHRlbmQ6IGZ1bmN0aW9uKGNoaWxkKQorICAgIHsKKyAgICAg
ICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgeworICAgICAgICAgICAgaWYgKCFjaGlsZC5o
YXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgY2hpbGRbcHJvcGVydHld
ID0gdGhpc1twcm9wZXJ0eV07CisgICAgICAgIH0KKyAgICB9LAorCisgICAgVUlTdHJpbmc6IGZ1
bmN0aW9uKGRldmVsb3BtZW50U3RyaW5nLCByZXBsYWNlU3RyaW5nLCByZXBsYWNlbWVudFN0cmlu
ZykKKyAgICB7CisgICAgICAgIHZhciBsb2NhbGl6ZWQgPSBVSVN0cmluZ1RhYmxlW2RldmVsb3Bt
ZW50U3RyaW5nXTsKKyAgICAgICAgaWYgKHJlcGxhY2VTdHJpbmcgJiYgcmVwbGFjZW1lbnRTdHJp
bmcpCisgICAgICAgICAgICByZXR1cm4gbG9jYWxpemVkLnJlcGxhY2UocmVwbGFjZVN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcpOworCisgICAgICAgIGlmIChsb2NhbGl6ZWQpCisgICAgICAgICAg
ICByZXR1cm4gbG9jYWxpemVkOworCisgICAgICAgIGNvbnNvbGUuZXJyb3IoIkxvY2FsaXphdGlv
biBmb3Igc3RyaW5nIFwiIiArIGRldmVsb3BtZW50U3RyaW5nICsgIlwiIG5vdCBmb3VuZC4iKTsK
KyAgICAgICAgcmV0dXJuICJMT0NBTElaRUQgU1RSSU5HIE5PVCBGT1VORCI7CisgICAgfSwKKwor
ICAgIGxpc3RlbkZvcjogZnVuY3Rpb24oZWxlbWVudCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VD
YXB0dXJlKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB1c2VDYXB0dXJlID09PSAndW5kZWZp
bmVkJykKKyAgICAgICAgICAgIHVzZUNhcHR1cmUgPSBmYWxzZTsKKworICAgICAgICBpZiAoISh0
aGlzLmxpc3RlbmVyc1tldmVudE5hbWVdIGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAg
dGhpcy5saXN0ZW5lcnNbZXZlbnROYW1lXSA9IFtdOworICAgICAgICB0aGlzLmxpc3RlbmVyc1tl
dmVudE5hbWVdLnB1c2goe2VsZW1lbnQ6ZWxlbWVudCwgaGFuZGxlcjpoYW5kbGVyLCB1c2VDYXB0
dXJlOnVzZUNhcHR1cmV9KTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZSwgdGhpcywgdXNlQ2FwdHVyZSk7CisgICAgfSwKKworICAgIHN0b3BMaXN0ZW5pbmdGb3I6
IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSkKKyAgICB7
CisgICAgICAgIGlmICh0eXBlb2YgdXNlQ2FwdHVyZSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAg
ICAgICB1c2VDYXB0dXJlID0gZmFsc2U7CisKKyAgICAgICAgaWYgKCEodGhpcy5saXN0ZW5lcnNb
ZXZlbnROYW1lXSBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLmxpc3RlbmVyc1tldmVudE5hbWVdID0gdGhpcy5saXN0ZW5lcnNbZXZlbnROYW1l
XS5maWx0ZXIoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgICAgIHJldHVybiAhKGVudHJ5LmVs
ZW1lbnQgPT09IGVsZW1lbnQgJiYgZW50cnkuaGFuZGxlciA9PT0gaGFuZGxlciAmJiBlbnRyeS51
c2VDYXB0dXJlID09PSB1c2VDYXB0dXJlKTsKKyAgICAgICAgfSk7CisgICAgICAgIGVsZW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIHVzZUNhcHR1cmUpOworICAgIH0s
CisKKyAgICBhZGRWaWRlb0xpc3RlbmVyczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9y
IChuYW1lIGluIHRoaXMuSGFuZGxlZFZpZGVvRXZlbnRzKSB7CisgICAgICAgICAgICB0aGlzLmxp
c3RlbkZvcih0aGlzLnZpZGVvLCBuYW1lLCB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tuYW1lXSk7
CisgICAgICAgIH07CisKKyAgICAgICAgLyogdGV4dCB0cmFja3MgKi8KKyAgICAgICAgdGhpcy5s
aXN0ZW5Gb3IodGhpcy52aWRlby50ZXh0VHJhY2tzLCAnY2hhbmdlJywgdGhpcy5oYW5kbGVUZXh0
VHJhY2tDaGFuZ2UpOworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLnZpZGVvLnRleHRUcmFj
a3MsICdhZGR0cmFjaycsIHRoaXMuaGFuZGxlVGV4dFRyYWNrQWRkKTsKKyAgICAgICAgdGhpcy5s
aXN0ZW5Gb3IodGhpcy52aWRlby50ZXh0VHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLmhhbmRs
ZVRleHRUcmFja1JlbW92ZSk7CisKKyAgICAgICAgLyogYXVkaW8gdHJhY2tzICovCisgICAgICAg
IHRoaXMubGlzdGVuRm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdjaGFuZ2UnLCB0aGlzLnVw
ZGF0ZUhhc0F1ZGlvKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy52aWRlby5hdWRpb1Ry
YWNrcywgJ2FkZHRyYWNrJywgdGhpcy51cGRhdGVIYXNBdWRpbyk7CisgICAgICAgIHRoaXMubGlz
dGVuRm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdyZW1vdmV0cmFjaycsIHRoaXMudXBkYXRl
SGFzQXVkaW8pOworCisgICAgICAgIC8qIHZpZGVvIHRyYWNrcyAqLworICAgICAgICB0aGlzLmxp
c3RlbkZvcih0aGlzLnZpZGVvLnZpZGVvVHJhY2tzLCAnY2hhbmdlJywgdGhpcy51cGRhdGVIYXNW
aWRlbyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMudmlkZW8udmlkZW9UcmFja3MsICdh
ZGR0cmFjaycsIHRoaXMudXBkYXRlSGFzVmlkZW8pOworICAgICAgICB0aGlzLmxpc3RlbkZvcih0
aGlzLnZpZGVvLnZpZGVvVHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLnVwZGF0ZUhhc1ZpZGVv
KTsKKworICAgICAgICAvKiBjb250cm9scyBhdHRyaWJ1dGUgKi8KKyAgICAgICAgdGhpcy5jb250
cm9sc09ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5oYW5kbGVDb250cm9sc0No
YW5nZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVyLm9ic2VydmUo
dGhpcy52aWRlbywgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnY29udHJv
bHMnXSB9KTsKKyAgICB9LAorCisgICAgcmVtb3ZlVmlkZW9MaXN0ZW5lcnM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGZvciAobmFtZSBpbiB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50cykgewor
ICAgICAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKHRoaXMudmlkZW8sIG5hbWUsIHRoaXMu
SGFuZGxlZFZpZGVvRXZlbnRzW25hbWVdKTsKKyAgICAgICAgfTsKKworICAgICAgICAvKiB0ZXh0
IHRyYWNrcyAqLworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRlby50ZXh0
VHJhY2tzLCAnY2hhbmdlJywgdGhpcy5oYW5kbGVUZXh0VHJhY2tDaGFuZ2UpOworICAgICAgICB0
aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRlby50ZXh0VHJhY2tzLCAnYWRkdHJhY2snLCB0
aGlzLmhhbmRsZVRleHRUcmFja0FkZCk7CisgICAgICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0
aGlzLnZpZGVvLnRleHRUcmFja3MsICdyZW1vdmV0cmFjaycsIHRoaXMuaGFuZGxlVGV4dFRyYWNr
UmVtb3ZlKTsKKworICAgICAgICAvKiBhdWRpbyB0cmFja3MgKi8KKyAgICAgICAgdGhpcy5zdG9w
TGlzdGVuaW5nRm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdjaGFuZ2UnLCB0aGlzLnVwZGF0
ZUhhc0F1ZGlvKTsKKyAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKHRoaXMudmlkZW8uYXVk
aW9UcmFja3MsICdhZGR0cmFjaycsIHRoaXMudXBkYXRlSGFzQXVkaW8pOworICAgICAgICB0aGlz
LnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRlby5hdWRpb1RyYWNrcywgJ3JlbW92ZXRyYWNrJywg
dGhpcy51cGRhdGVIYXNBdWRpbyk7CisKKyAgICAgICAgLyogdmlkZW8gdHJhY2tzICovCisgICAg
ICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLnZpZGVvVHJhY2tzLCAnY2hhbmdl
JywgdGhpcy51cGRhdGVIYXNWaWRlbyk7CisgICAgICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0
aGlzLnZpZGVvLnZpZGVvVHJhY2tzLCAnYWRkdHJhY2snLCB0aGlzLnVwZGF0ZUhhc1ZpZGVvKTsK
KyAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKHRoaXMudmlkZW8udmlkZW9UcmFja3MsICdy
ZW1vdmV0cmFjaycsIHRoaXMudXBkYXRlSGFzVmlkZW8pOworCisgICAgICAgIC8qIGNvbnRyb2xz
IGF0dHJpYnV0ZSAqLworICAgICAgICB0aGlzLmNvbnRyb2xzT2JzZXJ2ZXIuZGlzY29ubmVjdCgp
OworICAgICAgICBkZWxldGUodGhpcy5jb250cm9sc09ic2VydmVyKTsKKyAgICB9LAorCisgICAg
aGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHByZXZlbnRE
ZWZhdWx0ID0gZmFsc2U7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChldmVudC50
YXJnZXQgPT09IHRoaXMudmlkZW8pIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlck5hbWUg
PSB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tldmVudC50eXBlXTsKKyAgICAgICAgICAgICAgICB2
YXIgaGFuZGxlciA9IHRoaXNbaGFuZGxlck5hbWVdOworICAgICAgICAgICAgICAgIGlmIChoYW5k
bGVyICYmIGhhbmRsZXIgaW5zdGFuY2VvZiBGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
aGFuZGxlci5jYWxsKHRoaXMsIGV2ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCEodGhpcy5saXN0ZW5lcnNbZXZlbnQudHlwZV0gaW5zdGFuY2VvZiBBcnJheSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tldmVudC50
eXBlXS5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5
LmVsZW1lbnQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgZW50cnkuaGFuZGxlciBpbnN0YW5j
ZW9mIEZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdCB8PSBlbnRy
eS5oYW5kbGVyLmNhbGwodGhpcywgZXZlbnQpOworICAgICAgICAgICAgfSwgdGhpcyk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5jb25zb2xlKQorICAgICAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJl
dmVudERlZmF1bHQpIHsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBjcmVhdGVCYXNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgYmFzZSA9IHRoaXMu
YmFzZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBiYXNlLnNldEF0
dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMnKTsKKyAgICAgICAgdGhp
cy5saXN0ZW5Gb3IoYmFzZSwgJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlV3JhcHBlck1vdXNlTW92
ZSk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGJhc2UsICdtb3VzZW91dCcsIHRoaXMuaGFuZGxl
V3JhcHBlck1vdXNlT3V0KTsKKyAgICAgICAgaWYgKHRoaXMuaG9zdC50ZXh0VHJhY2tDb250YWlu
ZXIpCisgICAgICAgICAgICBiYXNlLmFwcGVuZENoaWxkKHRoaXMuaG9zdC50ZXh0VHJhY2tDb250
YWluZXIpOworICAgIH0sCisKKyAgICBzaG91bGRIYXZlQW55VUk6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLnNob3VsZEhhdmVDb250cm9scygpIHx8ICh0aGlzLnZpZGVv
LnRleHRUcmFja3MgJiYgdGhpcy52aWRlby50ZXh0VHJhY2tzLmxlbmd0aCk7CisgICAgfSwKKwor
ICAgIHNob3VsZEhhdmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMudmlkZW8uY29udHJvbHMgfHwgdGhpcy5pc0Z1bGxTY3JlZW4oKTsKKyAgICB9LAorCisg
ICAgc2V0TmVlZHNUaW1lbGluZU1ldHJpY3NVcGRhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMudGltZWxpbmVNZXRyaWNzTmVlZHNVcGRhdGUgPSB0cnVlOworICAgIH0sCisKKyAg
ICB1cGRhdGVUaW1lbGluZU1ldHJpY3NJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMudGltZWxpbmVNZXRyaWNzTmVlZHNVcGRhdGUpIHsKKyAgICAgICAgICAgIHRo
aXMudGltZWxpbmVMZWZ0ID0gdGhpcy5jb250cm9scy50aW1lbGluZS5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgdGhpcy50aW1lbGluZVdpZHRoID0gdGhpcy5jb250cm9scy50aW1lbGluZS5vZmZz
ZXRXaWR0aDsKKyAgICAgICAgICAgIHRoaXMudGltZWxpbmVIZWlnaHQgPSB0aGlzLmNvbnRyb2xz
LnRpbWVsaW5lLm9mZnNldEhlaWdodDsKKyAgICAgICAgICAgIHRoaXMudGltZWxpbmVNZXRyaWNz
TmVlZHNVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICB1cGRhdGVCYXNl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5zaG91bGRIYXZlQW55VUkoKSkg
eworICAgICAgICAgICAgaWYgKCF0aGlzLmJhc2UucGFyZW50Tm9kZSkgeworICAgICAgICAgICAg
ICAgIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmJhc2UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRoaXMuYmFzZS5wYXJlbnROb2RlKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5iYXNlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5iYXNl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAgICBjcmVhdGVDb250cm9s
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHBhbmVsQ29tcG9zaXRlZFBhcmVudCA9
IHRoaXMuY29udHJvbHMucGFuZWxDb21wb3NpdGVkUGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIHBhbmVsQ29tcG9zaXRlZFBhcmVudC5zZXRBdHRyaWJ1dGUo
J3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLWNvbXBvc2l0ZWQtcGFyZW50
Jyk7CisKKyAgICAgICAgdmFyIHBhbmVsID0gdGhpcy5jb250cm9scy5wYW5lbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBwYW5lbC5zZXRBdHRyaWJ1dGUoJ3BzZXVk
bycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsJyk7CisgICAgICAgIHBhbmVsLnNldEF0
dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICh0aGlzLmlzQXVkaW8oKSA/IHRoaXMuVUlTdHJpbmcoJ0F1
ZGlvIFBsYXliYWNrJykgOiB0aGlzLlVJU3RyaW5nKCdWaWRlbyBQbGF5YmFjaycpKSk7CisgICAg
ICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgncm9sZScsICd0b29sYmFyJyk7CisgICAgICAgIHRoaXMu
bGlzdGVuRm9yKHBhbmVsLCAnbW91c2Vkb3duJywgdGhpcy5oYW5kbGVQYW5lbE1vdXNlRG93bik7
CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAndHJhbnNpdGlvbmVuZCcsIHRoaXMuaGFu
ZGxlUGFuZWxUcmFuc2l0aW9uRW5kKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IocGFuZWwsICdj
bGljaycsIHRoaXMuaGFuZGxlUGFuZWxDbGljayk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBh
bmVsLCAnZGJsY2xpY2snLCB0aGlzLmhhbmRsZVBhbmVsQ2xpY2spOworCisgICAgICAgIHZhciBy
ZXdpbmRCdXR0b24gPSB0aGlzLmNvbnRyb2xzLnJld2luZEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2J1dHRvbicpOworICAgICAgICByZXdpbmRCdXR0b24uc2V0QXR0cmlidXRlKCdw
c2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXdpbmQtYnV0dG9uJyk7CisgICAgICAg
IHJld2luZEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdS
ZXdpbmQgIyNzZWMjIyBTZWNvbmRzJywgJyMjc2VjIyMnLCB0aGlzLlJld2luZEFtb3VudCkpOwor
ICAgICAgICB0aGlzLmxpc3RlbkZvcihyZXdpbmRCdXR0b24sICdjbGljaycsIHRoaXMuaGFuZGxl
UmV3aW5kQnV0dG9uQ2xpY2tlZCk7CisKKyAgICAgICAgdmFyIHNlZWtCYWNrQnV0dG9uID0gdGhp
cy5jb250cm9scy5zZWVrQmFja0J1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRv
bicpOworICAgICAgICBzZWVrQmFja0J1dHRvbi5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24nKTsKKyAgICAgICAgc2Vla0JhY2tC
dXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5VSVN0cmluZygnUmV3aW5kJykp
OworICAgICAgICB0aGlzLmxpc3RlbkZvcihzZWVrQmFja0J1dHRvbiwgJ21vdXNlZG93bicsIHRo
aXMuaGFuZGxlU2Vla0JhY2tNb3VzZURvd24pOworICAgICAgICB0aGlzLmxpc3RlbkZvcihzZWVr
QmFja0J1dHRvbiwgJ21vdXNldXAnLCB0aGlzLmhhbmRsZVNlZWtCYWNrTW91c2VVcCk7CisKKyAg
ICAgICAgdmFyIHNlZWtGb3J3YXJkQnV0dG9uID0gdGhpcy5jb250cm9scy5zZWVrRm9yd2FyZEJ1
dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOworICAgICAgICBzZWVrRm9y
d2FyZEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXNlZWstZm9yd2FyZC1idXR0b24nKTsKKyAgICAgICAgc2Vla0ZvcndhcmRCdXR0b24uc2V0QXR0
cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5VSVN0cmluZygnRmFzdCBGb3J3YXJkJykpOworICAg
ICAgICB0aGlzLmxpc3RlbkZvcihzZWVrRm9yd2FyZEJ1dHRvbiwgJ21vdXNlZG93bicsIHRoaXMu
aGFuZGxlU2Vla0ZvcndhcmRNb3VzZURvd24pOworICAgICAgICB0aGlzLmxpc3RlbkZvcihzZWVr
Rm9yd2FyZEJ1dHRvbiwgJ21vdXNldXAnLCB0aGlzLmhhbmRsZVNlZWtGb3J3YXJkTW91c2VVcCk7
CisKKyAgICAgICAgdmFyIHBsYXlCdXR0b24gPSB0aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKKyAgICAgICAgcGxheUJ1dHRvbi5zZXRB
dHRyaWJ1dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uJyk7
CisgICAgICAgIHBsYXlCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5VSVN0
cmluZygnUGxheScpKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IocGxheUJ1dHRvbiwgJ2NsaWNr
JywgdGhpcy5oYW5kbGVQbGF5QnV0dG9uQ2xpY2tlZCk7CisKKyAgICAgICAgdmFyIHN0YXR1c0Rp
c3BsYXkgPSB0aGlzLmNvbnRyb2xzLnN0YXR1c0Rpc3BsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgc3RhdHVzRGlzcGxheS5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycs
ICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXN0YXR1cy1kaXNwbGF5Jyk7CisgICAgICAgIHN0YXR1
c0Rpc3BsYXkuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKworICAgICAg
ICB2YXIgdGltZWxpbmVCb3ggPSB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lQm94ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHRpbWVsaW5lQm94LnNldEF0dHJpYnV0ZSgn
cHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyJyk7CisK
KyAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gdGhpcy5jb250cm9scy5jdXJyZW50VGltZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBjdXJyZW50VGltZS5zZXRBdHRy
aWJ1dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNw
bGF5Jyk7CisgICAgICAgIGN1cnJlbnRUaW1lLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRo
aXMuVUlTdHJpbmcoJ0VsYXBzZWQnKSk7CisgICAgICAgIGN1cnJlbnRUaW1lLnNldEF0dHJpYnV0
ZSgncm9sZScsICd0aW1lcicpOworCisgICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuY29udHJv
bHMudGltZWxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgICAgICB0
aGlzLnRpbWVsaW5lSUQgPSArK0NvbnRyb2xsZXIuZ0xhc3RUaW1lbGluZUlkOworICAgICAgICB0
aW1lbGluZS5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lJyk7CisgICAgICAgIHRpbWVsaW5lLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRo
aXMuVUlTdHJpbmcoJ0R1cmF0aW9uJykpOworICAgICAgICB0aW1lbGluZS5zdHlsZS5iYWNrZ3Jv
dW5kSW1hZ2UgPSAnLXdlYmtpdC1jYW52YXModGltZWxpbmUtJyArIHRoaXMudGltZWxpbmVJRCAr
ICcpJzsKKyAgICAgICAgdGltZWxpbmUudHlwZSA9ICdyYW5nZSc7CisgICAgICAgIHRoaXMubGlz
dGVuRm9yKHRpbWVsaW5lLCAnaW5wdXQnLCB0aGlzLmhhbmRsZVRpbWVsaW5lQ2hhbmdlKTsKKyAg
ICAgICAgdGhpcy5saXN0ZW5Gb3IodGltZWxpbmUsICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZVRp
bWVsaW5lTW91c2VPdmVyKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGltZWxpbmUsICdtb3Vz
ZW91dCcsIHRoaXMuaGFuZGxlVGltZWxpbmVNb3VzZU91dCk7CisgICAgICAgIHRoaXMubGlzdGVu
Rm9yKHRpbWVsaW5lLCAnbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVUaW1lbGluZU1vdXNlTW92ZSk7
CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRpbWVsaW5lLCAnbW91c2Vkb3duJywgdGhpcy5oYW5k
bGVUaW1lbGluZU1vdXNlRG93bik7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRpbWVsaW5lLCAn
bW91c2V1cCcsIHRoaXMuaGFuZGxlVGltZWxpbmVNb3VzZVVwKTsKKyAgICAgICAgdGltZWxpbmUu
c3RlcCA9IC4wMTsKKworICAgICAgICB2YXIgdGh1bWJuYWlsVHJhY2sgPSB0aGlzLmNvbnRyb2xz
LnRodW1ibmFpbFRyYWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
IHRodW1ibmFpbFRyYWNrLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnRodW1ibmFpbFRy
YWNrKTsKKworICAgICAgICB2YXIgdGh1bWJuYWlsID0gdGhpcy5jb250cm9scy50aHVtYm5haWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgdGh1bWJuYWlsLmNsYXNz
TGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnRodW1ibmFpbCk7CisKKyAgICAgICAgdmFyIHRodW1i
bmFpbEltYWdlID0gdGhpcy5jb250cm9scy50aHVtYm5haWxJbWFnZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2ltZycpOworICAgICAgICB0aHVtYm5haWxJbWFnZS5jbGFzc0xpc3QuYWRkKHRo
aXMuQ2xhc3NOYW1lcy50aHVtYm5haWxJbWFnZSk7CisKKyAgICAgICAgdmFyIHJlbWFpbmluZ1Rp
bWUgPSB0aGlzLmNvbnRyb2xzLnJlbWFpbmluZ1RpbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgcmVtYWluaW5nVGltZS5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICct
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXknKTsKKyAgICAgICAg
cmVtYWluaW5nVGltZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdS
ZW1haW5pbmcnKSk7CisgICAgICAgIHJlbWFpbmluZ1RpbWUuc2V0QXR0cmlidXRlKCdyb2xlJywg
J3RpbWVyJyk7CisKKyAgICAgICAgdmFyIG11dGVCb3ggPSB0aGlzLmNvbnRyb2xzLm11dGVCb3gg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgbXV0ZUJveC5jbGFzc0xp
c3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5tdXRlQm94KTsKKworICAgICAgICB2YXIgbXV0ZUJ1dHRv
biA9IHRoaXMuY29udHJvbHMubXV0ZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1
dHRvbicpOworICAgICAgICBtdXRlQnV0dG9uLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJr
aXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24nKTsKKyAgICAgICAgbXV0ZUJ1dHRvbi5zZXRB
dHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdNdXRlJykpOworICAgICAgICB0
aGlzLmxpc3RlbkZvcihtdXRlQnV0dG9uLCAnY2xpY2snLCB0aGlzLmhhbmRsZU11dGVCdXR0b25D
bGlja2VkKTsKKworICAgICAgICB2YXIgbWluQnV0dG9uID0gdGhpcy5jb250cm9scy5taW5CdXR0
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKKyAgICAgICAgbWluQnV0dG9u
LnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLW1p
bi1idXR0b24nKTsKKyAgICAgICAgbWluQnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcs
IHRoaXMuVUlTdHJpbmcoJ01pbmltdW0gVm9sdW1lJykpOworICAgICAgICB0aGlzLmxpc3RlbkZv
cihtaW5CdXR0b24sICdjbGljaycsIHRoaXMuaGFuZGxlTWluQnV0dG9uQ2xpY2tlZCk7CisKKyAg
ICAgICAgdmFyIG1heEJ1dHRvbiA9IHRoaXMuY29udHJvbHMubWF4QnV0dG9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CisgICAgICAgIG1heEJ1dHRvbi5zZXRBdHRyaWJ1dGUo
J3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1tYXgtYnV0dG9uJyk7Cisg
ICAgICAgIG1heEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5n
KCdNYXhpbXVtIFZvbHVtZScpKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IobWF4QnV0dG9uLCAn
Y2xpY2snLCB0aGlzLmhhbmRsZU1heEJ1dHRvbkNsaWNrZWQpOworCisgICAgICAgIHZhciB2b2x1
bWVCb3ggPSB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICB2b2x1bWVCb3guc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtp
dC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcicpOworICAgICAgICB2b2x1
bWVCb3guY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMudm9sdW1lQm94KTsKKworICAgICAg
ICB2YXIgdm9sdW1lID0gdGhpcy5jb250cm9scy52b2x1bWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpbnB1dCcpOworICAgICAgICB2b2x1bWUuc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyJyk7CisgICAgICAgIHZvbHVtZS5zZXRB
dHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdWb2x1bWUnKSk7CisgICAgICAg
IHZvbHVtZS50eXBlID0gJ3JhbmdlJzsKKyAgICAgICAgdm9sdW1lLm1pbiA9IDA7CisgICAgICAg
IHZvbHVtZS5tYXggPSAxOworICAgICAgICB2b2x1bWUuc3RlcCA9IC4wMTsKKyAgICAgICAgdGhp
cy5saXN0ZW5Gb3Iodm9sdW1lLCAnY2hhbmdlJywgdGhpcy5oYW5kbGVWb2x1bWVTbGlkZXJDaGFu
Z2UpOworCisgICAgICAgIHZhciBjYXB0aW9uQnV0dG9uID0gdGhpcy5jb250cm9scy5jYXB0aW9u
QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CisgICAgICAgIGNhcHRp
b25CdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy10
b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbicpOworICAgICAgICBjYXB0aW9uQnV0dG9uLnNl
dEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ0NhcHRpb25zJykpOworICAg
ICAgICBjYXB0aW9uQnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcsICd0cnVlJyk7
CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGNhcHRpb25CdXR0b24sICdjbGljaycsIHRoaXMuaGFu
ZGxlQ2FwdGlvbkJ1dHRvbkNsaWNrZWQpOworCisgICAgICAgIHZhciBmdWxsc2NyZWVuQnV0dG9u
ID0gdGhpcy5jb250cm9scy5mdWxsc2NyZWVuQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYnV0dG9uJyk7CisgICAgICAgIGZ1bGxzY3JlZW5CdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1
ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbicpOworICAgICAg
ICBmdWxsc2NyZWVuQnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJp
bmcoJ0Rpc3BsYXkgRnVsbCBTY3JlZW4nKSk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGZ1bGxz
Y3JlZW5CdXR0b24sICdjbGljaycsIHRoaXMuaGFuZGxlRnVsbHNjcmVlbkJ1dHRvbkNsaWNrZWQp
OworICAgIH0sCisKKyAgICBzZXRDb250cm9sc1R5cGU6IGZ1bmN0aW9uKHR5cGUpCisgICAgewor
ICAgICAgICBpZiAodHlwZSA9PT0gdGhpcy5jb250cm9sc1R5cGUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHRoaXMuY29udHJvbHNUeXBlID0gdHlwZTsKKworICAgICAgICB0aGlzLnJl
Y29ubmVjdENvbnRyb2xzKCk7CisgICAgfSwKKworICAgIHNldElzTGl2ZTogZnVuY3Rpb24obGl2
ZSkKKyAgICB7CisgICAgICAgIGlmIChsaXZlID09PSB0aGlzLmlzTGl2ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5pc0xpdmUgPSBsaXZlOworCisgICAgICAgIHRoaXMudXBk
YXRlU3RhdHVzRGlzcGxheSgpOworCisgICAgICAgIHRoaXMucmVjb25uZWN0Q29udHJvbHMoKTsK
KyAgICB9LAorCisgICAgcmVjb25uZWN0Q29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuZGlzY29ubmVjdENvbnRyb2xzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuY29udHJv
bHNUeXBlID09PSBDb250cm9sbGVyLklubGluZUNvbnRyb2xzKQorICAgICAgICAgICAgdGhpcy5j
b25maWd1cmVJbmxpbmVDb250cm9scygpOworICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xz
VHlwZSA9PSBDb250cm9sbGVyLkZ1bGxTY3JlZW5Db250cm9scykKKyAgICAgICAgICAgIHRoaXMu
Y29uZmlndXJlRnVsbFNjcmVlbkNvbnRyb2xzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuc2hvdWxk
SGF2ZUNvbnRyb2xzKCkpCisgICAgICAgICAgICB0aGlzLmFkZENvbnRyb2xzKCk7CisgICAgfSwK
KworICAgIGRpc2Nvbm5lY3RDb250cm9sczogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBmb3IgKGl0ZW0gaW4gdGhpcy5jb250cm9scykgeworICAgICAgICAgICAgdmFyIGNvbnRyb2wg
PSB0aGlzLmNvbnRyb2xzW2l0ZW1dOworICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgY29udHJv
bC5wYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIGNvbnRyb2wucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChjb250cm9sKTsKKyAgICAgICB9CisgICAgfSwKKworICAgIGNvbmZpZ3VyZUlubGluZUNv
bnRyb2xzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNMaXZlKQorICAg
ICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnJl
d2luZEJ1dHRvbik7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5kQ2hpbGQodGhp
cy5jb250cm9scy5wbGF5QnV0dG9uKTsKKyAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBl
bmRDaGlsZCh0aGlzLmNvbnRyb2xzLnN0YXR1c0Rpc3BsYXkpOworICAgICAgICBpZiAoIXRoaXMu
aXNMaXZlKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRo
aXMuY29udHJvbHMudGltZWxpbmVCb3gpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy50aW1l
bGluZUJveC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLmN1cnJlbnRUaW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuY29udHJvbHMudGltZWxpbmVCb3guYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy50
aHVtYm5haWxUcmFjayk7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRodW1ibmFpbFRyYWNr
LmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMudGltZWxpbmUpOworICAgICAgICAgICAgdGhpcy5j
b250cm9scy50aHVtYm5haWxUcmFjay5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnRodW1ibmFp
bCk7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRodW1ibmFpbC5hcHBlbmRDaGlsZCh0aGlz
LmNvbnRyb2xzLnRodW1ibmFpbEltYWdlKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMudGlt
ZWxpbmVCb3guYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5yZW1haW5pbmdUaW1lKTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJv
bHMubXV0ZUJveCk7CisgICAgICAgIHRoaXMuY29udHJvbHMubXV0ZUJveC5hcHBlbmRDaGlsZCh0
aGlzLmNvbnRyb2xzLnZvbHVtZUJveCk7CisgICAgICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94
LmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMudm9sdW1lKTsKKyAgICAgICAgdGhpcy5jb250cm9s
cy5tdXRlQm94LmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMubXV0ZUJ1dHRvbik7CisgICAgICAg
IHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5jYXB0aW9uQnV0
dG9uKTsKKyAgICAgICAgaWYgKCF0aGlzLmlzQXVkaW8oKSkKKyAgICAgICAgICAgIHRoaXMuY29u
dHJvbHMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5mdWxsc2NyZWVuQnV0dG9uKTsK
KworICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdsZWZ0
Jyk7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Rv
cCcpOworICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdi
b3R0b20nKTsKKyAgICB9LAorCisgICAgY29uZmlndXJlRnVsbFNjcmVlbkNvbnRyb2xzOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRo
aXMuY29udHJvbHMudm9sdW1lQm94KTsKKyAgICAgICAgdGhpcy5jb250cm9scy52b2x1bWVCb3gu
YXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5taW5CdXR0b24pOworICAgICAgICB0aGlzLmNvbnRy
b2xzLnZvbHVtZUJveC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnZvbHVtZSk7CisgICAgICAg
IHRoaXMuY29udHJvbHMudm9sdW1lQm94LmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMubWF4QnV0
dG9uKTsKKyAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRy
b2xzLnNlZWtCYWNrQnV0dG9uKTsKKyAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBlbmRD
aGlsZCh0aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24pOworICAgICAgICB0aGlzLmNvbnRyb2xzLnBh
bmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuc2Vla0ZvcndhcmRCdXR0b24pOworICAgICAg
ICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuY2FwdGlvbkJ1
dHRvbik7CisgICAgICAgIGlmICghdGhpcy5pc0F1ZGlvKCkpCisgICAgICAgICAgICB0aGlzLmNv
bnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuZnVsbHNjcmVlbkJ1dHRvbik7
CisgICAgICAgIGlmICghdGhpcy5pc0xpdmUpIHsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy50aW1lbGluZUJveCk7CisgICAgICAgICAg
ICB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lQm94LmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuY3Vy
cmVudFRpbWUpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy50aW1lbGluZUJveC5hcHBlbmRD
aGlsZCh0aGlzLmNvbnRyb2xzLnRodW1ibmFpbFRyYWNrKTsKKyAgICAgICAgICAgIHRoaXMuY29u
dHJvbHMudGh1bWJuYWlsVHJhY2suYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy50aW1lbGluZSk7
CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRodW1ibmFpbFRyYWNrLmFwcGVuZENoaWxkKHRo
aXMuY29udHJvbHMudGh1bWJuYWlsKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMudGh1bWJu
YWlsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMudGh1bWJuYWlsSW1hZ2UpOworICAgICAgICAg
ICAgdGhpcy5jb250cm9scy50aW1lbGluZUJveC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnJl
bWFpbmluZ1RpbWUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5zdGF0dXNEaXNwbGF5KTsKKyAgICB9LAor
CisgICAgdXBkYXRlQ29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LmlzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sc1R5cGUoQ29udHJv
bGxlci5GdWxsU2NyZWVuQ29udHJvbHMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlz
LnNldENvbnRyb2xzVHlwZShDb250cm9sbGVyLklubGluZUNvbnRyb2xzKTsKKworICAgICAgICB0
aGlzLnNldE5lZWRzVGltZWxpbmVNZXRyaWNzVXBkYXRlKCk7CisgICAgfSwKKworICAgIHVwZGF0
ZVN0YXR1c0Rpc3BsYXk6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
dmlkZW8uZXJyb3IgIT09IG51bGwpCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnN0YXR1c0Rp
c3BsYXkuaW5uZXJUZXh0ID0gdGhpcy5VSVN0cmluZygnRXJyb3InKTsKKyAgICAgICAgZWxzZSBp
ZiAodGhpcy5pc0xpdmUgJiYgdGhpcy52aWRlby5yZWFkeVN0YXRlID49IEhUTUxNZWRpYUVsZW1l
bnQuSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnN0YXR1c0Rp
c3BsYXkuaW5uZXJUZXh0ID0gdGhpcy5VSVN0cmluZygnTGl2ZSBCcm9hZGNhc3QnKTsKKyAgICAg
ICAgZWxzZSBpZiAodGhpcy52aWRlby5uZXR3b3JrU3RhdGUgPT09IEhUTUxNZWRpYUVsZW1lbnQu
TkVUV09SS19MT0FESU5HKQorICAgICAgICAgICAgdGhpcy5jb250cm9scy5zdGF0dXNEaXNwbGF5
LmlubmVyVGV4dCA9IHRoaXMuVUlTdHJpbmcoJ0xvYWRpbmcnKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGhpcy5jb250cm9scy5zdGF0dXNEaXNwbGF5LmlubmVyVGV4dCA9ICcnOworCisg
ICAgICAgIHRoaXMuc2V0U3RhdHVzSGlkZGVuKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnZpZGVvLnJl
YWR5U3RhdGUgPiBIVE1MTWVkaWFFbGVtZW50LkhBVkVfTk9USElORyAmJiAhdGhpcy52aWRlby5l
cnJvcik7CisgICAgfSwKKworICAgIGhhbmRsZUxvYWRTdGFydDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKKyAgICAgICAgdGhpcy51
cGRhdGVQcm9ncmVzcygpOworICAgIH0sCisKKyAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKKyAgICB9LAor
CisgICAgaGFuZGxlQWJvcnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51
cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisgICAgfSwKKworICAgIGhhbmRsZVN1c3BlbmQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVTdGF0dXNEaXNwbGF5KCk7Cisg
ICAgfSwKKworICAgIGhhbmRsZVN0YWxsZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy51cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisgICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jl
c3MoKTsKKyAgICB9LAorCisgICAgaGFuZGxlV2FpdGluZzogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKKyAgICB9LAorCisgICAgaGFu
ZGxlUmVhZHlTdGF0ZUNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlz
LnVwZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICAgICAgdGhpcy51cGRhdGVEdXJhdGlvbigpOworICAg
ICAgICB0aGlzLnVwZGF0ZUNhcHRpb25CdXR0b24oKTsKKyAgICAgICAgdGhpcy51cGRhdGVDYXB0
aW9uQ29udGFpbmVyKCk7CisgICAgICAgIHRoaXMudXBkYXRlRnVsbHNjcmVlbkJ1dHRvbigpOwor
ICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKCk7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVV
cGRhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnNjcnViYmlu
ZykKKyAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZSgpOworICAgIH0sCisKKyAgICBoYW5kbGVE
dXJhdGlvbkNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnVwZGF0
ZUR1cmF0aW9uKCk7CisgICAgICAgIHRoaXMudXBkYXRlVGltZSgpOworICAgICAgICB0aGlzLnVw
ZGF0ZVByb2dyZXNzKCk7CisgICAgfSwKKworICAgIGhhbmRsZVBsYXk6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5zZXRQbGF5aW5nKHRydWUpOworICAgIH0sCisKKyAgICBo
YW5kbGVQYXVzZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnNldFBsYXlp
bmcoZmFsc2UpOworICAgIH0sCisKKyAgICBoYW5kbGVQcm9ncmVzczogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKCk7CisgICAgfSwKKworICAgIGhh
bmRsZVZvbHVtZUNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnVw
ZGF0ZVZvbHVtZSgpOworICAgIH0sCisKKyAgICBoYW5kbGVUZXh0VHJhY2tDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVDYXB0aW9uQ29udGFpbmVyKCk7
CisgICAgfSwKKworICAgIGhhbmRsZVRleHRUcmFja0FkZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB2YXIgdHJhY2sgPSBldmVudC50cmFjazsKKworICAgICAgICBpZiAodGhpcy50
cmFja0hhc1RodW1ibmFpbHModHJhY2spICYmIHRyYWNrLm1vZGUgPT09ICdkaXNhYmxlZCcpCisg
ICAgICAgICAgICB0cmFjay5tb2RlID0gJ2hpZGRlbic7CisKKyAgICAgICAgdGhpcy51cGRhdGVU
aHVtYm5haWwoKTsKKyAgICAgICAgdGhpcy51cGRhdGVDYXB0aW9uQnV0dG9uKCk7CisgICAgICAg
IHRoaXMudXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpOworICAgIH0sCisKKyAgICBoYW5kbGVUZXh0
VHJhY2tSZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVU
aHVtYm5haWwoKTsKKyAgICAgICAgdGhpcy51cGRhdGVDYXB0aW9uQnV0dG9uKCk7CisgICAgICAg
IHRoaXMudXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpOworICAgIH0sCisKKyAgICBpc0Z1bGxTY3Jl
ZW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZpZGVvLndlYmtpdERp
c3BsYXlpbmdGdWxsc2NyZWVuOworICAgIH0sCisKKyAgICBoYW5kbGVGdWxsc2NyZWVuQ2hhbmdl
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudXBkYXRlQmFzZSgpOworICAg
ICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuaXNGdWxsU2Ny
ZWVuKCkpIHsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMuZnVsbHNjcmVlbkJ1dHRvbi5jbGFz
c0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5leGl0KTsKKyAgICAgICAgICAgIHRoaXMuY29udHJv
bHMuZnVsbHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3Ry
aW5nKCdFeGl0IEZ1bGwgU2NyZWVuJykpOworICAgICAgICAgICAgdGhpcy5ob3N0LmVudGVyZWRG
dWxsc2NyZWVuKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LmZ1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuZXhpdCk7
CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24uc2V0QXR0cmlidXRl
KCdhcmlhLWxhYmVsJywgdGhpcy5VSVN0cmluZygnRGlzcGxheSBGdWxsIFNjcmVlbicpKTsKKyAg
ICAgICAgICAgIHRoaXMuaG9zdC5leGl0ZWRGdWxsc2NyZWVuKCk7CisgICAgICAgIH0KKyAgICB9
LAorCisgICAgaGFuZGxlV3JhcHBlck1vdXNlTW92ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICB0aGlzLnNob3dDb250cm9scygpOworICAgICAgICB0aGlzLnJlc2V0SGlkZUNvbnRy
b2xzVGltZXIoKTsKKworICAgICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdmFyIGRlbHRhID0gbmV3IFdlYktpdFBvaW50KGV2ZW50LmNsaWVu
dFggLSB0aGlzLmluaXRpYWxEcmFnTG9jYXRpb24ueCwgZXZlbnQuY2xpZW50WSAtIHRoaXMuaW5p
dGlhbERyYWdMb2NhdGlvbi55KTsKKyAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5zdHlsZS5s
ZWZ0ID0gdGhpcy5pbml0aWFsT2Zmc2V0LnggKyBkZWx0YS54ICsgJ3B4JzsKKyAgICAgICAgdGhp
cy5jb250cm9scy5wYW5lbC5zdHlsZS50b3AgPSB0aGlzLmluaXRpYWxPZmZzZXQueSArIGRlbHRh
LnkgKyAncHgnOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKQorICAgIH0sCisKKyAg
ICBoYW5kbGVXcmFwcGVyTW91c2VPdXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dGhpcy5oaWRlQ29udHJvbHMoKTsKKyAgICAgICAgdGhpcy5jbGVhckhpZGVDb250cm9sc1RpbWVy
KCk7CisgICAgfSwKKworICAgIGhhbmRsZVdyYXBwZXJNb3VzZVVwOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlOworICAgICAgICB0aGlzLnN0
b3BMaXN0ZW5pbmdGb3IodGhpcy5iYXNlLCAnbW91c2V1cCcsICdoYW5kbGVXcmFwcGVyTW91c2VV
cCcsIHRydWUpOworICAgIH0sCisKKyAgICBoYW5kbGVQYW5lbE1vdXNlRG93bjogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9IHRoaXMuY29udHJvbHMu
cGFuZWwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLmlzRnVsbFNj
cmVlbigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRo
aXMuYmFzZSwgJ21vdXNldXAnLCB0aGlzLmhhbmRsZVdyYXBwZXJNb3VzZVVwLCB0cnVlKTsKKyAg
ICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5pbml0aWFsRHJhZ0xv
Y2F0aW9uID0gbmV3IFdlYktpdFBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpOwor
ICAgICAgICB0aGlzLmluaXRpYWxPZmZzZXQgPSBuZXcgV2ViS2l0UG9pbnQoCisgICAgICAgICAg
ICBwYXJzZUludCh0aGlzLmNvbnRyb2xzLnBhbmVsLnN0eWxlLmxlZnQpIHwgMCwKKyAgICAgICAg
ICAgIHBhcnNlSW50KHRoaXMuY29udHJvbHMucGFuZWwuc3R5bGUudG9wKSB8IDAKKyAgICAgICAg
KTsKKyAgICB9LAorCisgICAgaGFuZGxlUGFuZWxUcmFuc2l0aW9uRW5kOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBvcGFjaXR5ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGhpcy5jb250cm9scy5wYW5lbCkub3BhY2l0eTsKKyAgICAgICAgaWYgKHBhcnNlSW50KG9wYWNp
dHkpID4gMCkKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LnJlbW92
ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwor
ICAgIH0sCisKKyAgICBoYW5kbGVQYW5lbENsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIC8vIFByZXZlbnQgY2xpY2tzIGluIHRoZSBwYW5lbCBmcm9tIHBsYXlpbmcgb3IgcGF1
c2luZyB0aGUgdmlkZW8gaW4gYSBNZWRpYURvY3VtZW50LgorICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOworICAgIH0sCisKKyAgICBoYW5kbGVSZXdpbmRCdXR0b25DbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBuZXdUaW1lID0gTWF0aC5tYXgoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWRlby5jdXJyZW50VGltZSAtIHRoaXMu
UmV3aW5kQW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlkZW8u
c2Vla2FibGUuc3RhcnQoMCkpOworICAgICAgICB0aGlzLnZpZGVvLmN1cnJlbnRUaW1lID0gbmV3
VGltZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIGNhblBsYXk6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZpZGVvLnBhdXNlZCB8fCB0aGlzLnZp
ZGVvLmVuZGVkIHx8IHRoaXMudmlkZW8ucmVhZHlTdGF0ZSA8IEhUTUxNZWRpYUVsZW1lbnQuSEFW
RV9NRVRBREFUQTsKKyAgICB9LAorCisgICAgaGFuZGxlUGxheUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuY2FuUGxheSgpKQorICAgICAgICAg
ICAgdGhpcy52aWRlby5wbGF5KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMudmlk
ZW8ucGF1c2UoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIGhhbmRsZVRp
bWVsaW5lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmlkZW8u
ZmFzdFNlZWsodGhpcy5jb250cm9scy50aW1lbGluZS52YWx1ZSk7CisgICAgfSwKKworICAgIGhh
bmRsZVRpbWVsaW5lRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmNv
bnRyb2xzLnRodW1ibmFpbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5zaG93KTsKKyAg
ICB9LAorCisgICAgaGFuZGxlVGltZWxpbmVVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB0aGlzLmNvbnRyb2xzLnRodW1ibmFpbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NO
YW1lcy5zaG93KTsKKyAgICB9LAorCisgICAgaGFuZGxlVGltZWxpbmVNb3VzZU92ZXI6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5jb250cm9scy50aHVtYm5haWwuY2xhc3NM
aXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVs
aW5lTW91c2VPdXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5jb250cm9s
cy50aHVtYm5haWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CisgICAg
fSwKKworICAgIGhhbmRsZVRpbWVsaW5lTW91c2VNb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzLnRodW1ibmFpbC5jbGFzc0xpc3QuY29udGFpbnMo
dGhpcy5DbGFzc05hbWVzLmhpZGRlbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy51cGRhdGVUaW1lbGluZU1ldHJpY3NJZk5lZWRlZCgpOworICAgICAgICB0aGlzLmNvbnRy
b2xzLnRodW1ibmFpbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5zaG93KTsKKyAgICAg
ICAgdmFyIGxvY2FsUG9pbnQgPSB3ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZSh0aGlz
LmNvbnRyb2xzLnRpbWVsaW5lLCBuZXcgV2ViS2l0UG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQu
Y2xpZW50WSkpOworICAgICAgICB2YXIgcGVyY2VudCA9IChsb2NhbFBvaW50LnggLSB0aGlzLnRp
bWVsaW5lTGVmdCkgLyB0aGlzLnRpbWVsaW5lV2lkdGg7CisgICAgICAgIHBlcmNlbnQgPSBNYXRo
Lm1heChNYXRoLm1pbigxLCBwZXJjZW50KSwgMCk7CisgICAgICAgIHRoaXMuY29udHJvbHMudGh1
bWJuYWlsLnN0eWxlLmxlZnQgPSBwZXJjZW50ICogMTAwICsgJyUnOworCisgICAgICAgIHZhciB0
aHVtYm5haWxUaW1lID0gcGVyY2VudCAqIHRoaXMudmlkZW8uZHVyYXRpb247CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy52aWRlby50ZXh0VHJhY2tzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICB2YXIgdHJhY2sgPSB0aGlzLnZpZGVvLnRleHRUcmFja3NbaV07CisgICAgICAg
ICAgICBpZiAoIXRoaXMudHJhY2tIYXNUaHVtYm5haWxzKHRyYWNrKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCF0cmFjay5jdWVzKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRyYWNrLmN1
ZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICB2YXIgY3VlID0gdHJhY2suY3Vlc1tq
XTsKKyAgICAgICAgICAgICAgICBpZiAodGh1bWJuYWlsVGltZSA+PSBjdWUuc3RhcnRUaW1lICYm
IHRodW1ibmFpbFRpbWUgPCBjdWUuZW5kVGltZSkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
LmNvbnRyb2xzLnRodW1ibmFpbEltYWdlLnNyYyA9IGN1ZS50ZXh0OworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVsaW5lTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuc2NydWJiaW5nID0gdHJ1ZTsKKyAgICB9LAorCisgICAgaGFu
ZGxlVGltZWxpbmVNb3VzZVVwOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
c2NydWJiaW5nID0gZmFsc2U7CisKKyAgICAgICAgLy8gRG8gYSBwcmVjaXNlIHNlZWsgd2hlbiB3
ZSBsaWZ0IHRoZSBtb3VzZToKKyAgICAgICAgdGhpcy52aWRlby5jdXJyZW50VGltZSA9IHRoaXMu
Y29udHJvbHMudGltZWxpbmUudmFsdWU7CisgICAgfSwKKworICAgIGhhbmRsZU11dGVCdXR0b25D
bGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmlkZW8ubXV0ZWQg
PSAhdGhpcy52aWRlby5tdXRlZDsKKyAgICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQpCisgICAg
ICAgICAgICB0aGlzLmNvbnRyb2xzLm11dGVCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVs
JywgdGhpcy5VSVN0cmluZygnVW5tdXRlJykpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
LAorCisgICAgaGFuZGxlTWluQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAodGhpcy52aWRlby5tdXRlZCkgeworICAgICAgICAgICAgdGhpcy52aWRlby5t
dXRlZCA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQnV0dG9uLnNldEF0
dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ011dGUnKSk7CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy52aWRlby52b2x1bWUgPSAwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LAorCisgICAgaGFuZGxlTWF4QnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAodGhpcy52aWRlby5tdXRlZCkgeworICAgICAgICAgICAgdGhpcy52aWRl
by5tdXRlZCA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQnV0dG9uLnNl
dEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ011dGUnKSk7CisgICAgICAg
IH0KKyAgICAgICAgdGhpcy52aWRlby52b2x1bWUgPSAxOworICAgIH0sCisKKyAgICBoYW5kbGVW
b2x1bWVTbGlkZXJDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMudmlkZW8ubXV0ZWQpIHsKKyAgICAgICAgICAgIHRoaXMudmlkZW8ubXV0ZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIHRoaXMuY29udHJvbHMubXV0ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEt
bGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdNdXRlJykpOworICAgICAgICB9CisgICAgICAgIHRoaXMu
dmlkZW8udm9sdW1lID0gdGhpcy5jb250cm9scy52b2x1bWUudmFsdWU7CisgICAgfSwKKworICAg
IGhhbmRsZUNhcHRpb25CdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLmNhcHRpb25NZW51KQorICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FwdGlv
bk1lbnUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5idWlsZENhcHRpb25NZW51
KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICB1cGRhdGVGdWxsc2NyZWVu
QnV0dG9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxzY3Jl
ZW5CdXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuLCAhdGhpcy52
aWRlby53ZWJraXRTdXBwb3J0c0Z1bGxzY3JlZW4pOworICAgIH0sCisKKyAgICBoYW5kbGVGdWxs
c2NyZWVuQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5pc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgIHRoaXMudmlkZW8ud2Via2l0RXhpdEZ1
bGxzY3JlZW4oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy52aWRlby53ZWJraXRF
bnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIGhh
bmRsZUNvbnRyb2xzQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgdGhpcy51cGRhdGVCYXNlKCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLnNob3Vs
ZEhhdmVDb250cm9scygpKQorICAgICAgICAgICAgICAgIHRoaXMuYWRkQ29udHJvbHMoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRyb2xzKCk7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5jb25zb2xlKQorICAg
ICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
bmV4dFJhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlz
Lk1heGltdW1TZWVrUmF0ZSwgTWF0aC5hYnModGhpcy52aWRlby5wbGF5YmFja1JhdGUgKiAyKSk7
CisgICAgfSwKKworICAgIGhhbmRsZVNlZWtCYWNrTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuYWN0aW9uQWZ0ZXJTZWVraW5nID0gKHRoaXMuY2FuUGxheSgp
ID8gQ29udHJvbGxlci5QYXVzZUFmdGVyU2Vla2luZyA6IENvbnRyb2xsZXIuUGxheUFmdGVyU2Vl
a2luZyk7CisgICAgICAgIHRoaXMudmlkZW8ucGxheSgpOworICAgICAgICB0aGlzLnZpZGVvLnBs
YXliYWNrUmF0ZSA9IHRoaXMubmV4dFJhdGUoKSAqIC0xOworICAgICAgICB0aGlzLnNlZWtJbnRl
cnZhbCA9IHNldEludGVydmFsKHRoaXMuc2Vla0JhY2tGYXN0ZXIuYmluZCh0aGlzKSwgdGhpcy5T
ZWVrRGVsYXkpOworICAgIH0sCisKKyAgICBzZWVrQmFja0Zhc3RlcjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdGhpcy52aWRlby5wbGF5YmFja1JhdGUgPSB0aGlzLm5leHRSYXRlKCkgKiAt
MTsKKyAgICB9LAorCisgICAgaGFuZGxlU2Vla0JhY2tNb3VzZVVwOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMudmlkZW8ucGxheWJhY2tSYXRlID0gdGhpcy52aWRlby5kZWZh
dWx0UGxheWJhY2tSYXRlOworICAgICAgICBpZiAodGhpcy5hY3Rpb25BZnRlclNlZWtpbmcgPT09
IENvbnRyb2xsZXIuUGF1c2VBZnRlclNlZWtpbmcpCisgICAgICAgICAgICB0aGlzLnZpZGVvLnBh
dXNlKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuYWN0aW9uQWZ0ZXJTZWVraW5nID09PSBDb250
cm9sbGVyLlBsYXlBZnRlclNlZWtpbmcpCisgICAgICAgICAgICB0aGlzLnZpZGVvLnBsYXkoKTsK
KyAgICAgICAgaWYgKHRoaXMuc2Vla0ludGVydmFsKQorICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bCh0aGlzLnNlZWtJbnRlcnZhbCk7CisgICAgfSwKKworICAgIGhhbmRsZVNlZWtGb3J3YXJkTW91
c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuYWN0aW9uQWZ0ZXJT
ZWVraW5nID0gKHRoaXMuY2FuUGxheSgpID8gQ29udHJvbGxlci5QYXVzZUFmdGVyU2Vla2luZyA6
IENvbnRyb2xsZXIuUGxheUFmdGVyU2Vla2luZyk7CisgICAgICAgIHRoaXMudmlkZW8ucGxheSgp
OworICAgICAgICB0aGlzLnZpZGVvLnBsYXliYWNrUmF0ZSA9IHRoaXMubmV4dFJhdGUoKTsKKyAg
ICAgICAgdGhpcy5zZWVrSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0aGlzLnNlZWtGb3J3YXJkRmFz
dGVyLmJpbmQodGhpcyksIHRoaXMuU2Vla0RlbGF5KTsKKyAgICB9LAorCisgICAgc2Vla0Zvcndh
cmRGYXN0ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMudmlkZW8ucGxheWJhY2tS
YXRlID0gdGhpcy5uZXh0UmF0ZSgpOworICAgIH0sCisKKyAgICBoYW5kbGVTZWVrRm9yd2FyZE1v
dXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy52aWRlby5wbGF5YmFj
a1JhdGUgPSB0aGlzLnZpZGVvLmRlZmF1bHRQbGF5YmFja1JhdGU7CisgICAgICAgIGlmICh0aGlz
LmFjdGlvbkFmdGVyU2Vla2luZyA9PT0gQ29udHJvbGxlci5QYXVzZUFmdGVyU2Vla2luZykKKyAg
ICAgICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5hY3Rp
b25BZnRlclNlZWtpbmcgPT09IENvbnRyb2xsZXIuUGxheUFmdGVyU2Vla2luZykKKyAgICAgICAg
ICAgIHRoaXMudmlkZW8ucGxheSgpOworICAgICAgICBpZiAodGhpcy5zZWVrSW50ZXJ2YWwpCisg
ICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuc2Vla0ludGVydmFsKTsKKyAgICB9LAorCisg
ICAgdXBkYXRlRHVyYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBkdXJhdGlv
biA9IHRoaXMudmlkZW8uZHVyYXRpb247CisgICAgICAgIHRoaXMuY29udHJvbHMudGltZWxpbmUu
bWluID0gMDsKKyAgICAgICAgdGhpcy5jb250cm9scy50aW1lbGluZS5tYXggPSBkdXJhdGlvbjsK
KworICAgICAgICB0aGlzLnNldElzTGl2ZShkdXJhdGlvbiA9PT0gTnVtYmVyLlBPU0lUSVZFX0lO
RklOSVRZKTsKKworICAgICAgICB0aGlzLmNvbnRyb2xzLmN1cnJlbnRUaW1lLmNsYXNzTGlzdC50
b2dnbGUodGhpcy5DbGFzc05hbWVzLmhvdXJMb25nVGltZSwgZHVyYXRpb24gPj0gNjAqNjApOwor
ICAgICAgICB0aGlzLmNvbnRyb2xzLnJlbWFpbmluZ1RpbWUuY2xhc3NMaXN0LnRvZ2dsZSh0aGlz
LkNsYXNzTmFtZXMuaG91ckxvbmdUaW1lLCBkdXJhdGlvbiA+PSA2MCo2MCk7CisgICAgfSwKKwor
ICAgIHByb2dyZXNzRmlsbFN0eWxlOiBmdW5jdGlvbihjb250ZXh0KQorICAgIHsKKyAgICAgICAg
dmFyIGhlaWdodCA9IHRoaXMudGltZWxpbmVIZWlnaHQ7CisgICAgICAgIHZhciBncmFkaWVudCA9
IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgaGVpZ2h0KTsKKyAgICAgICAg
Z3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICdyZ2IoMiwgMiwgMiknKTsKKyAgICAgICAgZ3JhZGll
bnQuYWRkQ29sb3JTdG9wKDEsICdyZ2IoMjMsIDIzLCAyMyknKTsKKyAgICAgICAgcmV0dXJuIGdy
YWRpZW50OworICAgIH0sCisKKyAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy51cGRhdGVUaW1lbGluZU1ldHJpY3NJZk5lZWRlZCgpOworCisgICAgICAg
IHZhciB3aWR0aCA9IHRoaXMudGltZWxpbmVXaWR0aDsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRo
aXMudGltZWxpbmVIZWlnaHQ7CisKKyAgICAgICAgdmFyIGNvbnRleHQgPSBkb2N1bWVudC5nZXRD
U1NDYW52YXNDb250ZXh0KCcyZCcsICd0aW1lbGluZS0nICsgdGhpcy50aW1lbGluZUlELCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdo
dCk7CisKKyAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLnByb2dyZXNzRmlsbFN0eWxl
KGNvbnRleHQpOworCisgICAgICAgIHZhciBkdXJhdGlvbiA9IHRoaXMudmlkZW8uZHVyYXRpb247
CisgICAgICAgIHZhciBidWZmZXJlZCA9IHRoaXMudmlkZW8uYnVmZmVyZWQ7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBlbmQgPSBidWZmZXJlZC5sZW5ndGg7IGkgPCBlbmQ7ICsraSkgeworICAg
ICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IGJ1ZmZlcmVkLnN0YXJ0KGkpOworICAgICAgICAgICAg
dmFyIGVuZFRpbWUgPSBidWZmZXJlZC5lbmQoaSk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFgg
PSB3aWR0aCAqIHN0YXJ0VGltZSAvIGR1cmF0aW9uOworICAgICAgICAgICAgdmFyIGVuZFggPSB3
aWR0aCAqIGVuZFRpbWUgLyBkdXJhdGlvbjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
c3RhcnRYLCAwLCBlbmRYIC0gc3RhcnRYLCBoZWlnaHQpOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIGZvcm1hdFRpbWU6IGZ1bmN0aW9uKHRpbWUpCisgICAgeworICAgICAgICBpZiAoaXNOYU4o
dGltZSkpCisgICAgICAgICAgICB0aW1lID0gMDsKKyAgICAgICAgdmFyIGFic1RpbWUgPSBNYXRo
LmFicyh0aW1lKTsKKyAgICAgICAgdmFyIGludFNlY29uZHMgPSBNYXRoLmZsb29yKGFic1RpbWUg
JSA2MCkudG9GaXhlZCgwKTsKKyAgICAgICAgdmFyIGludE1pbnV0ZXMgPSBNYXRoLmZsb29yKChh
YnNUaW1lIC8gNjApICUgNjApLnRvRml4ZWQoMCk7CisgICAgICAgIHZhciBpbnRIb3VycyA9IE1h
dGguZmxvb3IoYWJzVGltZSAvICg2MCAqIDYwKSkudG9GaXhlZCgwKTsKKyAgICAgICAgdmFyIHNp
Z24gPSB0aW1lIDwgMCA/ICctJyA6IFN0cmluZygpOworCisgICAgICAgIGlmIChpbnRIb3VycyA+
IDApCisgICAgICAgICAgICByZXR1cm4gc2lnbiArIGludEhvdXJzICsgJzonICsgU3RyaW5nKCcw
MCcgKyBpbnRNaW51dGVzKS5zbGljZSgtMikgKyAiOiIgKyBTdHJpbmcoJzAwJyArIGludFNlY29u
ZHMpLnNsaWNlKC0yKTsKKworICAgICAgICByZXR1cm4gc2lnbiArIFN0cmluZygnMDAnICsgaW50
TWludXRlcykuc2xpY2UoLTIpICsgIjoiICsgU3RyaW5nKCcwMCcgKyBpbnRTZWNvbmRzKS5zbGlj
ZSgtMikKKyAgICB9LAorCisgICAgdXBkYXRlUGxheWluZzogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5zZXRQbGF5aW5nKCF0aGlzLmNhblBsYXkoKSk7CisgICAgfSwKKworICAgIHNl
dFBsYXlpbmc6IGZ1bmN0aW9uKGlzUGxheWluZykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlz
UGxheWluZyA9PT0gaXNQbGF5aW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlz
LmlzUGxheWluZyA9IGlzUGxheWluZzsKKworICAgICAgICBpZiAoIWlzUGxheWluZykgeworICAg
ICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1l
cy5wYXVzZWQpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wbGF5QnV0dG9uLmNsYXNzTGlz
dC5hZGQodGhpcy5DbGFzc05hbWVzLnBhdXNlZCk7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnBsYXlCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5VSVN0cmluZygnUGxh
eScpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMucGF1c2VkKTsKKyAgICAgICAgICAgIHRo
aXMuY29udHJvbHMucGxheUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5w
YXVzZWQpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wbGF5QnV0dG9uLnNldEF0dHJpYnV0
ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ1BhdXNlJykpOworCisgICAgICAgICAgICB0
aGlzLmhpZGVDb250cm9scygpOworICAgICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1Rp
bWVyKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5hZGQodGhpcy5D
bGFzc05hbWVzLnNob3cpOworICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5y
ZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisKKyAgICAgICAgdGhpcy5zZXROZWVkc1Rp
bWVsaW5lTWV0cmljc1VwZGF0ZSgpOworICAgIH0sCisKKyAgICBoaWRlQ29udHJvbHM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LnJlbW92
ZSh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CisgICAgfSwKKworICAgIGNvbnRyb2xzQXJlSGlkZGVu
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMuY29udHJvbHMucGFuZWwu
Y2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5zaG93KSB8fCB0aGlzLmNvbnRyb2xz
LnBhbmVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICB9
LAorCisgICAgcmVtb3ZlQ29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLmNvbnRyb2xzLnBhbmVsLnBhcmVudE5vZGUpCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnBhbmVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jb250cm9scy5wYW5lbCk7CisgICAg
ICAgIHRoaXMuZGVzdHJveUNhcHRpb25NZW51KCk7CisgICAgfSwKKworICAgIGFkZENvbnRyb2xz
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5j
b250cm9scy5wYW5lbENvbXBvc2l0ZWRQYXJlbnQpOworICAgICAgICB0aGlzLmNvbnRyb2xzLnBh
bmVsQ29tcG9zaXRlZFBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnBhbmVsKTsKKyAg
ICAgICAgdGhpcy5zZXROZWVkc1RpbWVsaW5lTWV0cmljc1VwZGF0ZSgpOworICAgIH0sCisKKyAg
ICB1cGRhdGVUaW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFRpbWUg
PSB0aGlzLnZpZGVvLmN1cnJlbnRUaW1lOworICAgICAgICB2YXIgdGltZVJlbWFpbmluZyA9IGN1
cnJlbnRUaW1lIC0gdGhpcy52aWRlby5kdXJhdGlvbjsKKyAgICAgICAgdGhpcy5jb250cm9scy5j
dXJyZW50VGltZS5pbm5lclRleHQgPSB0aGlzLmZvcm1hdFRpbWUoY3VycmVudFRpbWUpOworICAg
ICAgICB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLnZhbHVlID0gdGhpcy52aWRlby5jdXJyZW50VGlt
ZTsKKyAgICAgICAgdGhpcy5jb250cm9scy5yZW1haW5pbmdUaW1lLmlubmVyVGV4dCA9IHRoaXMu
Zm9ybWF0VGltZSh0aW1lUmVtYWluaW5nKTsKKyAgICB9LAorCisgICAgdXBkYXRlUmVhZHlTdGF0
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVTdGF0dXNEaXNwbGF5KCk7
CisgICAgfSwKKworICAgIHNldFN0YXR1c0hpZGRlbjogZnVuY3Rpb24oaGlkZGVuKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuc3RhdHVzSGlkZGVuID09PSBoaWRkZW4pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5zdGF0dXNIaWRkZW4gPSBoaWRkZW47CisKKyAgICAgICAg
aWYgKGhpZGRlbikgeworICAgICAgICAgICAgdGhpcy5jb250cm9scy5zdGF0dXNEaXNwbGF5LmNs
YXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgICAgICB0aGlzLmNv
bnRyb2xzLmN1cnJlbnRUaW1lLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRl
bik7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLmNsYXNzTGlzdC5yZW1vdmUo
dGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnJlbWFp
bmluZ1RpbWUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICAg
ICAgICAgIHRoaXMuc2V0TmVlZHNUaW1lbGluZU1ldHJpY3NVcGRhdGUoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMuc3RhdHVzRGlzcGxheS5jbGFzc0xpc3Qu
cmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAgICAgICAgdGhpcy5jb250cm9s
cy5jdXJyZW50VGltZS5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAg
ICAgICAgICAgdGhpcy5jb250cm9scy50aW1lbGluZS5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NO
YW1lcy5oaWRkZW4pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5yZW1haW5pbmdUaW1lLmNs
YXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgdHJhY2tIYXNUaHVtYm5haWxzOiBmdW5jdGlvbih0cmFjaykKKyAgICB7CisgICAgICAg
IHJldHVybiB0cmFjay5raW5kID09PSAndGh1bWJuYWlscycgfHwgKHRyYWNrLmtpbmQgPT09ICdt
ZXRhZGF0YScgJiYgdHJhY2subGFiZWwgPT09ICd0aHVtYm5haWxzJyk7CisgICAgfSwKKworICAg
IHVwZGF0ZVRodW1ibmFpbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLnZpZGVvLnRleHRUcmFja3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHZhciB0cmFjayA9IHRoaXMudmlkZW8udGV4dFRyYWNrc1tpXTsKKyAgICAgICAgICAgIGlmICh0
aGlzLnRyYWNrSGFzVGh1bWJuYWlscyh0cmFjaykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmNv
bnRyb2xzLnRodW1ibmFpbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuY29udHJvbHMudGh1bWJuYWlsLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05h
bWVzLmhpZGRlbik7CisgICAgfSwKKworICAgIHVwZGF0ZUNhcHRpb25CdXR0b246IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZpZGVvLndlYmtpdEhhc0Nsb3NlZENhcHRpb25z
KQorICAgICAgICAgICAgdGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uLmNsYXNzTGlzdC5yZW1v
dmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuY29udHJvbHMuY2FwdGlvbkJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOworICAgIH0sCisKKyAgICB1cGRhdGVDYXB0aW9uQ29udGFpbmVyOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuaG9zdC50ZXh0VHJhY2tDb250YWluZXIpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGhhc0Nsb3NlZENhcHRpb25zID0gdGhpcy52
aWRlby53ZWJraXRIYXNDbG9zZWRDYXB0aW9uczsKKyAgICAgICAgdmFyIGhhc0hpZGRlbkNsYXNz
ID0gdGhpcy5ob3N0LnRleHRUcmFja0NvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnModGhpcy5D
bGFzc05hbWVzLmhpZGRlbik7CisKKyAgICAgICAgaWYgKGhhc0Nsb3NlZENhcHRpb25zICYmIGhh
c0hpZGRlbkNsYXNzKQorICAgICAgICAgICAgdGhpcy5ob3N0LnRleHRUcmFja0NvbnRhaW5lci5j
bGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAgICBlbHNlIGlm
ICghaGFzQ2xvc2VkQ2FwdGlvbnMgJiYgIWhhc0hpZGRlbkNsYXNzKQorICAgICAgICAgICAgdGhp
cy5ob3N0LnRleHRUcmFja0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOworCisgICAgICAgIHRoaXMudXBkYXRlQmFzZSgpOworICAgICAgICB0aGlzLmhvc3Qu
dXBkYXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7CisgICAgfSwKKworICAgIGJ1aWxkQ2FwdGlvbk1l
bnU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0cmFja3MgPSB0aGlzLmhvc3Quc29y
dGVkVHJhY2tMaXN0Rm9yTWVudSh0aGlzLnZpZGVvLnRleHRUcmFja3MpOworICAgICAgICBpZiAo
IXRyYWNrcyB8fCAhdHJhY2tzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLmNhcHRpb25NZW51ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIHRoaXMuY2FwdGlvbk1lbnUuc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRp
YS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyJyk7CisgICAgICAgIHRoaXMuYmFz
ZS5hcHBlbmRDaGlsZCh0aGlzLmNhcHRpb25NZW51KTsKKyAgICAgICAgdGhpcy5jYXB0aW9uTWVu
dUl0ZW1zID0gW107CisKKyAgICAgICAgdmFyIG9mZkl0ZW0gPSB0aGlzLmhvc3QuY2FwdGlvbk1l
bnVPZmZJdGVtOworICAgICAgICB2YXIgYXV0b21hdGljSXRlbSA9IHRoaXMuaG9zdC5jYXB0aW9u
TWVudUF1dG9tYXRpY0l0ZW07CisgICAgICAgIHZhciBkaXNwbGF5TW9kZSA9IHRoaXMuaG9zdC5j
YXB0aW9uRGlzcGxheU1vZGU7CisKKyAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgdGhpcy5jYXB0aW9uTWVudS5hcHBlbmRDaGlsZChsaXN0
KTsKKyAgICAgICAgbGlzdC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5saXN0KTsKKwor
ICAgICAgICB2YXIgaGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7CisgICAg
ICAgIGhlYWRpbmcuaWQgPSAnd2Via2l0TWVkaWFDb250cm9sc0Nsb3NlZENhcHRpb25zSGVhZGlu
Zyc7IC8vIGZvciBBWCBtZW51IGxhYmVsCisgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaGVhZGlu
Zyk7CisgICAgICAgIGhlYWRpbmcuaW5uZXJUZXh0ID0gdGhpcy5VSVN0cmluZygnU3VidGl0bGVz
Jyk7CisKKyAgICAgICAgdmFyIHVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsKKyAg
ICAgICAgdWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ21lbnUnKTsKKyAgICAgICAgdWwuc2V0QXR0
cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCAnd2Via2l0TWVkaWFDb250cm9sc0Nsb3NlZENhcHRp
b25zSGVhZGluZycpOworICAgICAgICBsaXN0LmFwcGVuZENoaWxkKHVsKTsKKworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRyYWNrcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IG1lbnVJdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgICAgICAgICAgIG1l
bnVJdGVtLnNldEF0dHJpYnV0ZSgncm9sZScsICdtZW51aXRlbXJhZGlvJyk7CisgICAgICAgICAg
ICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7CisgICAgICAgICAgICB0
aGlzLmNhcHRpb25NZW51SXRlbXMucHVzaChtZW51SXRlbSk7CisgICAgICAgICAgICB0aGlzLmxp
c3RlbkZvcihtZW51SXRlbSwgJ2NsaWNrJywgdGhpcy5jYXB0aW9uSXRlbVNlbGVjdGVkKTsKKyAg
ICAgICAgICAgIHRoaXMubGlzdGVuRm9yKG1lbnVJdGVtLCAna2V5dXAnLCB0aGlzLmhhbmRsZUNh
cHRpb25JdGVtS2V5VXApOworICAgICAgICAgICAgdWwuYXBwZW5kQ2hpbGQobWVudUl0ZW0pOwor
CisgICAgICAgICAgICB2YXIgdHJhY2sgPSB0cmFja3NbaV07CisgICAgICAgICAgICBtZW51SXRl
bS5pbm5lclRleHQgPSB0aGlzLmhvc3QuZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjayk7CisgICAg
ICAgICAgICBtZW51SXRlbS50cmFjayA9IHRyYWNrOworCisgICAgICAgICAgICBpZiAodHJhY2sg
PT09IG9mZkl0ZW0pIHsKKyAgICAgICAgICAgICAgICB2YXIgb2ZmTWVudSA9IG1lbnVJdGVtOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAodHJhY2sgPT09IGF1dG9tYXRpY0l0ZW0pIHsKKyAgICAgICAgICAgICAgICBpZiAoZGlzcGxh
eU1vZGUgPT09ICdhdXRvbWF0aWMnKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLmNs
YXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnNlbGVjdGVkKTsKKyAgICAgICAgICAgICAgICAg
ICAgbWVudUl0ZW0uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7CisgICAgICAgICAgICAg
ICAgICAgIG1lbnVJdGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1jaGVja2VkJywgJ3RydWUnKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChkaXNwbGF5TW9kZSAhPSAnYXV0b21hdGljJyAmJiB0cmFjay5t
b2RlID09PSAnc2hvd2luZycpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tNZW51SXRlbVNl
bGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtZW51SXRlbS5jbGFzc0xpc3QuYWRkKHRo
aXMuQ2xhc3NOYW1lcy5zZWxlY3RlZCk7CisgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0
cmlidXRlKCd0YWJpbmRleCcsICcwJyk7CisgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0
cmlidXRlKCdhcmlhLWNoZWNrZWQnLCAndHJ1ZScpOworICAgICAgICAgICAgfQorCisgICAgICAg
IH0KKworICAgICAgICBpZiAob2ZmTWVudSAmJiBkaXNwbGF5TW9kZSA9PT0gJ2ZvcmNlZC1vbmx5
JyAmJiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkKSB7CisgICAgICAgICAgICBvZmZNZW51LmNsYXNz
TGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnNlbGVjdGVkKTsKKyAgICAgICAgICAgIG1lbnVJdGVt
LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpOworICAgICAgICAgICAgbWVudUl0ZW0uc2V0
QXR0cmlidXRlKCdhcmlhLWNoZWNrZWQnLCAndHJ1ZScpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAvLyBmb2N1cyBmaXJzdCBzZWxlY3RlZCBtZW51aXRlbQorICAgICAgICBmb3IgKHZh
ciBpID0gMCwgYyA9IHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5sZW5ndGg7IGkgPCBjOyBpKyspIHsK
KyAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5jYXB0aW9uTWVudUl0ZW1zW2ldOworICAgICAg
ICAgICAgaWYgKGl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5zZWxlY3Rl
ZCkpIHsKKyAgICAgICAgICAgICAgICBpdGVtLmZvY3VzKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSwKKworICAgIGNh
cHRpb25JdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5o
b3N0LnNldFNlbGVjdGVkVGV4dFRyYWNrKGV2ZW50LnRhcmdldC50cmFjayk7CisgICAgICAgIHRo
aXMuZGVzdHJveUNhcHRpb25NZW51KCk7CisgICAgfSwKKworICAgIGZvY3VzU2libGluZ0NhcHRp
b25JdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50SXRlbSA9
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIHBlbmRpbmdJdGVtID0gZmFsc2U7CisgICAgICAg
IHN3aXRjaChldmVudC5rZXlDb2RlKSB7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5sZWZ0
OgorICAgICAgICBjYXNlIHRoaXMuS2V5Q29kZXMudXA6CisgICAgICAgICAgICBwZW5kaW5nSXRl
bSA9IGN1cnJlbnRJdGVtLnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIHRoaXMuS2V5Q29kZXMucmlnaHQ6CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rl
cy5kb3duOgorICAgICAgICAgICAgcGVuZGluZ0l0ZW0gPSBjdXJyZW50SXRlbS5uZXh0U2libGlu
ZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChwZW5kaW5nSXRl
bSkgeworICAgICAgICAgICAgY3VycmVudEl0ZW0uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICct
MScpOworICAgICAgICAgICAgcGVuZGluZ0l0ZW0uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcw
Jyk7CisgICAgICAgICAgICBwZW5kaW5nSXRlbS5mb2N1cygpOworICAgICAgICB9CisgICAgfSwK
KworICAgIGhhbmRsZUNhcHRpb25JdGVtS2V5VXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rl
cy5lbnRlcjoKKyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLnNwYWNlOgorICAgICAgICAgICAg
dGhpcy5jYXB0aW9uSXRlbVNlbGVjdGVkKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIHRoaXMuS2V5Q29kZXMuZXNjYXBlOgorICAgICAgICAgICAgdGhpcy5kZXN0cm95
Q2FwdGlvbk1lbnUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHRoaXMuS2V5
Q29kZXMubGVmdDoKKyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLnVwOgorICAgICAgICBjYXNl
IHRoaXMuS2V5Q29kZXMucmlnaHQ6CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5kb3duOgor
ICAgICAgICAgICAgdGhpcy5mb2N1c1NpYmxpbmdDYXB0aW9uSXRlbShldmVudCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAvLyBoYW5kbGVkCisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0sCisKKyAgICBkZXN0cm95
Q2FwdGlvbk1lbnU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5jYXB0aW9u
TWVudSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmNhcHRpb25NZW51SXRl
bXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKXsKKyAgICAgICAgICAgIHRoaXMuc3RvcExpc3Rlbmlu
Z0ZvcihpdGVtLCAnY2xpY2snLCB0aGlzLmNhcHRpb25JdGVtU2VsZWN0ZWQpOworICAgICAgICAg
ICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKGl0ZW0sICdrZXl1cCcsIHRoaXMuaGFuZGxlQ2FwdGlv
bkl0ZW1LZXlVcCk7CisgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgIC8vIEZLQSBhbmQgQVg6
IGZvY3VzIHRoZSB0cmlnZ2VyIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBlbGVtZW50IHdpdGggZm9j
dXMKKyAgICAgICAgaWYgKHRoaXMuY29udHJvbHMuY2FwdGlvbkJ1dHRvbikKKyAgICAgICAgICAg
IHRoaXMuY29udHJvbHMuY2FwdGlvbkJ1dHRvbi5mb2N1cygpOworCisgICAgICAgIGlmICh0aGlz
LmNhcHRpb25NZW51LnBhcmVudE5vZGUpCisgICAgICAgICAgICB0aGlzLmNhcHRpb25NZW51LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jYXB0aW9uTWVudSk7CisgICAgICAgIGRlbGV0ZSB0
aGlzLmNhcHRpb25NZW51OworICAgICAgICBkZWxldGUgdGhpcy5jYXB0aW9uTWVudUl0ZW1zOwor
ICAgIH0sCisKKyAgICB1cGRhdGVIYXNBdWRpbzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMudmlkZW8uYXVkaW9UcmFja3MubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5jb250
cm9scy5tdXRlQm94LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMubXV0ZUJveC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgIH0sCisKKyAgICB1cGRhdGVIYXNWaWRl
bzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmlkZW8udmlkZW9UcmFja3Mu
bGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3Zl
KHRoaXMuQ2xhc3NOYW1lcy5ub1ZpZGVvKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5ub1ZpZGVvKTsK
KyAgICB9LAorCisgICAgdXBkYXRlVm9sdW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBp
ZiAodGhpcy52aWRlby5tdXRlZCB8fCAhdGhpcy52aWRlby52b2x1bWUpIHsKKyAgICAgICAgICAg
IHRoaXMuY29udHJvbHMubXV0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5t
dXRlZCk7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZS52YWx1ZSA9IDA7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLm11dGVCdXR0b24uY2xhc3NM
aXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMubXV0ZWQpOworICAgICAgICAgICAgdGhpcy5jb250
cm9scy52b2x1bWUudmFsdWUgPSB0aGlzLnZpZGVvLnZvbHVtZTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICBpc0F1ZGlvOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy52
aWRlbyBpbnN0YW5jZW9mIEhUTUxBdWRpb0VsZW1lbnQ7CisgICAgfSwKKworICAgIGNsZWFySGlk
ZUNvbnRyb2xzVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmhpZGVU
aW1lcikKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7CisgICAgICAg
IHRoaXMuaGlkZVRpbWVyID0gbnVsbDsKKyAgICB9LAorCisgICAgcmVzZXRIaWRlQ29udHJvbHNU
aW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaGlkZVRpbWVyKQorICAg
ICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKTsKKyAgICAgICAgdGhpcy5oaWRl
VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuaGlkZUNvbnRyb2xzLmJpbmQodGhpcyksIHRoaXMuSGlk
ZUNvbnRyb2xzRGVsYXkpOworICAgIH0sCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCAzNDJiMGM0ZDU3N2MxYjc2NmVmNWMwZWY2ODJhZTg2ODkzNmE1YzZkLi5kYWM4NDI4YmYwMDkz
YTQwNTJmYzBkMmY1OTg3OGZiMzdjZDNiYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMjc4LDEyICsyNzgsMTIgQEAgaWYgKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpCiBlbmRp
ZiAoKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRTCi0gICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5j
c3MKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9s
c0Jhc2UuY3NzCiApCiAKIHNldChXZWJDb3JlX1VTRVJfQUdFTlRfU0NSSVBUUwogICAgICR7V0VC
Q09SRV9ESVJ9L0VuZ2xpc2gubHByb2ovbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMK
LSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0Fw
cGxlLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29u
dHJvbHNCYXNlLmpzCiApCiAKIHNldChXZWJDb3JlX1VTRVJfQUdFTlRfU0NSSVBUU19ERVBFTkRF
TkNJRVMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOGFhYzVmNWY4YTQ5YWFmNWM3NjYxMzE2YjIwNzkx
Njk4ZDNmZmM2Ny4uMmM5NTRhYjQzOWEwOWQwMmM5MjhkMWM3MWRmNTkyYjVlOTkyOGY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTI2OCw3ICsyNjgsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRTCiAKIHNldChXZWJDb3JlX1VTRVJfQUdFTlRf
U0NSSVBUUwogICAgICR7V0VCQ09SRV9ESVJ9L0VuZ2xpc2gubHByb2ovbWVkaWFDb250cm9sc0xv
Y2FsaXplZFN0cmluZ3MuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL21lZGlhQ29udHJvbHNCYXNlLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNHdGsuanMKICkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggZThjNTM5MmI1MWFjMmMy
Y2E1YWIwMGJiYTQwZThiMGNjNDQ2MzI0OS4uMzRjYjlmY2RkYjg1ZjBjOWE3MDhlZjQ3NzZlZWRl
YTFlZjkxNDJlOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRl
clRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhl
bWVFZmwuY3BwCkBAIC0xMDI3LDE0ICsxMDI3LDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIGNvbnN0IFBhaW50SW5m
CiAjaWYgRU5BQkxFKFZJREVPKQogU3RyaW5nIFJlbmRlclRoZW1lRWZsOjptZWRpYUNvbnRyb2xz
U3R5bGVTaGVldCgpCiB7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbChtZWRpYUNvbnRyb2xzQXBw
bGVVc2VyQWdlbnRTdHlsZVNoZWV0KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKG1lZGlhQ29u
dHJvbHNCYXNlVXNlckFnZW50U3R5bGVTaGVldCk7CiB9CiAKIFN0cmluZyBSZW5kZXJUaGVtZUVm
bDo6bWVkaWFDb250cm9sc1NjcmlwdCgpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWls
ZGVyOwogICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJp
bmdzSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzSmF2YVNj
cmlwdCkpOwotICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNBcHBsZUphdmFT
Y3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xzQXBwbGVKYXZhU2NyaXB0KSk7CisgICAgc2NyaXB0
QnVpbGRlci5hcHBlbmQobWVkaWFDb250cm9sc0Jhc2VKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFD
b250cm9sc0Jhc2VKYXZhU2NyaXB0KSk7CiAgICAgcmV0dXJuIHNjcmlwdEJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHAKaW5kZXggNjgzNWNiNzJiNTcyZjdiYWE5YjZiNTk4ODVhYjAzYWNmODJjODU1NS4uNTE4
ZDgxNDQ4NTYxM2ZjYWFiNjg5YTI2NTEyODJmMWExODM1ODAyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBTdHJp
bmcgUmVuZGVyVGhlbWVHdGs6Om1lZGlhQ29udHJvbHNTY3JpcHQoKQogewogICAgIFN0cmluZ0J1
aWxkZXIgc2NyaXB0QnVpbGRlcjsKICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChtZWRpYUNvbnRy
b2xzTG9jYWxpemVkU3RyaW5nc0phdmFTY3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xzTG9jYWxp
emVkU3RyaW5nc0phdmFTY3JpcHQpKTsKLSAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChtZWRpYUNv
bnRyb2xzQXBwbGVKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0FwcGxlSmF2YVNjcmlw
dCkpOworICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlw
dCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCkpOwogICAgIHNjcmlwdEJ1aWxk
ZXIuYXBwZW5kKG1lZGlhQ29udHJvbHNHdGtKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9s
c0d0a0phdmFTY3JpcHQpKTsKICAgICByZXR1cm4gc2NyaXB0QnVpbGRlci50b1N0cmluZygpOwog
fQo=
</data>
<flag name="review"
          id="262541"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>