<?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>109117</bug_id>
          
          <creation_ts>2013-02-06 18:01:33 -0800</creation_ts>
          <short_desc>Add the WebGL Conformance Tests extensions folder.</short_desc>
          <delta_ts>2013-02-13 23:37:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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>
          
          <blocked>94643</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gregg Tavares">gman</reporter>
          <assigned_to name="Gregg Tavares">gman</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>kbr</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826941</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2013-02-06 18:01:33 -0800</bug_when>
    <thetext>Add the WebGL Conformance Tests extensions folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826942</commentid>
    <comment_count>1</comment_count>
      <attachid>186964</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2013-02-06 18:01:48 -0800</bug_when>
    <thetext>Created attachment 186964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826985</commentid>
    <comment_count>2</comment_count>
      <attachid>186964</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-06 18:47:12 -0800</bug_when>
    <thetext>Comment on attachment 186964
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827040</commentid>
    <comment_count>3</comment_count>
      <attachid>186964</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 20:57:55 -0800</bug_when>
    <thetext>Comment on attachment 186964
Patch

Attachment 186964 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16417068

New failing tests:
webgl/conformance/extensions/webgl-compressed-texture-s3tc.html
webgl/conformance/extensions/oes-texture-float-with-video.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827046</commentid>
    <comment_count>4</comment_count>
      <attachid>186964</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 21:33:51 -0800</bug_when>
    <thetext>Comment on attachment 186964
Patch

Attachment 186964 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16406077

New failing tests:
webgl/conformance/extensions/webgl-compressed-texture-s3tc.html
webgl/conformance/extensions/oes-texture-float-with-video.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827047</commentid>
    <comment_count>5</comment_count>
      <attachid>186964</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 21:35:17 -0800</bug_when>
    <thetext>Comment on attachment 186964
Patch

Attachment 186964 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16411072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827397</commentid>
    <comment_count>6</comment_count>
      <attachid>186964</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 05:51:56 -0800</bug_when>
    <thetext>Comment on attachment 186964
Patch

Attachment 186964 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16435134

New failing tests:
webgl/conformance/extensions/webgl-compressed-texture-s3tc.html
webgl/conformance/extensions/oes-vertex-array-object.html
webgl/conformance/extensions/oes-element-index-uint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832765</commentid>
    <comment_count>7</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2013-02-13 23:37:39 -0800</bug_when>
    <thetext>Committed r142853: &lt;http://trac.webkit.org/changeset/142853&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186964</attachid>
            <date>2013-02-06 18:01:48 -0800</date>
            <delta_ts>2013-02-07 05:51:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109117-20130206175824.patch</filename>
            <type>text/plain</type>
            <size>173190</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDU4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTg1YzNmODI2ZjFlY2EwZDY4NmNl
OTY2MDM2ZmZkNjliMWMyYmQ4My4uNTYwYTg2YTFjMWM2MWU0NmE1MjQ0MWYzMGJhN2I3MGVjMjg0
MGYxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTAyLTA2ICBHcmVnZyBUYXZhcmVzICA8
Z21hbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgQWRkIHRoZSBXZWJHTCBDb25mb3JtYW5jZSBU
ZXN0cyBleHRlbnNpb25zIGZvbGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwOTExNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVy
ZS1maWx0ZXItYW5pc290cm9waWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
bC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2dldC1l
eHRlbnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2dldC1leHRlbnNpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtZWxlbWVudC1pbmRleC11aW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtZWxl
bWVudC1pbmRleC11aW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtc3RhbmRhcmQtZGVy
aXZhdGl2ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1mbG9hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNp
b25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtY2FudmFzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFn
ZS1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLWRhdGEuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9h
dC13aXRoLWltYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxv
YXQtd2l0aC12aWRlby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZs
b2F0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
b2VzLXZlcnRleC1hcnJheS1vYmplY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy12ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29t
cHJlc3NlZC10ZXh0dXJlLXMzdGMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
bC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wt
ZGVidWctcmVuZGVyZXItaW5mby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZGVidWctcmVuZGVyZXItaW5mby5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVn
LXNoYWRlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXNoYWRlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
d2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJn
bC1kZXB0aC10ZXh0dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvMDBfdGVzdF9saXN0LnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLWVs
ZW1lbnQtaW5kZXgtdWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1zdGFuZGFyZC1kZXJp
dmF0aXZlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtY2Fu
dmFzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS1k
YXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy12ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29t
cHJlc3NlZC10ZXh0dXJlLXMzdGMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZWJ1Zy1y
ZW5kZXJlci1pbmZvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZGVidWctc2hhZGVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbDogQWRkZWQuCisK
KzIwMTMtMDItMDYgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBBZGRzIGZhaWxpbmcgV2ViR0wgQ29uZm9ybWFuY2UgVGVzdHMuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNzUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXIt
YW5pc290cm9waWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjlmYzY0Y2U3MjdjMmI0NTZjNDc5NzY2MWQ1OWVlNzJiYzMzM2JkMDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4
dC10ZXh0dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1l
IGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXItYW5p
c290cm9waWMuaHRtbAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25m
b3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0
ZXItYW5pc290cm9waWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZThmNzVmNjYwNDgyZjg4ZGQyZDA1Mjcz
OTkwMTg2YjkzMWVhMTFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbApA
QCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5l
cmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9y
bWFuY2UgVGVzdCBXcmFwcGVyIGZvciBleHQtdGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRt
bDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5z
IHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFT
UyBvciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtZmlsdGVyLWFuaXNvdHJv
cGljLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvZXh0LXRleHR1cmUtZmlsdGVyLWFuaXNvdHJvcGljLmh0bWw8L2E+Cis8ZGl2IGlk
PSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0
dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9p
ZnJhbWU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZ2V0LWV4dGVuc2lvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2dldC1leHRlbnNpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxMWZiZmE5ODc3ZDg2MGMzOGMzNTRlY2ZkYTQwMmNj
OWIyZTBjZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2dldC1leHRlbnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAor
VGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBh
bmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZ2V0LWV4dGVuc2lvbi5odG1sCitQQVNT
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
Z2V0LWV4dGVuc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk0NDg2ZDhhOTY2NTQzNDMyOGZi
NjQ1YzM5OTEzZWJkNzBlZGE5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZ2V0LWV4dGVuc2lvbi5odG1sCkBAIC0wLDAgKzEsMTgg
QEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRl
c3RzLnB5LiBETyBOT1QgRURJVCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdy
YXBwZXIgZm9yIGdldC1leHRlbnNpb24uaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBp
biBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
Z2V0LWV4dGVuc2lvbi5odG1sIj4uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL2dldC1leHRlbnNpb24uaHRtbDwvYT4KKzxkaXYgaWQ9InJlc3Vs
dCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4uL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZ2V0LWV4dGVuc2lvbi5o
dG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLWVsZW1lbnQtaW5kZXgtdWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVpbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYyMGZiZThhNmRiODE1ZDQ5MDA1MmI4ODk4MTNjZGY3Y2ZmODZi
NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRl
bnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFt
ZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLWVsZW1lbnQtaW5kZXgtdWlu
dC5odG1sCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLWVsZW1lbnQtaW5kZXgtdWludC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtZWxlbWVudC1pbmRleC11aW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTkyNGE5MjVjOTE4MmEyYWZkNjc2NzY3ZGZhYWNlOTg5OWNjZmQxNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LWVsZW1lbnQtaW5kZXgtdWludC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1QgRURJ
VCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIG9lcy1lbGVt
ZW50LWluZGV4LXVpbnQuaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
d2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJh
bWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLWVsZW1l
bnQtaW5kZXgtdWludC5odG1sIj4uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVpbnQuaHRtbDwvYT4KKzxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLWVs
ZW1lbnQtaW5kZXgtdWludC5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+
Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5k
YXJkLWRlcml2YXRpdmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdkMGNhMTc2NGE3YzY3
YmVmNWZlOWRkY2IzM2ViODllYWJmZTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtc3RhbmRhcmQtZGVyaXZhdGl2ZXMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3Qg
bGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rl
c3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtc3RhbmRhcmQtZGVyaXZh
dGl2ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU0NjE3NzFlY2E4MTlkNThl
MmEzYTY0NDMzNDM3YjFmNjMyZDkzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtd2ViZ2wtdGVzdHMucHkuIERPIE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZv
cm1hbmNlIFRlc3QgV3JhcHBlciBmb3Igb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWw8L3Rp
dGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUg
V2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3Ig
RkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1zdGFuZGFyZC1kZXJpdmF0aXZlcy5odG1sIj4u
Li8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29l
cy1zdGFuZGFyZC1kZXJpdmF0aXZlcy5odG1sPC9hPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4K
KzxkaXYgaWQ9ImlmcmFtZSI+Cis8aWZyYW1lIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtc3RhbmRhcmQtZGVyaXZhdGl2ZXMu
aHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRl
bnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI3ZGMwYmRhODAzMTdmZWMwNDEwOWI3Y2ZlMDVjYTFmMTY2MjU2MWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29l
cy10ZXh0dXJlLWZsb2F0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBy
dW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMg
UEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0Lmh0bWwKK1BBU1MKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4
dHVyZS1mbG9hdC13aXRoLWNhbnZhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9j
b25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtY2FudmFzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYmVmMTZmMjE2MmViYzBlNmNhMWVlNDIwNzgxYzgyMGE4Mzk5
ZWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4g
YW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1m
bG9hdC13aXRoLWNhbnZhcy5odG1sCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1
cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWUzYmExNGViNWNkNzA4YTUz
MDVjODcyYWMyMDE2OWQwMzBmYjc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy5o
dG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1QgRURJVCAtLT4KKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBD
b25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIG9lcy10ZXh0dXJlLWZsb2F0LXdpdGgtY2FudmFz
Lmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Qg
cnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRz
IFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgt
Y2FudmFzLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbDwvYT4KKzxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRl
eHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwv
aWZyYW1lPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1h
Z2UtZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRl
bnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1hZ2UtZGF0YS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWU5NzMzNDk5MDEwZTIyNmMzNWE2OTRkMmYwZTViODliOGFiMTgzZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKK1RoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJh
bWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdp
dGgtaW1hZ2UtZGF0YS5odG1sCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS1kYXRh
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0
dXJlLWZsb2F0LXdpdGgtaW1hZ2UtZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZTY1MzY0ZjRhY2Y2
YTkxNGM0YjcxNzA0Nzk5NDA3MGI3ZTQ3YTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1h
Z2UtZGF0YS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1QgRURJVCAtLT4KKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIG9lcy10ZXh0dXJlLWZsb2F0LXdp
dGgtaW1hZ2UtZGF0YS5odG1sPC90aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93
ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFt
ZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVy
ZS1mbG9hdC13aXRoLWltYWdlLWRhdGEuaHRtbCI+Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdl
LWRhdGEuaHRtbDwvYT4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUi
PgorPGlmcmFtZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS1kYXRhLmh0bWwiIHdp
ZHRoPSI4MDAiIGhlaWdodD0iNjAwIj48L2lmcmFtZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9v
ZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEwNzkxN2EyOTY3NmZhNTM2NTEwYzNjN2EyYzUxMjI3
NDI4OWE2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cg
aW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVy
ZS1mbG9hdC13aXRoLWltYWdlLmh0bWwKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0
dXJlLWZsb2F0LXdpdGgtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTkxYzAzMjBkNWY3NGViYWI1
NWU3MzdiMmVhZGU2MDk0NGUzMmRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLmh0
bWwKQEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkuIERPIE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENv
bmZvcm1hbmNlIFRlc3QgV3JhcHBlciBmb3Igb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS5o
dG1sPC90aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVz
dC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1
bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQ
QVNTIG9yIEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWlt
YWdlLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1pbWFnZS5odG1sPC9hPgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9ImlmcmFtZSI+Cis8aWZyYW1lIHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVy
ZS1mbG9hdC13aXRoLWltYWdlLmh0bWwiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj48L2lmcmFt
ZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlmMWZl
ODE5MWQ4Mjk4M2VhYWViMzA1YWQwZmNiNzY5OGQ5OTM1OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQt
d2l0aC12aWRlby1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgcnVucyB0
aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mg
b3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwKK1BBU1MK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9v
ZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25m
b3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZTdiY2M0ZjU5YjgzODg4N2JiMTg0NTFjOTI0ZDM4YzY0YjNkMWNlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMt
dGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkuIERPIE5P
VCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3QgV3JhcHBlciBmb3Igb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sPC90aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93
IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuPC9wPgorVGVzdDogPGEgaHJl
Zj0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0
aC12aWRlby5odG1sPC9hPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9ImlmcmFt
ZSI+Cis8aWZyYW1lIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwiIHdpZHRo
PSI4MDAiIGhlaWdodD0iNjAwIj48L2lmcmFtZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMt
dGV4dHVyZS1mbG9hdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1mbG9hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMGY5ZWZkNDRmZThhZjcz
YTczMDA0OGYxYWViZjI5ZTY4NDE1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0Lmh0bWwKQEAgLTAs
MCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
d2ViZ2wtdGVzdHMucHkuIERPIE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNl
IFRlc3QgV3JhcHBlciBmb3Igb2VzLXRleHR1cmUtZmxvYXQuaHRtbDwvdGl0bGU+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxp
c3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KK1Rl
c3Q6IDxhIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQuaHRtbCI+Li4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC5odG1s
PC9hPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9ImlmcmFtZSI+Cis8aWZyYW1l
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1mbG9hdC5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9p
ZnJhbWU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXZlcnRleC1hcnJheS1vYmplY3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMt
dmVydGV4LWFycmF5LW9iamVjdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUwZTBiOGE3ZWU3
NWUwOGE3ODJmMjI5NjFlODYwNGUxMjM1NWQyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXZlcnRleC1hcnJheS1vYmplY3Qt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRl
c3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisK
K1Rlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLXZlcnRleC1hcnJheS1vYmplY3QuaHRtbAorUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy12ZXJ0ZXgtYXJyYXkt
b2JqZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29l
cy12ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE4N2YzNjc4NDk1NzhiMDUz
ZGQxZDk2OTRjNmQyNTI4MjE5NzIwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXZlcnRleC1hcnJheS1vYmplY3QuaHRtbApA
QCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5l
cmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9y
bWFuY2UgVGVzdCBXcmFwcGVyIGZvciBvZXMtdmVydGV4LWFycmF5LW9iamVjdC5odG1sPC90aXRs
ZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdl
YkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZB
SUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdmVydGV4LWFycmF5LW9iamVjdC5odG1sIj4uLi8u
Li9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy12
ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWw8L2E+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRp
diBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy12ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWwi
IHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj48L2lmcmFtZT4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtczN0Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1z
M3RjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjkyNGEzMzRhMmYwMzQxNGQwNzQ4N2YxMDM1
OTMzNmJlNGYxZGQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtczN0Yy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQg
YmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4v
Li4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJn
bC1jb21wcmVzc2VkLXRleHR1cmUtczN0Yy5odG1sCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0
dXJlLXMzdGMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
d2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2Y0MzY1MTRk
MzdlZDUwYTc3M2NiZGY4ZDdjMjA4MjE1M2FiYjgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1
cmUtczN0Yy5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1QgRURJVCAtLT4KKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIHdlYmdsLWNvbXByZXNzZWQtdGV4
dHVyZS1zM3RjLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtp
dC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
aGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFu
ZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWNvbXByZXNz
ZWQtdGV4dHVyZS1zM3RjLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMuaHRtbDwv
YT4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBz
cmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMuaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0
PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXJlbmRl
cmVyLWluZm8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy93ZWJnbC1kZWJ1Zy1yZW5kZXJlci1pbmZvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTAyMjdiNDg5MjVlNTMxYjgxNDY2MzZlMzBiNGM5ODk5NDFhOTc3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZWJ1
Zy1yZW5kZXJlci1pbmZvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBy
dW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMg
UEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbAorUEFT
UworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25z
L3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZGVidWctcmVuZGVyZXItaW5mby5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI2OTYxMTI4YWVmYjM1YzM5ODIwYzdiZjhlYzRhMTRhNTFkNjEwNTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRl
YnVnLXJlbmRlcmVyLWluZm8uaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBp
cyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQg
LS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciB3ZWJnbC1kZWJ1
Zy1yZW5kZXJlci1pbmZvLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZy
YW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRl
YnVnLXJlbmRlcmVyLWluZm8uaHRtbCI+Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZWJ1Zy1yZW5kZXJlci1pbmZvLmh0bWw8L2E+
Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAi
PjwvaWZyYW1lPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXNoYWRlcnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJn
bC1kZWJ1Zy1zaGFkZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTc4MzUyNjEzMmMzNGQz
Mjk4YTkzMGI5ZmUzNjRkZjA4MjY3ZGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZWJ1Zy1zaGFkZXJzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3Rl
ZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAu
Li8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dl
YmdsLWRlYnVnLXNoYWRlcnMuaHRtbAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXNoYWRlcnMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZGVidWctc2hhZGVy
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5YmM0YjgyZDFkMTM3MTIwYzkyNDZiZTI3Yzc2NTkyMmVhZTlm
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLWRlYnVnLXNoYWRlcnMuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRo
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8g
Tk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciB3
ZWJnbC1kZWJ1Zy1zaGFkZXJzLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4g
aWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmds
LWRlYnVnLXNoYWRlcnMuaHRtbCI+Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZWJ1Zy1zaGFkZXJzLmh0bWw8L2E+Cis8ZGl2IGlk
PSJyZXN1bHQiPjwvZGl2PgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRl
YnVnLXNoYWRlcnMuaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25m
b3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1cmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZXB0aC10ZXh0dXJl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZThkZWMwODAwNmU3YTBkZDNjYjBlZjEzNGJjZjIw
NjliOGNkZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKK1RoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBp
ZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1
cmUuaHRtbAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI3NzM5YzA2ZWRlNjdiOTFiMmEzYzdmODVlYjc4Zjg3M2UyZDU1ODMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRl
cHRoLXRleHR1cmUuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRv
LWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciB3ZWJnbC1kZXB0aC10ZXh0
dXJlLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJn
bC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBv
cnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1cmUu
aHRtbCI+Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy93ZWJnbC1kZXB0aC10ZXh0dXJlLmh0bWw8L2E+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2
PgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRt
bCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zLzAwX3Rlc3RfbGlzdC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zLzAwX3Rlc3RfbGlzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwM2RlNTYzNjcwNjMxZmE5MzhlMjYy
ZDA3NmQ2NTNmZmM0YjRhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvMDBfdGVzdF9s
aXN0LnR4dApAQCAtMCwwICsxLDE0IEBACistLW1pbi12ZXJzaW9uIDEuMC4yIGdldC1leHRlbnNp
b24uaHRtbAorb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwKK29lcy10ZXh0dXJlLWZsb2F0
LXdpdGgtY2FudmFzLmh0bWwKK29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1hZ2UtZGF0YS5odG1s
CitvZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLmh0bWwKK29lcy10ZXh0dXJlLWZsb2F0LXdp
dGgtdmlkZW8uaHRtbAorb2VzLXRleHR1cmUtZmxvYXQuaHRtbAorb2VzLXZlcnRleC1hcnJheS1v
YmplY3QuaHRtbAorLS1taW4tdmVyc2lvbiAxLjAuMiBvZXMtZWxlbWVudC1pbmRleC11aW50Lmh0
bWwKK3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbAord2ViZ2wtZGVidWctc2hhZGVycy5o
dG1sCistLW1pbi12ZXJzaW9uIDEuMC4yIHdlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0
bWwKKy0tbWluLXZlcnNpb24gMS4wLjIgd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sCistLW1pbi12
ZXJzaW9uIDEuMC4yIGV4dC10ZXh0dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3Jt
YW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWZpbHRlci1hbmlzb3Ryb3BpYy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OGM5ZmNiMTI2ZThjZDVkOWMwODUwMzBlMDgyYzNlYTBhZDEyZDAwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1maWx0ZXItYW5pc290cm9waWMuaHRtbApAQCAtMCww
ICsxLDE4MCBAQAor77u/PCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIEZsb3JpYW4g
Qm9lc2NoIDxweWFsb3RAZ21haWwuY29tPi4KKyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29w
eSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZQorKiogIk1hdGVyaWFscyIpLCB0byBkZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nCisqKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBNYXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0bworKiogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkCisqKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBNYXRlcmlhbHMuCisqKgorKiogVEhFIE1BVEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRB
QklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN
RU5ULgorKiogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyoqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFU
RVJJQUxTIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyov
CisKKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZh
cyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZh
cz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUg
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxh
YmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUu
Y3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7Cit2YXIgZXh0ID0gbnVsbDsKKworaWYgKCFnbCkgewor
ICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFJ1biB0
ZXN0cyB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZAorICAgIHJ1bkhpbnRUZXN0RGlzYWJsZWQoKTsK
KworICAgIC8vIFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3Vs
ZEJlIGNhbiBhY2Nlc3MgaXQKKyAgICBleHQgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJl
Zml4ZXMoZ2wsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKworICAgIGlmICgh
ZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKworICAgICAgICBydW5TdXBwb3J0ZWRU
ZXN0KGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVs
bHkgZW5hYmxlZCBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgZXh0ZW5zaW9uIik7CisK
KyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVuSGludFRlc3RFbmFi
bGVkKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lvbkVu
YWJsZWQpIHsKKyAgICBpZiAod3R1LmdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZp
eGVzKGdsLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikgIT09IHVuZGVmaW5lZCkg
eworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5k
IGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBsaXN0ZWQgYXMgc3Vw
cG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVk
IGJ1dCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgbm90IGxpc3Rl
ZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBmYWlsZWQgLS0gdGhpcyBpcyBsZWdhbCIp
OworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW5IaW50VGVzdERpc2FibGVkKCkg
eworICAgIGRlYnVnKCJUZXN0aW5nIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCB3aXRo
IGV4dGVuc2lvbiBkaXNhYmxlZCIpOworICAgIAorICAgIHZhciBNQVhfVEVYVFVSRV9NQVhfQU5J
U09UUk9QWV9FWFQgPSAweDg0RkY7CisgICAgZ2wuZ2V0UGFyYW1ldGVyKE1BWF9URVhUVVJFX01B
WF9BTklTT1RST1BZX0VYVCk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VO
VU0sICJNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgc2hvdWxkIG5vdCBiZSBxdWVyeWFi
bGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7CisgICAgCisgICAgZGVidWcoIlRlc3Rpbmcg
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQiKTsKKyAg
ICB2YXIgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkU7CisgICAgdmFyIHRleHR1
cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8y
RCwgdGV4dHVyZSk7CisgICAKKyAgICBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwg
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9FTlVNLCAiVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgc2hvdWxkIG5vdCBiZSBx
dWVyeWFibGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7CisKKyAgICBnbC50ZXhQYXJhbWV0
ZXJmKGdsLlRFWFRVUkVfMkQsIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULCAxKTsKKyAgICBn
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUIHNob3VsZCBub3QgYmUgc2V0dGFibGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7
CisgICAgCisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBURVhUVVJFX01BWF9B
TklTT1RST1BZX0VYVCwgMSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VO
VU0sICJURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBzaG91bGQgbm90IGJlIHNldHRhYmxlIGlm
IGV4dGVuc2lvbiBpcyBkaXNhYmxlZCIpOworCisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJl
KTsKK30KKworZnVuY3Rpb24gcnVuSGludFRlc3RFbmFibGVkKCkgeworICAgIGRlYnVnKCJUZXN0
aW5nIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCB3aXRoIGV4dGVuc2lvbiBlbmFibGVk
Iik7CisKKyAgICBzaG91bGRCZSgiZXh0Lk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCIs
ICIweDg0RkYiKTsKKworICAgIHZhciBtYXhfYW5pc290cm9weSA9IGdsLmdldFBhcmFtZXRlcihl
eHQuTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKTsKKyAgICBnbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIHF1ZXJ5IHNo
b3VsZCBzdWNjZWVkIGlmIGV4dGVuc2lvbiBpcyBlbmFibGVkIik7CisKKyAgICBpZihtYXhfYW5p
c290cm9weSA+PSAyKXsKKyAgICAgICAgdGVzdFBhc3NlZCgiTWluaW11bSB2YWx1ZSBvZiBNQVhf
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgaXMgMi4wIik7CisgICAgfQorICAgIGVsc2V7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIk1pbmltdW0gdmFsdWUgb2YgTUFYX1RFWFRVUkVfTUFYX0FOSVNP
VFJPUFlfRVhUIGlzIDIuMCwgcmV0dXJuZWQgdmFsdWVzIHdhczogIiArIG1heF9hbmlzb3Ryb3B5
KTsKKyAgICB9CisgICAgCisgICAgLy8gVE9ETyBtYWtlIGEgdGV4dHVyZSBhbmQgdmVyaWZ5IGlu
aXRpYWwgdmFsdWUgPT0gMSBhbmQgc2V0dGluZyB0byBsZXNzIHRoYW4gMSBpcyBpbnZhbGlkIHZh
bHVlCisKKyAgICBkZWJ1ZygiVGVzdGluZyBURVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCB3aXRo
IGV4dGVuc2lvbiBkaXNhYmxlZCIpOworICAgIHNob3VsZEJlKCJleHQuVEVYVFVSRV9NQVhfQU5J
U09UUk9QWV9FWFQiLCAiMHg4NEZFIik7CisKKyAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAg
IAorICAgIHZhciBxdWVyaWVkX3ZhbHVlID0gZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVf
MkQsIGV4dC5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCk7CisgICAgZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIHF1ZXJ5IHNob3Vs
ZCBzdWNjZWVkIGlmIGV4dGVuc2lvbiBpcyBlbmFibGVkIik7CisKKyAgICBpZihxdWVyaWVkX3Zh
bHVlID09IDEpeworICAgICAgICB0ZXN0UGFzc2VkKCJJbml0aWFsIHZhbHVlIG9mIFRFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUIGlzIDEuMCIpOworICAgIH0KKyAgICBlbHNleworICAgICAgICB0
ZXN0RmFpbGVkKCJJbml0aWFsIHZhbHVlIG9mIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIHNo
b3VsZCBiZSAxLjAsIHJldHVybmVkIHZhbHVlIHdhczogIiArIHF1ZXJpZWRfdmFsdWUpOworICAg
IH0KKworICAgIGdsLnRleFBhcmFtZXRlcmYoZ2wuVEVYVFVSRV8yRCwgZXh0LlRFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhULCAwKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
VkFMVUUsICJ0ZXhQYXJhbWV0ZXJmIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIHNldCB0byA8
IDEgc2hvdWxkIGJlIGFuIGludmFsaWQgdmFsdWUiKTsKKyAgICAKKyAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGV4dC5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCwgMCk7Cisg
ICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAidGV4UGFyYW1ldGVyaSBU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBzZXQgdG8gPCAxIHNob3VsZCBiZSBhbiBpbnZhbGlk
IHZhbHVlIik7CisgICAgCisgICAgZ2wudGV4UGFyYW1ldGVyZihnbC5URVhUVVJFXzJELCBleHQu
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsIG1heF9hbmlzb3Ryb3B5KTsKKyAgICBnbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGV4UGFyYW1ldGVyZiBURVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCBzZXQgdG8gPj0gMiBzaG91bGQgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAKKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGV4dC5URVhUVVJFX01BWF9BTklTT1RS
T1BZX0VYVCwgbWF4X2FuaXNvdHJvcHkpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IsICJ0ZXhQYXJhbWV0ZXJpIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIHNldCB0byA+
PSAyIHNob3VsZCBzaG91bGQgc3VjY2VlZCIpOworCisgICAgdmFyIHF1ZXJpZWRfdmFsdWUgPSBn
bC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZXh0LlRFWFRVUkVfTUFYX0FOSVNPVFJP
UFlfRVhUKTsKKyAgICBpZihxdWVyaWVkX3ZhbHVlID09IG1heF9hbmlzb3Ryb3B5KXsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiU2V0IHZhbHVlIG9mIFRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIG1h
dGNoZXMgZXhwZWNhdGlvbiIpOworICAgIH0KKyAgICBlbHNleworICAgICAgICB0ZXN0RmFpbGVk
KCJTZXQgdmFsdWUgb2YgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgc2hvdWxkIGJlOiAiICsg
bWF4X2FuaXNvdHJvcHkgKyAiICwgcmV0dXJuZWQgdmFsdWUgd2FzOiAiICsgcXVlcmllZF92YWx1
ZSk7CisgICAgfQorCisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKK30KKworZGVidWco
IiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL2dldC1leHRlbnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmQzOWU5NGFjZjM3ZWFi
MTg2NmY0Y2M5ZjZmNTQzMTViYzllYmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9n
ZXQtZXh0ZW5zaW9uLmh0bWwKQEAgLTAsMCArMSw5OSBAQAor77u/PCEtLQorCisvKgorKiogQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoqCisqKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYQorKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZQorKiogIk1hdGVyaWFscyIpLCB0byBkZWFsIGluIHRoZSBNYXRlcmlh
bHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisqKiB3aXRob3V0IGxpbWl0YXRpb24g
dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisqKiBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywg
YW5kIHRvCisqKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBNYXRlcmlhbHMgYXJlIGZ1cm5p
c2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworKiogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
KioKKyoqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisqKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBNYXRlcmlhbHMuCisqKgorKiogVEhFIE1BVEVSSUFMUyBBUkUgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyoqIEVYUFJFU1MgT1Ig
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgor
KiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULgorKiogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyoqIENMQUlNLCBEQU1BR0VTIE9SIE9U
SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisqKiBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRQorKiogTUFURVJJQUxTIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1B
VEVSSUFMUy4KKyovCisKKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRXh0ZW5zaW9uIENvbmZvcm1hbmNl
IFRlc3RzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2Rl
c2t0b3AtZ2wtY29uc3RhbnRzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2Fu
dmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsiPiA8L2NhbnZhcz4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciByYW5kb21p
emVDYXNlID0gZnVuY3Rpb24oc3RyKSB7CisgICAgdmFyIG5ld0NoYXJzID0gW107CisgICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IHN0ci5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgdmFyIGMgPSBz
dHIuc3Vic3RyKGlpLCAxKTsKKyAgICAgICAgdmFyIG0gPSAoTWF0aC5yYW5kb20oKSA+IDAuNSkg
PyBjLnRvTG93ZXJDYXNlKCkgOiBjLnRvVXBwZXJDYXNlKCk7CisgICAgICAgIG5ld0NoYXJzLnB1
c2gobSk7CisgICAgfQorICAgIHJldHVybiBuZXdDaGFycy5qb2luKCIiKTsKK30KKworZGVzY3Jp
cHRpb24oKTsKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoY2FudmFzKTsKKworZGVidWcoImNoZWNrIGV2ZXJ5IGV4dGVuc2lvbiBh
ZHZlcnRpc2VkIGNhbiBiZSBlbmFibGVkIik7Cit2YXIgZXh0ZW5zaW9ucyA9IFtdOwordmFyIGV4
dGVuc2lvbk5hbWVzID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworZm9yICh2YXIgaWkg
PSAwOyBpaSA8IGV4dGVuc2lvbk5hbWVzLmxlbmd0aDsgKytpaSkgeworICAgIHZhciBvcmlnaW5h
bE5hbWUgPSBleHRlbnNpb25OYW1lc1tpaV07CisgICAgdmFyIG1peGVkTmFtZSA9IHJhbmRvbWl6
ZUNhc2Uob3JpZ2luYWxOYW1lKTsKKyAgICB2YXIgZXh0ZW5zaW9uID0gZ2wuZ2V0RXh0ZW5zaW9u
KG1peGVkTmFtZSk7CisgICAgYXNzZXJ0TXNnKGV4dGVuc2lvbiwgImFibGUgdG8gZ2V0ICIgKyBv
cmlnaW5hbE5hbWUgKyAiIGFzICIgKyBtaXhlZE5hbWUpOworICAgIGlmIChleHRlbnNpb24pIHsK
KyAgICAgICAgdmFyIGtUZXN0U3RyaW5nID0gInRoaXMgaXMgYSB0ZXN0IjsKKyAgICAgICAgdmFy
IGtUZXN0TnVtYmVyID0gMTIzOworICAgICAgICB2YXIga1Rlc3RGdW5jdGlvbiA9IGZ1bmN0aW9u
KCkgeyB9OworICAgICAgICB2YXIga1Rlc3RPYmplY3QgPSB7IH07CisgICAgICAgIGV4dGVuc2lv
bi50ZXN0U3RyaW5nUHJvcGVydHkgPSBrVGVzdFN0cmluZzsKKyAgICAgICAgZXh0ZW5zaW9uLnRl
c3ROdW1iZXJQcm9wZXJ0eSA9IGtUZXN0TnVtYmVyOworICAgICAgICBleHRlbnNpb24udGVzdEZ1
bmN0aW9uUHJvcGVydHkgPSBrVGVzdEZ1bmN0aW9uOworICAgICAgICBleHRlbnNpb24udGVzdE9i
amVjdFByb3BlcnR5ID0ga1Rlc3RPYmplY3Q7CisgICAgICAgIGdjKCk7CisgICAgICAgIHZhciBl
eHRlbnNpb24yID0gZ2wuZ2V0RXh0ZW5zaW9uKG9yaWdpbmFsTmFtZSk7CisgICAgICAgIGFzc2Vy
dE1zZygKKyAgICAgICAgICAgIGV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uMiwKKyAgICAgICAgICAg
ICJjYWxsaW5nIGdldEV4dGVuc2lvbiB0d2ljZSBmb3IgdGhlIHNhbWUgZXh0ZW5zaW9uIHJldHVy
bnMgdGhlIHNhbWUgb2JqZWN0Iik7CisgICAgICAgIGFzc2VydE1zZygKKyAgICAgICAgICAgIGV4
dGVuc2lvbjIudGVzdFN0cmluZ1Byb3BlcnR5ID09PSBrVGVzdFN0cmluZyAmJgorICAgICAgICAg
ICAgZXh0ZW5zaW9uMi50ZXN0RnVuY3Rpb25Qcm9wZXJ0eSA9PT0ga1Rlc3RGdW5jdGlvbiAmJgor
ICAgICAgICAgICAgZXh0ZW5zaW9uMi50ZXN0T2JqZWN0UHJvcGVydHkgPT09IGtUZXN0T2JqZWN0
ICYmCisgICAgICAgICAgICBleHRlbnNpb24yLnRlc3ROdW1iZXJQcm9wZXJ0eSA9PT0ga1Rlc3RO
dW1iZXIsCisgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5IDJuZCBjYWxsIHRvIGdldEV4
dGVuc2lvbiBoYXMgc2FtZSBwcm9wZXJ0aWVzIik7CisgICAgfQorfQorCitkZWJ1ZygiIik7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVpbnQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLWVsZW1lbnQtaW5kZXgtdWludC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNjRl
NTIzZDMyZTM1NDk2YWU3M2Y5Y2Q4ZTNjODliYzVkOWY3N2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVpbnQuaHRtbApAQCAtMCwwICsxLDQ0NiBAQAor
PCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
KyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKiogIk1hdGVyaWFscyIpLCB0byBk
ZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisqKiB3
aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMg
b2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBN
YXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworKiogdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisqKiBpbiBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBNYXRlcmlhbHMuCisqKgorKiogVEhFIE1B
VEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorKiogSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyoqIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJQUxTIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisKKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgT0VT
X2VsZW1lbnRfaW5kZXhfdWludCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93
ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9InZzIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247CithdHRyaWJ1dGUgdmVjNCB2
Q29sb3I7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfUG9zaXRp
b24gPSB2UG9zaXRpb247CisgICAgY29sb3IgPSB2Q29sb3I7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgaWQ9ImZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29s
b3IgPSBjb2xvcjsKK30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiA1MHB4
OyBoZWlnaHQ6IDUwcHg7Ij4gPC9jYW52YXM+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBPRVNfZWxlbWVudF9pbmRleF91aW50IGV4dGVuc2lvbiwg
aWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7Cit2YXIgZXh0ID0gbnVsbDsK
K3ZhciB2YW8gPSBudWxsOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBj
b250ZXh0IGV4aXN0cyIpOworCisgICAgLy8gUXVlcnkgdGhlIGV4dGVuc2lvbiBhbmQgc3RvcmUg
Z2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBpdAorICAgIGV4dCA9IGdsLmdldEV4dGVu
c2lvbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOworICAgIGlmICghZXh0KSB7CisgICAgICAg
IHRlc3RQYXNzZWQoIk5vIE9FU19lbGVtZW50X2luZGV4X3VpbnQgc3VwcG9ydCAtLSB0aGlzIGlz
IGxlZ2FsIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgT0VTX2VsZW1lbnRf
aW5kZXhfdWludCBleHRlbnNpb24iKTsKKworICAgICAgICBydW5TdXBwb3J0ZWRUZXN0KHRydWUp
OworICAgICAgICBydW5EcmF3VGVzdHMoKTsKKworICAgICAgICAvLyBUaGVzZSB0ZXN0cyBhcmUg
dHdlYWtlZCBkdXBsaWNhdGVzIG9mIHRoZSBidWZmZXJzL2luZGV4LXZhbGlkYXRpb24qIHRlc3Rz
CisgICAgICAgIC8vIHVzaW5nIHVuc2lnbmVkIGludCBpbmRpY2VzIHRvIGVuc3VyZSB0aGF0IGJl
aGF2aW9yIHJlbWFpbnMgY29uc2lzdGVudAorICAgICAgICBydW5JbmRleFZhbGlkYXRpb25UZXN0
cygpOworICAgICAgICBydW5Db3BpZXNJbmRpY2VzVGVzdHMoKTsKKyAgICAgICAgcnVuUmVzaXpl
ZEJ1ZmZlclRlc3RzKCk7CisgICAgICAgIHJ1blZlcmlmaWVzVG9vTWFueUluZGljZXNUZXN0cygp
OworICAgICAgICBydW5DcmFzaFdpdGhCdWZmZXJTdWJEYXRhVGVzdHMoKTsKKworICAgICAgICBn
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidGhlcmUgc2hvdWxkIGJlIG5vIGVycm9y
cyIpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChleHRlbnNpb25FbmFi
bGVkKSB7CisgICAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsK
KyAgICBpZiAoc3VwcG9ydGVkLmluZGV4T2YoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKSA+PSAw
KSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJPRVNfZWxlbWVudF9pbmRleF91aW50IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4
dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0
RXh0ZW5zaW9uIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9FU19lbGVtZW50
X2luZGV4X3VpbnQgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBzdWNj
ZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9FU19l
bGVtZW50X2luZGV4X3VpbnQgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lv
biBmYWlsZWQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5j
dGlvbiBydW5EcmF3VGVzdHMoKSB7CisgICAgZGVidWcoIlRlc3QgdGhhdCBkcmF3cyB3aXRoIHVu
c2lnbmVkIGludGVnZXIgaW5kaWNlcyBwcm9kdWNlIHRoZSBleHBlY3RlZCByZXN1bHRzIik7Cisg
ICAgCisgICAgY2FudmFzLndpZHRoID0gNTA7IGNhbnZhcy5oZWlnaHQgPSA1MDsKKyAgICBnbC52
aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgIAorICAgIHZh
ciBwcm9ncmFtID0gd3R1LnNldHVwTm9UZXhDb29yZFRleHR1cmVQcm9ncmFtKGdsKTsKKworICAg
IGZ1bmN0aW9uIHNldHVwRHJhdyhzKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIHZlcnRleCBidWZm
ZXIgdGhhdCBjYW5ub3QgYmUgZnVsbHkgaW5kZXhlZCB2aWEgc2hvcnRzCisgICAgICAgIHZhciBx
dWFkQXJyYXlMZW4gPSA2NTUzNyAqIDM7CisgICAgICAgIHZhciBxdWFkQXJyYXkgPSBuZXcgRmxv
YXQzMkFycmF5KHF1YWRBcnJheUxlbik7CisgICAgICAgIAorICAgICAgICAvLyBMZWF2ZSBhbGwg
YnV0IHRoZSBsYXN0IDQgdmFsdWVzIHplcm8tZWQgb3V0CisgICAgICAgIHZhciBpZHggPSBxdWFk
QXJyYXlMZW4gLSAxMjsKKworICAgICAgICAvLyBJbml0aWFsaXplZCB0aGUgbGFzdCA0IHZhbHVl
cyB0byBhIHF1YWQKKyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IDEuMCAqIHM7CisgICAgICAg
IHF1YWRBcnJheVtpZHgrK10gPSAxLjAgKiBzOworICAgICAgICBxdWFkQXJyYXlbaWR4KytdID0g
MC4wOworCisgICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAtMS4wICogczsKKyAgICAgICAgcXVh
ZEFycmF5W2lkeCsrXSA9IDEuMCAqIHM7CisgICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAwLjA7
CisKKyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IC0xLjAgKiBzOworICAgICAgICBxdWFkQXJy
YXlbaWR4KytdID0gLTEuMCAqIHM7CisgICAgICAgIHF1YWRBcnJheVtpZHgrK10gPSAwLjA7CisK
KyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IDEuMCAqIHM7CisgICAgICAgIHF1YWRBcnJheVtp
ZHgrK10gPSAtMS4wICogczsKKyAgICAgICAgcXVhZEFycmF5W2lkeCsrXSA9IDAuMDsKKworICAg
ICAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICAgICAgICBnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgcXVhZEFycmF5LCBnbC5TVEFUSUNfRFJBVyk7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIGFuIHVuc2lnbmVkIGludCBpbmRleCBidWZmZXIgdGhhdCBpbmRleGVz
IHRoZSBsYXN0IDQgdmVydGljZXMKKyAgICAgICAgdmFyIGJhc2VJbmRleCA9IChxdWFkQXJyYXlM
ZW4gLyAzKSAtIDQ7CisKKyAgICAgICAgdmFyIGluZGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4
T2JqZWN0KTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bmV3IFVpbnQzMkFycmF5KFsKKyAgICAgICAgICAgIGJhc2VJbmRleCArIDAsCisgICAgICAgICAg
ICBiYXNlSW5kZXggKyAxLAorICAgICAgICAgICAgYmFzZUluZGV4ICsgMiwKKyAgICAgICAgICAg
IGJhc2VJbmRleCArIDIsCisgICAgICAgICAgICBiYXNlSW5kZXggKyAzLAorICAgICAgICAgICAg
YmFzZUluZGV4ICsgMF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgdmFyIG9wdF9wb3Np
dGlvbkxvY2F0aW9uID0gMDsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob3B0
X3Bvc2l0aW9uTG9jYXRpb24pOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9wdF9w
b3NpdGlvbkxvY2F0aW9uLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIH07CisgICAg
ZnVuY3Rpb24gcmVhZExvY2F0aW9uKHgsIHkpIHsKKyAgICAgICAgdmFyIHBpeGVscyA9IG5ldyBV
aW50OEFycmF5KDEgKiAxICogNCk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgMSwgMSwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICAgICAgcmV0dXJuIHBpeGVs
czsKKyAgICB9OworICAgIGZ1bmN0aW9uIHRlc3RQaXhlbChibGFja0xpc3QsIHdoaXRlTGlzdCkg
eworICAgICAgICBmdW5jdGlvbiB0ZXN0TGlzdChsaXN0LCBleHBlY3RlZCkgeworICAgICAgICAg
ICAgZm9yICh2YXIgbiA9IDA7IG4gPCBsaXN0Lmxlbmd0aDsgbisrKSB7CisgICAgICAgICAgICAg
ICAgdmFyIGwgPSBsaXN0W25dOworICAgICAgICAgICAgICAgIHZhciB4ID0gLU1hdGguZmxvb3Io
bCAqIGNhbnZhcy53aWR0aCAvIDIpICsgY2FudmFzLndpZHRoIC8gMjsKKyAgICAgICAgICAgICAg
ICB2YXIgeSA9IC1NYXRoLmZsb29yKGwgKiBjYW52YXMuaGVpZ2h0IC8gMikgKyBjYW52YXMuaGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gcmVhZExvY2F0aW9uKHgsIHkp
OworICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzb3VyY2VbMF0gLSBleHBlY3RlZCkgPiAy
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdGVzdExpc3QoYmxhY2tMaXN0LCAwKSAmJiB0ZXN0TGlzdCh3aGl0ZUxpc3Qs
IDI1NSk7CisgICAgfTsKKyAgICBmdW5jdGlvbiB2ZXJpZnlEcmF3KGRyYXdOdW1iZXIsIHMpIHsK
KyAgICAgICAgZ2wuY2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAg
IGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX0lOVCwgMCk7CisK
KyAgICAgICAgdmFyIGJsYWNrTGlzdCA9IFtdOworICAgICAgICB2YXIgd2hpdGVMaXN0ID0gW107
CisgICAgICAgIHZhciBwb2ludHMgPSBbMC4wLCAwLjIsIDAuNCwgMC42LCAwLjgsIDEuMF07Cisg
ICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcG9pbnRzLmxlbmd0aDsgbisrKSB7CisgICAgICAg
ICAgICBpZiAocG9pbnRzW25dIDw9IHMpIHsKKyAgICAgICAgICAgICAgICBibGFja0xpc3QucHVz
aChwb2ludHNbbl0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3aGl0
ZUxpc3QucHVzaChwb2ludHNbbl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGlmICh0ZXN0UGl4ZWwoYmxhY2tMaXN0LCB3aGl0ZUxpc3QpKSB7CisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJEcmF3ICIgKyBkcmF3TnVtYmVyICsgIiBwYXNzZWQgcGl4ZWwgdGVzdCIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRHJhdyAiICsgZHJhd051bWJl
ciArICIgZmFpbGVkIHBpeGVsIHRlc3QiKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBzZXR1
cERyYXcoMC41KTsKKyAgICB2ZXJpZnlEcmF3KDAsIDAuNSk7Cit9CisKK2Z1bmN0aW9uIHJ1bklu
ZGV4VmFsaWRhdGlvblRlc3RzKCkgeworICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGluZGV4
IHZhbGlkYXRpb24gdmVyaWZpZXMgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGluZGljZXMiKTsKKwor
ICAgIGZ1bmN0aW9uIHNpemVJbkJ5dGVzKHR5cGUpIHsKKyAgICAgIHN3aXRjaCAodHlwZSkgewor
ICAgICAgY2FzZSBnbC5CWVRFOgorICAgICAgY2FzZSBnbC5VTlNJR05FRF9CWVRFOgorICAgICAg
ICByZXR1cm4gMTsKKyAgICAgIGNhc2UgZ2wuU0hPUlQ6CisgICAgICBjYXNlIGdsLlVOU0lHTkVE
X1NIT1JUOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgZ2wuSU5UOgorICAgICAgY2Fz
ZSBnbC5VTlNJR05FRF9JTlQ6CisgICAgICBjYXNlIGdsLkZMT0FUOgorICAgICAgICByZXR1cm4g
NDsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHRocm93ICJ1bmtub3duIHR5cGUiOworICAgICAg
fQorICAgIH0KKworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRTdGFuZGFyZFByb2dyYW0oZ2wp
OworCisgICAgLy8gMyB2ZXJ0aWNlcyA9PiAxIHRyaWFuZ2xlLCBpbnRlcmxlYXZlZCBkYXRhCisg
ICAgdmFyIGRhdGFDb21wbGV0ZSA9IG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDAsIDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIDEsIDEsIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIDFdKTsKKyAgICB2YXIgZGF0YUluY29tcGxldGUgPSBu
ZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMSwgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEsIDEsIDEsIDFdKTsKKyAgICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheShb
MCwgMSwgMl0pOworCisgICAgZGVidWcoIlRlc3Rpbmcgd2l0aCB2YWxpZCBpbmRpY2VzIik7CisK
KyAgICB2YXIgYnVmZmVyQ29tcGxldGUgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyQ29tcGxldGUpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBkYXRhQ29tcGxldGUsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICB2
YXIgZWxlbWVudHMgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVM
RU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50cyk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLnVzZVBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgdmFyIHZlcnRleExvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9u
KHByb2dyYW0sICJhX3ZlcnRleCIpOworICAgIHZhciBub3JtYWxMb2MgPSBnbC5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCAiYV9ub3JtYWwiKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KHZlcnRleExvYywgNCwgZ2wuRkxPQVQsIGZhbHNlLCA3ICogc2l6ZUluQnl0ZXMoZ2wuRkxPQVQp
LCAwKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhMb2MpOworICAgIGds
LnZlcnRleEF0dHJpYlBvaW50ZXIobm9ybWFsTG9jLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDcgKiBz
aXplSW5CeXRlcyhnbC5GTE9BVCksIDQgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCkpOworICAgIGds
LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG5vcm1hbExvYyk7CisgICAgc2hvdWxkQmUoJ2dsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFJyk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CisgICAgc2hv
dWxkQmVVbmRlZmluZWQoJ2dsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVOU0lH
TkVEX0lOVCwgMCknKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKwor
ICAgIGRlYnVnKCJUZXN0aW5nIHdpdGggb3V0LW9mLXJhbmdlIGluZGljZXMiKTsKKworICAgIHZh
ciBidWZmZXJJbmNvbXBsZXRlID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlckluY29tcGxldGUpOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBkYXRhSW5jb21wbGV0ZSwgZ2wuU1RBVElDX0RSQVcpOworICAgIGds
LnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4TG9jLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDcgKiBz
aXplSW5CeXRlcyhnbC5GTE9BVCksIDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHZlcnRleExvYyk7CisgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG5vcm1hbExvYyk7
CisgICAgZGVidWcoIkVuYWJsZSB2ZXJ0aWNlcywgdmFsaWQiKTsKKyAgICBnbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgnZ2wuZHJhd0VsZW1l
bnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfSU5ULCAwKScpOworICAgIGdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIGRlYnVnKCJFbmFibGUgbm9ybWFscywgb3V0
LW9mLXJhbmdlIik7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihub3JtYWxMb2MsIDMsIGds
LkZMT0FULCBmYWxzZSwgNyAqIHNpemVJbkJ5dGVzKGdsLkZMT0FUKSwgNCAqIHNpemVJbkJ5dGVz
KGdsLkZMT0FUKSk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobm9ybWFsTG9jKTsK
KyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKKyAgICBzaG91bGRCZVVuZGVm
aW5lZCgnZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfSU5ULCAw
KScpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04pOworCisg
ICAgZGVidWcoIlRlc3Qgd2l0aCBlbmFibGVkIGF0dHJpYnV0ZSB0aGF0IGRvZXMgbm90IGJlbG9u
ZyB0byBjdXJyZW50IHByb2dyYW0iKTsKKworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShub3JtYWxMb2MpOworICAgIHZhciBleHRyYUxvYyA9IE1hdGgubWF4KHZlcnRleExvYywgbm9y
bWFsTG9jKSArIDE7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoZXh0cmFMb2MpOwor
ICAgIGRlYnVnKCJFbmFibGUgYW4gZXh0cmEgYXR0cmlidXRlIHdpdGggbnVsbCIpOworICAgIGds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCdn
bC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9JTlQsIDApJyk7Cisg
ICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgZGVidWco
IkVuYWJsZSBhbiBleHRyYSBhdHRyaWJ1dGUgd2l0aCBpbnN1ZmZpY2llbnQgZGF0YSBidWZmZXIi
KTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGV4dHJhTG9jLCAzLCBnbC5GTE9BVCwgZmFs
c2UsIDcgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCksIDQgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCkp
OworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworICAgIHNob3VsZEJlVW5k
ZWZpbmVkKCdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCAzLCBnbC5VTlNJR05FRF9JTlQs
IDApJyk7CisgICAgZGVidWcoIlBhc3MgbGFyZ2UgbmVnYXRpdmUgaW5kZXggdG8gdmVydGV4QXR0
cmliUG9pbnRlciIpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIobm9ybWFsTG9jLCAzLCBn
bC5GTE9BVCwgZmFsc2UsIDcgKiBzaXplSW5CeXRlcyhnbC5GTE9BVCksIC0yMDAwMDAwMDAwICog
c2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCdnbC5kcmF3RWxlbWVudHMoZ2wuVFJJ
QU5HTEVTLCAzLCBnbC5VTlNJR05FRF9JTlQsIDApJyk7Cit9CisKK2Z1bmN0aW9uIHJ1bkNvcGll
c0luZGljZXNUZXN0cygpIHsKKyAgICBkZWJ1ZygiVGVzdCB0aGF0IGNsaWVudCBkYXRhIGlzIGFs
d2F5cyBjb3BpZWQgZHVyaW5nIGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgY2FsbHMiKTsK
KworICAgIHZhciBwcm9ncmFtID0gd3R1LmxvYWRTdGFuZGFyZFByb2dyYW0oZ2wpOworCisgICAg
Z2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRl
QnVmZmVyKCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgLy8gNCB2ZXJ0aWNl
cyAtPiAyIHRyaWFuZ2xlcworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcg
RmxvYXQzMkFycmF5KFsgMCwwLDAsIDAsMSwwLCAxLDAsMCwgMSwxLDAgXSksIGdsLlNUQVRJQ19E
UkFXKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwg
MCwgMCk7CisKKyAgICB2YXIgaW5kZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKworICAg
IGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKKyAg
ICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAw
MCBdKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2Vz
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19F
UlJPUiwgImdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRV9TVFJJUCwgNCwgZ2wuVU5TSUdORURf
SU5ULCA0KSIpOworICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICJnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQsIGdsLlVOU0lHTkVE
X0lOVCwgMCkiKTsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05F
RF9JTlQsIDgpIik7CisgICAgaW5kaWNlc1swXSA9IDI7CisgICAgaW5kaWNlc1s1XSA9IDE7Cisg
ICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgImdsLmRyYXdFbGVtZW50
cyhnbC5UUklBTkdMRV9TVFJJUCwgNCwgZ2wuVU5TSUdORURfSU5ULCA0KSIpOworICAgIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJnbC5kcmF3RWxlbWVu
dHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQsIGdsLlVOU0lHTkVEX0lOVCwgMCkiKTsKKyAgICBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiZ2wuZHJhd0VsZW1l
bnRzKGdsLlRSSUFOR0xFX1NUUklQLCA0LCBnbC5VTlNJR05FRF9JTlQsIDgpIik7Cit9CisKK2Z1
bmN0aW9uIHJ1blJlc2l6ZWRCdWZmZXJUZXN0cygpIHsKKyAgICBkZWJ1ZygiVGVzdCB0aGF0IHVw
ZGF0aW5nIHRoZSBzaXplIG9mIGEgdmVydGV4IGJ1ZmZlciBpcyBwcm9wZXJseSBub3RpY2VkIGJ5
IHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4iKTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNl
dHVwUHJvZ3JhbShnbCwgWyJ2cyIsICJmcyJdLCBbInZQb3NpdGlvbiIsICJ2Q29sb3IiXSk7Cisg
ICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGluaXRpYWxpemF0aW9u
Iik7CisKKyAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoCisgICAgICAgIFstMSwxLDAs
IDEsMSwwLCAtMSwtMSwwLAorICAgICAgICAgLTEsLTEsMCwgMSwxLDAsIDEsLTEsMF0pLCBnbC5T
VEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciB2ZXJ0ZXggc2V0dXAiKTsKKwor
ICAgIHZhciB0ZXhDb29yZE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0ZXhDb29yZE9iamVjdCk7CisgICAgZ2wuYnVmZmVyRGF0
YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoCisgICAgICAgIFswLDAsIDEsMCwg
MCwxLAorICAgICAgICAgMCwxLCAxLDAsIDEsMV0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigx
LCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJhZnRlciB0ZXh0dXJlIGNvb3JkIHNldHVwIik7CisKKyAgICAvLyBOb3cgcmVz
aXplIHRoZXNlIGJ1ZmZlcnMgYmVjYXVzZSB3ZSB3YW50IHRvIGNoYW5nZSB3aGF0IHdlJ3JlIGRy
YXdpbmcuCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7
CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWwor
ICAgICAgICAtMSwxLDAsIDEsMSwwLCAtMSwtMSwwLCAxLC0xLDAsCisgICAgICAgIC0xLDEsMCwg
MSwxLDAsIC0xLC0xLDAsIDEsLTEsMF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIHZlcnRleCByZWRlZmluaXRpb24iKTsKKyAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRPYmplY3QpOworICAgIGds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgVWludDhBcnJheShbCisgICAgICAgIDI1
NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgMjU1LCAwLCAw
LCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAwLCAyNTUsIDAsIDI1NSwK
KyAgICAgICAgMCwgMjU1LCAwLCAyNTUsCisgICAgICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAg
ICAwLCAyNTUsIDAsIDI1NV0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wudmVydGV4QXR0cmli
UG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCBmYWxzZSwgMCwgMCk7CisgICAgZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIHRleHR1cmUgY29vcmRpbmF0ZSAvIGNv
bG9yIHJlZGVmaW5pdGlvbiIpOworCisgICAgdmFyIG51bVF1YWRzID0gMjsKKyAgICB2YXIgaW5k
aWNlcyA9IG5ldyBVaW50MzJBcnJheShudW1RdWFkcyAqIDYpOworICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBudW1RdWFkczsgKytpaSkgeworICAgICAgICB2YXIgb2Zmc2V0ID0gaWkgKiA2Owor
ICAgICAgICB2YXIgcXVhZCA9IChpaSA9PSAobnVtUXVhZHMgLSAxKSkgPyA0IDogMDsKKyAgICAg
ICAgaW5kaWNlc1tvZmZzZXQgKyAwXSA9IHF1YWQgKyAwOworICAgICAgICBpbmRpY2VzW29mZnNl
dCArIDFdID0gcXVhZCArIDE7CisgICAgICAgIGluZGljZXNbb2Zmc2V0ICsgMl0gPSBxdWFkICsg
MjsKKyAgICAgICAgaW5kaWNlc1tvZmZzZXQgKyAzXSA9IHF1YWQgKyAyOworICAgICAgICBpbmRp
Y2VzW29mZnNldCArIDRdID0gcXVhZCArIDE7CisgICAgICAgIGluZGljZXNbb2Zmc2V0ICsgNV0g
PSBxdWFkICsgMzsKKyAgICB9CisgICAgdmFyIGluZGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhPYmpl
Y3QpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMs
IGdsLlNUQVRJQ19EUkFXKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
YWZ0ZXIgc2V0dGluZyB1cCBpbmRpY2VzIik7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFO
R0xFUywgbnVtUXVhZHMgKiA2LCBnbC5VTlNJR05FRF9JTlQsIDApOworICAgIGdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBkcmF3aW5nIik7Cit9CisKK2Z1bmN0aW9uIHJ1
blZlcmlmaWVzVG9vTWFueUluZGljZXNUZXN0cygpIHsKKyAgICBkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCBpbmRleCB2YWxpZGF0aW9uIGZvciBkcmF3RWxlbWVudHMgZG9lcyBub3QgZXhhbWluZSB0
b28gbWFueSBpbmRpY2VzIik7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5sb2FkU3RhbmRhcmRQ
cm9ncmFtKGdsKTsKKworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgdmFyIHZlcnRl
eE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICAvLyA0IHZlcnRpY2Vz
IC0+IDIgdHJpYW5nbGVzCisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBG
bG9hdDMyQXJyYXkoWyAwLDAsMCwgMCwxLDAsIDEsMCwwLCAxLDEsMCBdKSwgZ2wuU1RBVElDX0RS
QVcpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAw
LCAwKTsKKworICAgIHZhciBpbmRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworCisgICAg
ZGVidWcoIlRlc3Qgb3V0IG9mIHJhbmdlIGluZGljZXMiKQorICAgIGdsLmJpbmRCdWZmZXIoZ2wu
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKKyAgICBnbC5idWZmZXJEYXRhKGds
LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDMyQXJyYXkoWyAxMDAwMCwgMCwgMSwgMiwg
MywgMTAwMDAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Z2wsIGdsLk5PX0VSUk9SLCAiZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFX1NUUklQLCA0LCBn
bC5VTlNJR05FRF9JTlQsIDQpIik7CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgImdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRV9TVFJJUCwgNCwg
Z2wuVU5TSUdORURfSU5ULCAwKSIpOworICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDQs
IGdsLlVOU0lHTkVEX0lOVCwgOCkiKTsKK30KKworZnVuY3Rpb24gcnVuQ3Jhc2hXaXRoQnVmZmVy
U3ViRGF0YVRlc3RzKCkgeworICAgIGRlYnVnKCdWZXJpZmllcyB0aGF0IHRoZSBpbmRleCB2YWxp
ZGF0aW9uIGNvZGUgd2hpY2ggaXMgd2l0aGluIGJ1ZmZlclN1YkRhdGEgZG9lcyBub3QgY3Jhc2gu
JykKKworICAgIHZhciBlbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wu
YmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7CisgICAg
Z2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMjU2LCBnbC5TVEFUSUNfRFJB
Vyk7CisgICAgdmFyIGRhdGEgPSBuZXcgVWludDMyQXJyYXkoMTI3KTsKKyAgICBnbC5idWZmZXJT
dWJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCA2NCwgZGF0YSk7CisgICAgZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiYWZ0ZXIgYXR0ZW1wdGluZyB0byB1cGRhdGUg
YSBidWZmZXIgb3V0c2lkZSBvZiB0aGUgYWxsb2NhdGVkIGJvdW5kcyIpOworICAgIHRlc3RQYXNz
ZWQoImJ1ZmZlclN1YkRhdGEsIHdoZW4gYnVmZmVyIG9iamVjdCB3YXMgaW5pdGlhbGl6ZWQgd2l0
aCBudWxsLCBkaWQgbm90IGNyYXNoIik7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy1zdGFuZGFyZC1kZXJpdmF0aXZlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkOWYyMTUyNzk3MTgy
ZTJlNTM4Mjc0N2IxMDc2NzA1NjBhYjkwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy1zdGFuZGFyZC1kZXJpdmF0aXZlcy5odG1sCkBAIC0wLDAgKzEsMzgxIEBACivvu788IS0t
CisKKy8qCisqKiBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKioK
KyoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhCisqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwg
aW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyoqIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwKKyoqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0
aGUgTWF0ZXJpYWxzLCBhbmQgdG8KKyoqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVy
aWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisqKiB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnM6CisqKgorKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg
cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyoqIGluIGFsbCBjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIE1hdGVyaWFscy4KKyoqCisqKiBUSEUgTUFURVJJ
QUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAor
KiogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GCisqKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKiogQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwKKyoqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFCisqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM
SU5HUyBJTiBUSEUgTUFURVJJQUxTLgorKi8KKworLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBPRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZGVza3RvcC1nbC1jb25zdGFudHMuanMiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2Vi
Z2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxlPSJ3aWR0aDogNTBweDsgaGVp
Z2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8IS0tIFNo
YWRlcnMgZm9yIHRlc3Rpbmcgc3RhbmRhcmQgZGVyaXZhdGl2ZXMgLS0+CisKKzwhLS0gU2hhZGVy
IG9taXR0aW5nIHRoZSByZXF1aXJlZCAjZXh0ZW5zaW9uIHByYWdtYSAtLT4KKzxzY3JpcHQgaWQ9
Im1pc3NpbmdQcmFnbWFGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+
CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3ZvaWQg
bWFpbigpIHsKKyAgICBmbG9hdCBkeCA9IGRGZHgodGV4Q29vcmQueCk7CisgICAgZmxvYXQgZHkg
PSBkRmR5KHRleENvb3JkLnkpOworICAgIGZsb2F0IHcgPSBmd2lkdGgodGV4Q29vcmQueCk7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChkeCwgZHksIHcsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKwor
PCEtLSBTaGFkZXIgdG8gdGVzdCBtYWNybyBkZWZpbml0aW9uIC0tPgorPHNjcmlwdCBpZD0ibWFj
cm9GcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CitwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKK3ZvaWQgbWFpbigpIHsKKyNpZmRlZiBHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7Cisj
ZWxzZQorICAgIC8vIEVycm9yIGV4cGVjdGVkCisgICAgI2Vycm9yIG5vIEdMX09FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlczsKKyNlbmRpZgorfQorPC9zY3JpcHQ+CisKKzwhLS0gU2hhZGVyIHdpdGgg
cmVxdWlyZWQgI2V4dGVuc2lvbiBwcmFnbWEgLS0+Cis8c2NyaXB0IGlkPSJ0ZXN0RnJhZ21lbnRT
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorI2V4dGVuc2lvbiBHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUKK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFy
eWluZyB2ZWMyIHRleENvb3JkOwordm9pZCBtYWluKCkgeworICAgIGZsb2F0IGR4ID0gZEZkeCh0
ZXhDb29yZC54KTsKKyAgICBmbG9hdCBkeSA9IGRGZHkodGV4Q29vcmQueSk7CisgICAgZmxvYXQg
dyA9IGZ3aWR0aCh0ZXhDb29yZC54KTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGR4LCBkeSwg
dywgMS4wKTsKK30KKzwvc2NyaXB0PgorPCEtLSBTaGFkZXJzIHRvIGxpbmsgd2l0aCB0ZXN0IGZy
YWdtZW50IHNoYWRlcnMgLS0+Cis8c2NyaXB0IGlkPSJnb29kVmVydGV4U2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247Cit2YXJ5aW5nIHZl
YzIgdGV4Q29vcmQ7Cit2b2lkIG1haW4oKSB7CisgICAgdGV4Q29vcmQgPSB2UG9zaXRpb24ueHk7
CisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Cit9Cis8L3NjcmlwdD4KKzwhLS0gU2hhZGVy
cyB0byB0ZXN0IG91dHB1dCAtLT4KKzxzY3JpcHQgaWQ9Im91dHB1dFZlcnRleFNoYWRlciIgdHlw
ZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordmFyeWlu
ZyB2ZWM0IHBvc2l0aW9uOwordm9pZCBtYWluKCkgeworICAgIHBvc2l0aW9uID0gdlBvc2l0aW9u
OworICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJvdXRwdXRGcmFnbWVudFNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisjZXh0
ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZQorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzQgcG9zaXRpb247Cit2b2lkIG1haW4oKSB7CisgICAg
ZmxvYXQgZHpkeCA9IGRGZHgocG9zaXRpb24ueik7CisgICAgZmxvYXQgZHpkeSA9IGRGZHkocG9z
aXRpb24ueik7CisgICAgZmxvYXQgZncgPSBmd2lkdGgocG9zaXRpb24ueik7CisgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNChhYnMoZHpkeCkgKiA0MC4wLCBhYnMoZHpkeSkgKiA0MC4wLCBmdyAqIDQw
LjAsIDEuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIE9FU19z
dGFuZGFyZF9kZXJpdmF0aXZlcyBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKwor
ZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMpOwordmFyIGV4dCA9IG51bGw7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFp
bGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQ
YXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAvLyBSdW4gdGVzdHMgd2l0aCBl
eHRlbnNpb24gZGlzYWJsZWQKKyAgICBydW5IaW50VGVzdERpc2FibGVkKCk7CisgICAgcnVuU2hh
ZGVyVGVzdHMoZmFsc2UpOworCisgICAgLy8gUXVlcnkgdGhlIGV4dGVuc2lvbiBhbmQgc3RvcmUg
Z2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBpdAorICAgIGV4dCA9IGdsLmdldEV4dGVu
c2lvbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CisgICAgaWYgKCFleHQpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiTm8gT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIHN1cHBvcnQgLS0gdGhp
cyBpcyBsZWdhbCIpOworCisgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QoZmFsc2UpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9FU19zdGFu
ZGFyZF9kZXJpdmF0aXZlcyBleHRlbnNpb24iKTsKKworICAgICAgICBydW5TdXBwb3J0ZWRUZXN0
KHRydWUpOworCisgICAgICAgIHJ1bkhpbnRUZXN0RW5hYmxlZCgpOworICAgICAgICBydW5TaGFk
ZXJUZXN0cyh0cnVlKTsKKyAgICAgICAgcnVuT3V0cHV0VGVzdHMoKTsKKyAgICAgICAgcnVuVW5p
cXVlT2JqZWN0VGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChl
eHRlbnNpb25FbmFibGVkKSB7CisgICAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMoKTsKKyAgICBpZiAoc3VwcG9ydGVkLmluZGV4T2YoIk9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyIpID49IDApIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBsaXN0ZWQgYXMgc3Vw
cG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgbGlzdGVkIGFz
IHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBi
dXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIG5vdCBsaXN0ZWQgYXMgc3Vw
cG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuSGludFRlc3REaXNhYmxlZCgpIHsKKyAgICBk
ZWJ1ZygiVGVzdGluZyBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyB3aXRoIGV4
dGVuc2lvbiBkaXNhYmxlZCIpOworCisgICAgLy8gVXNlIHRoZSBjb25zdGFudCBkaXJlY3RseSBh
cyB3ZSBkb24ndCBoYXZlIHRoZSBleHRlbnNpb24KKyAgICB2YXIgRlJBR01FTlRfU0hBREVSX0RF
UklWQVRJVkVfSElOVF9PRVMgPSAweDhCOEI7CisKKyAgICBnbC5nZXRQYXJhbWV0ZXIoRlJBR01F
TlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9FTlVNLCAiRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMgc2hv
dWxkIG5vdCBiZSBxdWVyeWFibGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7CisKKyAgICBn
bC5oaW50KEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTLCBnbC5ET05UX0NBUkUp
OworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiaGludCBzaG91bGQg
bm90IGFjY2VwdCBGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyBpZiBleHRlbnNp
b24gaXMgZGlzYWJsZWQiKTsKK30KKworZnVuY3Rpb24gcnVuSGludFRlc3RFbmFibGVkKCkgewor
ICAgIGRlYnVnKCJUZXN0aW5nIEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTIHdp
dGggZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKworICAgIHNob3VsZEJlKCJleHQuRlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVMiLCAiMHg4QjhCIik7CisKKyAgICBnbC5nZXRQYXJhbWV0
ZXIoZXh0LkZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTKTsKKyAgICBnbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElO
VF9PRVMgcXVlcnkgc2hvdWxkIHN1Y2NlZWQgaWYgZXh0ZW5zaW9uIGlzIGVuYWJsZWQiKTsKKwor
ICAgIC8vIERlZmF1bHQgdmFsdWUgaXMgRE9OVF9DQVJFCisgICAgaWYgKGdsLmdldFBhcmFtZXRl
cihleHQuRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVMpID09IGdsLkRPTlRfQ0FS
RSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJEZWZhdWx0IHZhbHVlIG9mIEZSQUdNRU5UX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlRfT0VTIGlzIERPTlRfQ0FSRSIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRlc3RGYWlsZWQoIkRlZmF1bHQgdmFsdWUgb2YgRlJBR01FTlRfU0hBREVSX0RFUklWQVRJ
VkVfSElOVF9PRVMgaXMgbm90IERPTlRfQ0FSRSIpOworICAgIH0KKworICAgIC8vIEVuc3VyZSB0
aGF0IHdlIGNhbiBzZXQgdGhlIHRhcmdldAorICAgIGdsLmhpbnQoZXh0LkZSQUdNRU5UX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlRfT0VTLCBnbC5ET05UX0NBUkUpOworICAgIGdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJoaW50IHNob3VsZCBhY2NlcHQgRlJBR01FTlRfU0hBREVSX0RF
UklWQVRJVkVfSElOVF9PRVMiKTsKKworICAgIC8vIFRlc3QgYWxsIHRoZSBoaW50IG1vZGVzCisg
ICAgdmFyIHZhbGlkTW9kZXMgPSBbIkZBU1RFU1QiLCAiTklDRVNUIiwgIkRPTlRfQ0FSRSJdOwor
ICAgIHZhciBhbnlGYWlsZWQgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBuID0gMDsgbiA8IHZhbGlk
TW9kZXMubGVuZ3RoOyBuKyspIHsKKyAgICAgICAgdmFyIG1vZGUgPSB2YWxpZE1vZGVzW25dOwor
ICAgICAgICBnbC5oaW50KGV4dC5GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUywg
Z2xbbW9kZV0pOworICAgICAgICBpZiAoZ2wuZ2V0UGFyYW1ldGVyKGV4dC5GUkFHTUVOVF9TSEFE
RVJfREVSSVZBVElWRV9ISU5UX09FUykgIT0gZ2xbbW9kZV0pIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIlJvdW5kLXRyaXAgb2YgaGludCgpL2dldFBhcmFtZXRlcigpIGZhaWxlZCBvbiBtb2Rl
ICIgKyBtb2RlKTsKKyAgICAgICAgICAgIGFueUZhaWxlZCA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKCFhbnlGYWlsZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUm91bmQtdHJp
cCBvZiBoaW50KCkvZ2V0UGFyYW1ldGVyKCkgd2l0aCBhbGwgc3VwcG9ydGVkIG1vZGVzIik7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBydW5TaGFkZXJUZXN0cyhleHRlbnNpb25FbmFibGVkKSB7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0aW5nIHZhcmlvdXMgc2hhZGVyIGNvbXBpbGVz
IHdpdGggZXh0ZW5zaW9uICIgKyAoZXh0ZW5zaW9uRW5hYmxlZCA/ICJlbmFibGVkIiA6ICJkaXNh
YmxlZCIpKTsKKworICAgIC8vIEV4cGVjdCB0aGUgbWFjcm8gc2hhZGVyIHRvIHN1Y2NlZWQgT05M
WSBpZiBlbmFibGVkCisgICAgdmFyIG1hY3JvRnJhZ21lbnRQcm9ncmFtID0gd3R1LmxvYWRQcm9n
cmFtRnJvbVNjcmlwdEV4cGVjdEVycm9yKGdsLCAiZ29vZFZlcnRleFNoYWRlciIsICJtYWNyb0Zy
YWdtZW50U2hhZGVyIik7CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgaWYg
KG1hY3JvRnJhZ21lbnRQcm9ncmFtKSB7CisgICAgICAgICAgICAvLyBFeHBlY3RlZCByZXN1bHQK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBkZWZp
bmVkIGluIHNoYWRlcnMgd2hlbiBleHRlbnNpb24gaXMgZW5hYmxlZCIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IG5vdCBkZWZpbmVkIGluIHNoYWRlcnMgd2hlbiBleHRlbnNpb24gaXMgZW5hYmxlZCIpOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1hY3JvRnJhZ21lbnRQcm9ncmFtKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZGVm
aW5lZCBpbiBzaGFkZXJzIHdoZW4gZXh0ZW5zaW9uIGlzIGRpc2FibGVkIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgbm90IGRlZmluZWQgaW4gc2hhZGVycyB3aGVuIGV4dGVuc2lvbiBkaXNhYmxlZCIpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gQWx3YXlzIGV4cGVjdCB0aGUgc2hhZGVyIG1pc3Npbmcg
dGhlICNwcmFnbWEgdG8gZmFpbCAod2hldGhlciBlbmFibGVkIG9yIG5vdCkKKyAgICB2YXIgbWlz
c2luZ1ByYWdtYUZyYWdtZW50UHJvZ3JhbSA9IHd0dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHRFeHBl
Y3RFcnJvcihnbCwgImdvb2RWZXJ0ZXhTaGFkZXIiLCAibWlzc2luZ1ByYWdtYUZyYWdtZW50U2hh
ZGVyIik7CisgICAgaWYgKG1pc3NpbmdQcmFnbWFGcmFnbWVudFByb2dyYW0pIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiU2hhZGVyIGJ1aWx0LWlucyBhbGxvd2VkIHdpdGhvdXQgI2V4dGVuc2lvbiBw
cmFnbWEiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJTaGFkZXIgYnVpbHQt
aW5zIGRpc2FsbG93ZWQgd2l0aG91dCAjZXh0ZW5zaW9uIHByYWdtYSIpOworICAgIH0KKworICAg
IC8vIFRyeSB0byBjb21waWxlIGEgc2hhZGVyIHVzaW5nIHRoZSBidWlsdC1pbnMgdGhhdCBzaG91
bGQgb25seSBzdWNjZWVkIGlmIGVuYWJsZWQKKyAgICB2YXIgdGVzdEZyYWdtZW50UHJvZ3JhbSA9
IHd0dS5sb2FkUHJvZ3JhbUZyb21TY3JpcHRFeHBlY3RFcnJvcihnbCwgImdvb2RWZXJ0ZXhTaGFk
ZXIiLCAidGVzdEZyYWdtZW50U2hhZGVyIik7CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsK
KyAgICAgICAgaWYgKHRlc3RGcmFnbWVudFByb2dyYW0pIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIlNoYWRlciBidWlsdC1pbnMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5IHdoZW4gZXh0ZW5zaW9u
IGVuYWJsZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNo
YWRlciBidWlsdC1pbnMgZmFpbGVkIHRvIGNvbXBpbGUgd2hlbiBleHRlbnNpb24gZW5hYmxlZCIp
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHRlc3RGcmFnbWVudFByb2dy
YW0pIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNoYWRlciBidWlsdC1pbnMgY29tcGlsZWQg
c3VjY2Vzc2Z1bGx5IHdoZW4gZXh0ZW5zaW9uIGRpc2FibGVkIik7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaGFkZXIgYnVpbHQtaW5zIGZhaWxlZCB0byBjb21w
aWxlIHdoZW4gZXh0ZW5zaW9uIGRpc2FibGVkIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHJ1bk91dHB1dFRlc3RzKCkgeworICAgIC8vIFRoaXMgdGVzdHMgZG9lcyBzZXZlcmFs
IGRyYXdzIHdpdGggdmFyaW91cyB2YWx1ZXMgb2Ygei4KKyAgICAvLyBUaGUgb3V0cHV0IG9mIHRo
ZSBmcmFnbWVudCBzaGFkZXIgaXM6CisgICAgLy8gW2RGZHgoeiksIGRGZHkoeiksIGZ3aWR0aCh6
KSwgMS4wXQorICAgIC8vIFRoZSBleHBlY3RlZCBtYXRoOiAobm90ZSB0aGUgY29udmVyc2lvbiB0
byB1aW50OCkKKyAgICAvLyAgICBjYW52YXMud2lkdGggPSBjYW52YXMuaGVpZ2h0ID0gNTAKKyAg
ICAvLyAgICBkRmR4ID0gdG90YWxDaGFuZ2UueCAvIGNhbnZhcy53aWR0aCAgPSAwLjUgLyA1MC4w
ID0gMC4wMQorICAgIC8vICAgIGRGZHkgPSB0b3RhbENoYW5nZS55IC8gY2FudmFzLmhlaWdodCA9
IDAuNSAvIDUwLjAgPSAwLjAxCisgICAgLy8gICAgZncgPSBhYnMoZEZkeCArIGRGZHkpID0gMC4w
MSArIDAuMDEgPSAwLjAyCisgICAgLy8gICAgciA9IGZsb29yKGRGZHggKiA0MC4wICogMjU1KSA9
IDEwMgorICAgIC8vICAgIGcgPSBmbG9vcihkRmR5ICogNDAuMCAqIDI1NSkgPSAxMDIKKyAgICAv
LyAgICBiID0gZmxvb3IoZncgKiA0MC4wICogMjU1KSA9IDIwNAorCisgICAgdmFyIGUgPSAyOyAv
LyBBbW91bnQgb2YgdmFyaWFuY2UgdG8gYWxsb3cgaW4gcmVzdWx0IHBpeGVscyAtIG1heSBuZWVk
IHRvIGJlIHR3ZWFrZWQgaGlnaGVyCisKKyAgICBkZWJ1ZygiVGVzdGluZyB2YXJpb3VzIGRyYXdz
IGZvciB2YWxpZCBidWlsdC1pbiBmdW5jdGlvbiBiZWhhdmlvciIpOworCisgICAgY2FudmFzLndp
ZHRoID0gNTA7IGNhbnZhcy5oZWlnaHQgPSA1MDsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52
YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgIGdsLmhpbnQoZXh0LkZSQUdNRU5UX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlRfT0VTLCBnbC5OSUNFU1QpOworCisgICAgdmFyIHByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbIm91dHB1dFZlcnRleFNoYWRlciIsICJvdXRwdXRGcmFnbWVu
dFNoYWRlciJdLCBbJ3ZQb3NpdGlvbicsICd0ZXhDb29yZDAnXSwgWzAsIDFdKTsKKyAgICB2YXIg
cXVhZFBhcmFtZXRlcnMgPSB3dHUuc2V0dXBVbml0UXVhZChnbCwgMCwgMSk7CisKKyAgICBmdW5j
dGlvbiByZWFkTG9jYXRpb24oeCwgeSkgeworICAgICAgICB2YXIgcGl4ZWxzID0gbmV3IFVpbnQ4
QXJyYXkoMSAqIDEgKiA0KTsKKyAgICAgICAgdmFyIHB4ID0gTWF0aC5mbG9vcih4ICogY2FudmFz
LndpZHRoKTsKKyAgICAgICAgdmFyIHB5ID0gTWF0aC5mbG9vcih5ICogY2FudmFzLmhlaWdodCk7
CisgICAgICAgIGdsLnJlYWRQaXhlbHMocHgsIHB5LCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBwaXhlbHMpOworICAgICAgICByZXR1cm4gcGl4ZWxzOworICAgIH07CisgICAgZnVu
Y3Rpb24gdG9TdHJpbmcoYXJyKSB7CisgICAgICAgIHZhciBzID0gIlsiOworICAgICAgICBmb3Ig
KHZhciBuID0gMDsgbiA8IGFyci5sZW5ndGg7IG4rKykgeworICAgICAgICAgICAgcyArPSBhcnJb
bl07CisgICAgICAgICAgICBpZiAobiA8IGFyci5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICAg
ICAgcyArPSAiLCAiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBz
ICsgIl0iOworICAgIH07CisgICAgZnVuY3Rpb24gZXhwZWN0UmVzdWx0KHRhcmdldCwgc3VjY2Vz
c01lc3NhZ2UsIGZhaWx1cmVNZXNzYWdlKSB7CisgICAgICAgIHZhciBsb2NhdGlvbnMgPSBbCisg
ICAgICAgICAgICByZWFkTG9jYXRpb24oMC4xLCAwLjEpLAorICAgICAgICAgICAgcmVhZExvY2F0
aW9uKDAuOSwgMC4xKSwKKyAgICAgICAgICAgIHJlYWRMb2NhdGlvbigwLjEsIDAuOSksCisgICAg
ICAgICAgICByZWFkTG9jYXRpb24oMC45LCAwLjkpLAorICAgICAgICAgICAgcmVhZExvY2F0aW9u
KDAuNSwgMC41KQorICAgICAgICBdOworICAgICAgICB2YXIgYW55RGlmZmVyID0gZmFsc2U7Cisg
ICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbG9jYXRpb25zLmxlbmd0aDsgbisrKSB7CisgICAg
ICAgICAgICB2YXIgc291cmNlID0gbG9jYXRpb25zW25dOworICAgICAgICAgICAgZm9yICh2YXIg
bSA9IDA7IG0gPCA0OyBtKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoc291cmNl
W21dIC0gdGFyZ2V0W21dKSA+IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgYW55RGlmZmVyID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChmYWlsdXJlTWVzc2FnZSArICI7
IHNob3VsZCBiZSAiICsgdG9TdHJpbmcodGFyZ2V0KSArICIsIHdhcyAiICsgdG9TdHJpbmcoc291
cmNlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWFueURpZmZlcikgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZChzdWNjZXNzTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgZnVuY3Rpb24gc2V0dXBCdWZmZXJzKHRsLCB0ciwgYmwsIGJyKSB7CisgICAgICAgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBxdWFkUGFyYW1ldGVyc1swXSk7CisgICAgICAgIGds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAg
ICAgMS4wLCAgMS4wLCB0ciwKKyAgICAgICAgICAtMS4wLCAgMS4wLCB0bCwKKyAgICAgICAgICAt
MS4wLCAtMS4wLCBibCwKKyAgICAgICAgICAgMS4wLCAgMS4wLCB0ciwKKyAgICAgICAgICAtMS4w
LCAtMS4wLCBibCwKKyAgICAgICAgICAgMS4wLCAtMS4wLCBicl0pLCBnbC5TVEFUSUNfRFJBVyk7
CisgICAgfTsKKworICAgIC8vIERyYXcgMTogKG5vIHZhcmlhdGlvbikKKyAgICBzZXR1cEJ1ZmZl
cnMoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICB3dHUuZHJhd1F1YWQoZ2wpOworICAgIGV4cGVj
dFJlc3VsdChbMCwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICAgIkRyYXcgMSAobm8gdmFy
aWF0aW9uKSByZXR1cm5lZCB0aGUgY29ycmVjdCBkYXRhIiwKKyAgICAgICAgICAgICAgICAgIkRy
YXcgMSAobm8gdmFyaWF0aW9uKSByZXR1cm5lZCBpbmNvcnJlY3QgZGF0YSIpOworCisgICAgLy8g
RHJhdyAyOiAodmFyaWF0aW9uIGluIHgpCisgICAgc2V0dXBCdWZmZXJzKDEuMCwgMC4wLCAxLjAs
IDAuMCk7CisgICAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgICBleHBlY3RSZXN1bHQoWzIwNCwgMCwg
MjA0LCAyNTVdLAorICAgICAgICAgICAgICAgICAiRHJhdyAyICh2YXJpYXRpb24gaW4geCkgcmV0
dXJuZWQgdGhlIGNvcnJlY3QgZGF0YSIsCisgICAgICAgICAgICAgICAgICJEcmF3IDIgKHZhcmlh
dGlvbiBpbiB4KSByZXR1cm5lZCBpbmNvcnJlY3QgZGF0YSIpOworCisgICAgLy8gRHJhdyAzOiAo
dmFyaWF0aW9uIGluIHkpCisgICAgc2V0dXBCdWZmZXJzKDEuMCwgMS4wLCAwLjAsIDAuMCk7Cisg
ICAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgICBleHBlY3RSZXN1bHQoWzAsIDIwNCwgMjA0LCAyNTVd
LAorICAgICAgICAgICAgICAgICAiRHJhdyAzICh2YXJpYXRpb24gaW4geSkgcmV0dXJuZWQgdGhl
IGNvcnJlY3QgZGF0YSIsCisgICAgICAgICAgICAgICAgICJEcmF3IDMgKHZhcmlhdGlvbiBpbiB5
KSByZXR1cm5lZCBpbmNvcnJlY3QgZGF0YSIpOworCisgICAgLy8gRHJhdyA0OiAodmFyaWF0aW9u
IGluIHggJiB5KQorICAgIHNldHVwQnVmZmVycygxLjAsIDAuNSwgMC41LCAwLjApOworICAgIHd0
dS5kcmF3UXVhZChnbCk7CisgICAgZXhwZWN0UmVzdWx0KFsxMDIsIDEwMiwgMjA0LCAyNTVdLAor
ICAgICAgICAgICAgICAgICAiRHJhdyA0ICh2YXJpYXRpb24gaW4geCAmIHkpIHJldHVybmVkIHRo
ZSBjb3JyZWN0IGRhdGEiLAorICAgICAgICAgICAgICAgICAiRHJhdyA0ICh2YXJpYXRpb24gaW4g
eCAmIHkpIHJldHVybmVkIGluY29ycmVjdCBkYXRhIik7CisKK30KKworZnVuY3Rpb24gcnVuVW5p
cXVlT2JqZWN0VGVzdCgpCit7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBnZXRFeHRlbnNpb24o
KSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBlYWNoIHRpbWUiKTsKKyAgICBnbC5nZXRFeHRlbnNp
b24oIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpLm15UHJvcGVydHkgPSAyOworICAgIGdjKCk7
CisgICAgc2hvdWxkQmUoJ2dsLmdldEV4dGVuc2lvbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IikubXlQcm9wZXJ0eScsICcyJyk7Cit9CisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzQzZTg2
ZTkxMjVmMTdlODI0NzAzYTM1YzUyMjQxZTgxNjcxNjBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy5odG1sCkBAIC0wLDAgKzEsNTUg
QEAKKzwhLS0KKworLyoKKyoqIENvcHlyaWdodCAoYykgMjAxMiBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCisqKgorKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQv
b3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyoqICJNYXRlcmlhbHMiKSwg
dG8gZGVhbCBpbiB0aGUgTWF0ZXJpYWxzIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwor
Kiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLAorKiogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29w
aWVzIG9mIHRoZSBNYXRlcmlhbHMsIGFuZCB0bworKiogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgTWF0ZXJpYWxzIGFyZSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyoqIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKKyoqCisqKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorKiogaW4gYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgorKioKKyoqIFRI
RSBNQVRFUklBTFMgQVJFIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsCisqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YKKyoqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyoqIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisq
KiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULAorKiogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyoqIE1BVEVSSUFMUyBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOIFRIRSBNQVRFUklBTFMuCisqLworCistLT4KKworPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0ZXN0UHJv
bG9ndWUoZ2wpIHsKKyAgICBpZiAoIWdsLmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXQi
KSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNfdGV4dHVyZV9mbG9hdCBzdXBwb3J0IC0t
IHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lv
biIpOworICAgIHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9J2dlbmVyYXRlVGVzdCgiUkdCQSIsICJGTE9BVCIsIHRlc3RQcm9sb2d1ZSkoKSc+Cis8Y2Fu
dmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgt
aW1hZ2UtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdl
LWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODFjZmIzMDRhNDVjYTM1OGQ4ZjkwYzBkMWYyMTM5NGM5
Mzg4MGVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13
aXRoLWltYWdlLWRhdGEuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IS0tCisKKy8qCisqKiBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKioKKyoqIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhCisqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRh
dGlvbiBmaWxlcyAodGhlCisqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFs
cyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyoqIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyoqIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBh
bmQgdG8KKyoqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisqKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisq
KgorKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyoqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIE1hdGVyaWFscy4KKyoqCisqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorKiogRVhQUkVTUyBPUiBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisq
KiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuCisqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKiogQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyoqIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFCisqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFU
RVJJQUxTLgorKi8KKworLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIHRlc3RQcm9sb2d1ZShnbCkgeworICAgIGlm
ICghZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgICAgIHRlc3RQ
YXNzZWQoIk5vIE9FU190ZXh0dXJlX2Zsb2F0IHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1
bGx5IGVuYWJsZWQgT0VTX3RleHR1cmVfZmxvYXQgZXh0ZW5zaW9uIik7CisgICAgcmV0dXJuIHRy
dWU7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0nZ2VuZXJhdGVUZXN0KCJS
R0JBIiwgIkZMT0FUIiwgdGVzdFByb2xvZ3VlKSgpJz4KKzxjYW52YXMgaWQ9InRleGNhbnZhcyIg
d2lkdGg9IjEiIGhlaWdodD0iMiI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0
aD0iMSIgaGVpZ2h0PSIyIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtaW1hZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRiZGM5Y2U4
ZTQ0OTI0MTkxYzNjYTcyZGVmMDRkMTk1ZjE2ZWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWltYWdlLmh0bWwKQEAgLTAsMCArMSw1NSBAQAor
PCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4K
KyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKiogIk1hdGVyaWFscyIpLCB0byBk
ZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisqKiB3
aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMg
b2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBN
YXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworKiogdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisqKiBpbiBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBNYXRlcmlhbHMuCisqKgorKiogVEhFIE1B
VEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorKiogSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyoqIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJQUxTIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisKKy0tPgorCis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZnVuY3Rpb24gdGVzdFByb2xvZ3Vl
KGdsKSB7CisgICAgaWYgKCFnbC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0IikpIHsK
KyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3RleHR1cmVfZmxvYXQgc3VwcG9ydCAtLSB0aGlz
IGlzIGxlZ2FsIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB0ZXN0UGFz
c2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdGV4dHVyZV9mbG9hdCBleHRlbnNpb24iKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdn
ZW5lcmF0ZVRlc3QoIlJHQkEiLCAiRkxPQVQiLCAiLi4iLCB0ZXN0UHJvbG9ndWUpKCknPgorPGNh
bnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48L2NhbnZhcz4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRo
LXZpZGVvLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZGViN2FlZThhNzk5ZmMxN2MyZDM5YTQ0NDVmYTlmNDg1MjcyYTBkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVv
Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBv
ZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo
ZQorKiogIk1hdGVyaWFscyIpLCB0byBkZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nCisqKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJt
aXQgcGVyc29ucyB0byB3aG9tIHRoZSBNYXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0bworKiogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkCisqKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBN
YXRlcmlhbHMuCisqKgorKiogVEhFIE1BVEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklM
SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LgorKiogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyoqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJ
QUxTIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisK
Ky0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC12aWRlby5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworZnVuY3Rpb24gdGVzdFByb2xvZ3VlKGdsKSB7CisgICAgaWYgKCFnbC5nZXRFeHRlbnNpb24o
Ik9FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3RleHR1
cmVfZmxvYXQgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBPRVNfdGV4
dHVyZV9mbG9hdCBleHRlbnNpb24iKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSdnZW5lcmF0ZVRlc3QoIlJHQkEiLCAiRkxPQVQiLCB0ZXN0
UHJvbG9ndWUpKCknPgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMy
Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHZpZGVvIHdpZHRoPSI2NDAiIGhlaWdodD0iMjI4IiBpZD0idmlkIiBjb250
cm9scz4KKyAgPHNvdXJjZSBzcmM9Ii4uL3Jlc291cmNlcy9yZWQtZ3JlZW4ubXA0IiAgdHlwZT0n
dmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJyAvPgorICA8c291cmNl
IHNyYz0iLi4vcmVzb3VyY2VzL3JlZC1ncmVlbi53ZWJtdnA4LndlYm0iIHR5cGU9J3ZpZGVvL3dl
Ym07IGNvZGVjcz0idnA4LCB2b3JiaXMiJyAvPgorICA8c291cmNlIHNyYz0iLi4vcmVzb3VyY2Vz
L3JlZC1ncmVlbi50aGVvcmEub2d2IiAgdHlwZT0ndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSwg
dm9yYmlzIicgLz4KKzwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL29lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZs
b2F0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FkMGE4YWQwNjBhNjIxYjRiNjhjMTM1NDFkZmQ2ODg4ZWZj
MGE2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQuaHRt
bApAQCAtMCwwICsxLDIzMCBAQAorPCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIFRo
ZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBvZiB0
aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQor
KiogIk1hdGVyaWFscyIpLCB0byBkZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nCisqKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2Us
IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBNYXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0bworKiogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1
ZGVkCisqKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBNYXRl
cmlhbHMuCisqKgorKiogVEhFIE1BVEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklMSVRZ
LCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgor
KiogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyoqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJQUxT
IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisKKy0t
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+V2ViR0wgT0VTX3RleHR1cmVfZmxvYXQgQ29uZm9ybWFuY2UgVGVzdHM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZGVza3RvcC1nbC1j
b25zdGFudHMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0eWxl
PSJ3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3RpbmcgZmxvYXRpbmctcG9pbnQgdGV4dHVy
ZXMgLS0+Cis8c2NyaXB0IGlkPSJ0ZXN0RnJhZ21lbnRTaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB0
ZXg7Cit1bmlmb3JtIHZlYzQgc3VidHJhY3RvcjsKK3ZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKK3Zv
aWQgbWFpbigpCit7CisgICAgdmVjNCBjb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKTsK
KyAgICBpZiAoYWJzKGNvbG9yLnIgLSBzdWJ0cmFjdG9yLnIpICsKKyAgICAgICAgYWJzKGNvbG9y
LmcgLSBzdWJ0cmFjdG9yLmcpICsKKyAgICAgICAgYWJzKGNvbG9yLmIgLSBzdWJ0cmFjdG9yLmIp
ICsKKyAgICAgICAgYWJzKGNvbG9yLmEgLSBzdWJ0cmFjdG9yLmEpIDwgOC4wKSB7CisgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8IS0tIFNoYWRlcnMgZm9yIHRlc3RpbmcgZmxvYXRpbmctcG9pbnQgcmVu
ZGVyIHRhcmdldHMgLS0+Cis8c2NyaXB0IGlkPSJwb3NpdGlvblZlcnRleFNoYWRlciIgdHlwZT0i
eC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwordm9pZCBtYWlu
KCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorPHNjcmlw
dCBpZD0iZmxvYXRpbmdQb2ludEZyYWdtZW50U2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdt
ZW50Ij4KK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxMDAwMC4wLCAx
MDAwMC4wLCAxMDAwMC4wLCAxMDAwMC4wKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxp
dHkgb2YgdGhlIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxl
LiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KGNhbnZhcyk7CisKK2lmICghZ2wpIHsKKyAgdGVzdEZhaWxlZCgiV2ViR0wg
Y29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgdGVzdFBhc3NlZCgiV2ViR0wg
Y29udGV4dCBleGlzdHMiKTsKKworICB2YXIgdGV4dHVyZWRTaGFkZXJzID0gWworICAgICAgd3R1
LnNldHVwU2ltcGxlVGV4dHVyZVZlcnRleFNoYWRlcihnbCksCisgICAgICAidGVzdEZyYWdtZW50
U2hhZGVyIgorICBdOworICB2YXIgdGVzdFByb2dyYW0gPQorICAgICAgd3R1LnNldHVwUHJvZ3Jh
bShnbCwKKyAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZWRTaGFkZXJzLAorICAgICAgICAg
ICAgICAgICAgICAgICBbJ3ZQb3NpdGlvbicsICd0ZXhDb29yZDAnXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgWzAsIDFdKTsKKyAgdmFyIHF1YWRQYXJhbWV0ZXJzID0gd3R1LnNldHVwVW5pdFF1
YWQoZ2wsIDAsIDEpOworCisgIC8vIEZpcnN0IHZlcmlmeSB0aGF0IGFsbG9jYXRpb24gb2YgZmxv
YXRpbmctcG9pbnQgdGV4dHVyZXMgZmFpbHMgaWYKKyAgLy8gdGhlIGV4dGVuc2lvbiBoYXMgbm90
IGJlZW4gZW5hYmxlZCB5ZXQuCisgIHJ1blRleHR1cmVDcmVhdGlvblRlc3QodGVzdFByb2dyYW0s
IGZhbHNlKTsKKworICBpZiAoIWdsLmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXQiKSkg
eworICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3RleHR1cmVfZmxvYXQgc3VwcG9ydCAtLSB0aGlz
IGlzIGxlZ2FsIik7CisgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkg
ZW5hYmxlZCBPRVNfdGV4dHVyZV9mbG9hdCBleHRlbnNpb24iKTsKKyAgICAgIHJ1blRleHR1cmVD
cmVhdGlvblRlc3QodGVzdFByb2dyYW0sIHRydWUsIGdsLlJHQkEsIDQsIFsxMDAwMCwgMTAwMDAs
IDEwMDAwLCAxMDAwMF0pOworICAgICAgcnVuVGV4dHVyZUNyZWF0aW9uVGVzdCh0ZXN0UHJvZ3Jh
bSwgdHJ1ZSwgZ2wuUkdCLCAzLCBbMTAwMDAsIDEwMDAwLCAxMDAwMCwgMF0pOworICAgICAgcnVu
VGV4dHVyZUNyZWF0aW9uVGVzdCh0ZXN0UHJvZ3JhbSwgdHJ1ZSwgZ2wuTFVNSU5BTkNFLCAxLCBb
MTAwMDAsIDEwMDAwLCAxMDAwMCwgMF0pOworICAgICAgcnVuVGV4dHVyZUNyZWF0aW9uVGVzdCh0
ZXN0UHJvZ3JhbSwgdHJ1ZSwgZ2wuQUxQSEEsIDEsIFswLCAwLCAwLCAxMDAwMF0pOworICAgICAg
cnVuVGV4dHVyZUNyZWF0aW9uVGVzdCh0ZXN0UHJvZ3JhbSwgdHJ1ZSwgZ2wuTFVNSU5BTkNFX0FM
UEhBLCAyLCBbMTAwMDAsIDEwMDAwLCAxMDAwMCwgMTAwMDBdKTsKKyAgICAgIHJ1blJlbmRlclRh
cmdldFRlc3QodGVzdFByb2dyYW0pOworICAgICAgcnVuVW5pcXVlT2JqZWN0VGVzdCgpOworICB9
Cit9CisKKy8vIE5lZWRzIHRvIGJlIGdsb2JhbCBmb3Igc2hvdWxkQmUgdG8gc2VlIGl0LgordmFy
IHBpeGVsczsKKworZnVuY3Rpb24gYWxsb2NhdGVUZXh0dXJlKCkKK3sKKyAgICB2YXIgdGV4dHVy
ZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VE
R0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQ
X1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJ0ZXh0dXJlIHBhcmFtZXRlciBzZXR1cCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJldHVy
biB0ZXh0dXJlOworfQorCitmdW5jdGlvbiBjaGVja1JlbmRlcmluZ1Jlc3VsdHMoKQoreworICAg
IHd0dS5jaGVja0NhbnZhcyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgInNob3VsZCBiZSBncmVlbiIp
OworfQorCitmdW5jdGlvbiBydW5UZXh0dXJlQ3JlYXRpb25UZXN0KHRlc3RQcm9ncmFtLCBleHRl
bnNpb25FbmFibGVkLCBvcHRfZm9ybWF0LCBvcHRfbnVtQ2hhbm5lbHMsIG9wdF9zdWJ0cmFjdG9y
KQoreworICAgIHZhciBmb3JtYXQgPSBvcHRfZm9ybWF0IHx8IGdsLlJHQkE7CisgICAgdmFyIG51
bWJlck9mQ2hhbm5lbHMgPSBvcHRfbnVtQ2hhbm5lbHMgfHwgNDsKKyAgICB2YXIgZXhwZWN0RmFp
bHVyZSA9ICFleHRlbnNpb25FbmFibGVkOworICAgIHZhciBzdWJ0cmFjdG9yID0gb3B0X3N1YnRy
YWN0b3IgfHwgWzEwMDAwLCAxMDAwMCwgMTAwMDAsIDEwMDAwXTsKKworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygidGVzdGluZyBmb3JtYXQ6ICIgKyB3dHUuZ2xFbnVtVG9TdHJpbmcoZ2wsIGZv
cm1hdCkgKworICAgICAgICAgICIgZXhwZWN0OiIgKyAoZXh0ZW5zaW9uRW5hYmxlZCA/ICJzdWNj
ZXNzIiA6ICJmYWlsdXJlIikpOworCisgICAgdmFyIHRleHR1cmUgPSBhbGxvY2F0ZVRleHR1cmUo
KTsKKyAgICAvLyBHZW5lcmF0ZSBkYXRhLgorICAgIHZhciB3aWR0aCA9IDI7CisgICAgdmFyIGhl
aWdodCA9IDI7CisgICAgdmFyIGRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0
ICogbnVtYmVyT2ZDaGFubmVscyk7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGRhdGEubGVu
Z3RoOyArK2lpKSB7CisgICAgICAgIGRhdGFbaWldID0gMTAwMDA7CisgICAgfQorICAgIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3Jt
YXQsIGdsLkZMT0FULCBkYXRhKTsKKyAgICBpZiAoZXhwZWN0RmFpbHVyZSkgeworICAgICAgICBn
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgImZsb2F0aW5nLXBvaW50IHRleHR1
cmUgYWxsb2NhdGlvbiBtdXN0IGJlIGRpc2FsbG93ZWQgaWYgT0VTX3RleHR1cmVfZmxvYXQgaXNu
J3QgZW5hYmxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZsb2F0aW5nLXBvaW50IHRleHR1cmUgYWxs
b2NhdGlvbiBzaG91bGQgc3VjY2VlZCBpZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBlbmFibGVkIik7
CisgICAgfQorICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB0ZXh0dXJlIGFjdHVhbGx5IHdvcmtzIGZv
ciBzYW1wbGluZyBhbmQgY29udGFpbnMgdGhlIGV4cGVjdGVkIGRhdGEuCisgICAgZ2wudW5pZm9y
bTFpKGdsLmdldFVuaWZvcm1Mb2NhdGlvbih0ZXN0UHJvZ3JhbSwgInRleCIpLCAwKTsKKyAgICBn
bC51bmlmb3JtNGZ2KGdsLmdldFVuaWZvcm1Mb2NhdGlvbih0ZXN0UHJvZ3JhbSwgInN1YnRyYWN0
b3IiKSwgc3VidHJhY3Rvcik7CisgICAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgICBjaGVja1JlbmRl
cmluZ1Jlc3VsdHMoKTsKK30KKworZnVuY3Rpb24gcnVuUmVuZGVyVGFyZ2V0VGVzdCh0ZXN0UHJv
Z3JhbSkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RpbmcgZmxvYXRpbmctcG9p
bnQgcmVuZGVyIHRhcmdldHMiKTsKKworICAgIHZhciB0ZXh0dXJlID0gYWxsb2NhdGVUZXh0dXJl
KCk7CisgICAgdmFyIHdpZHRoID0gMjsKKyAgICB2YXIgaGVpZ2h0ID0gMjsKKyAgICB2YXIgbnVt
YmVyT2ZDaGFubmVscyA9IDQ7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwgbnVsbCk7CisgICAg
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImZsb2F0aW5nLXBvaW50IHRleHR1cmUg
YWxsb2NhdGlvbiBzaG91bGQgc3VjY2VlZCBpZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBlbmFibGVk
Iik7CisKKyAgICAvLyBUcnkgdG8gdXNlIHRoaXMgdGV4dHVyZSBhcyBhIHJlbmRlciB0YXJnZXQu
CisgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgZ2wuYmluZEZyYW1l
YnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJE
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4
dHVyZSwgMCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAg
Ly8gSXQgaXMgbGVnYWwgZm9yIGEgV2ViR0wgaW1wbGVtZW50YXRpb24gZXhwb3NpbmcgdGhlIE9F
U190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbiB0bworICAgIC8vIHN1cHBvcnQgZmxvYXRpbmctcG9p
bnQgdGV4dHVyZXMgYnV0IG5vdCBhcyBhdHRhY2htZW50cyB0byBmcmFtZWJ1ZmZlciBvYmplY3Rz
LgorICAgIGlmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSAhPSBn
bC5GUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICBkZWJ1ZygiZmxvYXRpbmctcG9pbnQg
cmVuZGVyIHRhcmdldHMgbm90IHN1cHBvcnRlZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgcmVuZGVyUHJvZ3JhbSA9CisgICAgICAgIHd0dS5z
ZXR1cFByb2dyYW0oZ2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyJwb3NpdGlvblZlcnRl
eFNoYWRlciIsICJmbG9hdGluZ1BvaW50RnJhZ21lbnRTaGFkZXIiXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBbJ3ZQb3NpdGlvbiddLAorICAgICAgICAgICAgICAgICAgICAgICAgIFswXSk7
CisgICAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAicmVuZGVyaW5nIHRvIGZsb2F0aW5nLXBvaW50IHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQi
KTsKKworICAgIC8vIE5vdyBzYW1wbGUgZnJvbSB0aGUgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSBh
bmQgdmVyaWZ5IHdlIGdvdCB0aGUgY29ycmVjdCB2YWx1ZXMuCisgICAgZ2wuYmluZEZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXh0dXJlKTsKKyAgICBnbC51c2VQcm9ncmFtKHRlc3RQcm9ncmFtKTsKKyAgICBnbC51
bmlmb3JtMWkoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRlc3RQcm9ncmFtLCAidGV4IiksIDApOwor
ICAgIHd0dS5kcmF3UXVhZChnbCk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInJlbmRlcmluZyBmcm9tIGZsb2F0aW5nLXBvaW50IHRleHR1cmUgc2hvdWxkIHN1Y2NlZWQi
KTsKKyAgICBjaGVja1JlbmRlcmluZ1Jlc3VsdHMoKTsKK30KKworZnVuY3Rpb24gcnVuVW5pcXVl
T2JqZWN0VGVzdCgpCit7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBnZXRFeHRlbnNpb24oKSBy
ZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBlYWNoIHRpbWUiKTsKKyAgICBnbC5nZXRFeHRlbnNpb24o
Ik9FU190ZXh0dXJlX2Zsb2F0IikubXlQcm9wZXJ0eSA9IDI7CisgICAgZ2MoKTsKKyAgICBzaG91
bGRCZSgnZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdCIpLm15UHJvcGVydHknLCAn
MicpOworfQorCisKK2RlYnVnKCIiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXZlcnRleC1hcnJheS1vYmplY3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXZlcnRleC1hcnJheS1v
YmplY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjZiMzI0NGM0NmNkYWZmYWY4YjA5NjExNTcyZDQ0NDU2
MWVjZjBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdmVydGV4LWFycmF5LW9i
amVjdC5odG1sCkBAIC0wLDAgKzEsNjU1IEBACivvu788IS0tCisKKy8qCisqKiBDb3B5cmlnaHQg
KGMpIDIwMTIgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKioKKyoqIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisq
KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlCisqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyoqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyoqIGRpc3RyaWJ1dGUs
IHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8K
KyoqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvCisqKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisqKgorKiog
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQKKyoqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIE1hdGVyaWFscy4KKyoqCisqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMg
SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorKiogRVhQUkVTUyBPUiBJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisqKiBNRVJD
SEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuCisqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKiogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElB
QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyoqIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisq
KiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxT
LgorKi8KKworLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBDb25m
b3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8IS0tIGNvbW1lbnQgaW4gdGhlIHNjcmlwdCB0YWcgYmVsb3cgdG8gdGVzdCB0aHJvdWdoIEpT
IGVtdWFsYXRpb24gb2YgdGhlIGV4dGVuc2lvbi4gLS0+Cis8IS0tCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZGVtb3MvZ29vZ2xlL3Jlc291cmNlcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5qcyI+PC9z
Y3JpcHQ+CistLT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsi
PiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRl
ciIsIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247
CithdHRyaWJ1dGUgdmVjNCBhX2NvbG9yOwordmFyeWluZyB2ZWM0IHZfY29sb3I7Cit2b2lkIG1h
aW4odm9pZCkgeworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKKyAgICB2X2NvbG9yID0g
YV9jb2xvcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnNoYWRlciIsIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5nIHZlYzQg
dl9jb2xvcjsKK3ZvaWQgbWFpbih2b2lkKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIE9FU192ZXJ0ZXhfYXJyYXlf
b2JqZWN0IGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisK
K3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7
Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxsOworCitpZiAoIWdsKSB7CisgICAgdGVz
dEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0
ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgLy8gU2V0dXAgZW11bGF0
ZWQgT0VTVmVydGV4QXJyYXlPYmplY3QgaWYgaXQgaGFzIGJlZW4gaW5jbHVkZWQuCisgICAgaWYg
KHdpbmRvdy5zZXR1cFZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgIGRlYnVnKCJ1c2luZyBl
bXVhdGVkIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHNldHVwVmVydGV4QXJy
YXlPYmplY3QoZ2wpOworICAgIH0KKworICAgIC8vIFJ1biB0ZXN0cyB3aXRoIGV4dGVuc2lvbiBk
aXNhYmxlZAorICAgIHJ1bkJpbmRpbmdUZXN0RGlzYWJsZWQoKTsKKworICAgIC8vIFF1ZXJ5IHRo
ZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3MgaXQK
KyAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTm8gT0VTX3ZlcnRleF9hcnJheV9v
YmplY3Qgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVk
VGVzdChmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1
bGx5IGVuYWJsZWQgT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgZXh0ZW5zaW9uIik7CisKKyAgICAg
ICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVuQmluZGluZ1Rlc3RFbmFibGVk
KCk7CisgICAgICAgIHJ1bk9iamVjdFRlc3QoKTsKKyAgICAgICAgcnVuQXR0cmlidXRlVGVzdHMo
KTsKKyAgICAgICAgcnVuQXR0cmlidXRlVmFsdWVUZXN0cygpOworICAgICAgICBydW5EcmF3VGVz
dHMoKTsKKyAgICAgICAgcnVuRGVsZXRlVGVzdHMoKTsKKyAgICAgICAgcnVuQXJyYXlCdWZmZXJC
aW5kVGVzdHMoKTsKKyAgICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInRo
ZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blN1cHBv
cnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBzdXBwb3J0ZWQgPSBnbC5nZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgaWYgKHN1cHBvcnRlZC5pbmRleE9mKCJPRVNfdmVy
dGV4X2FycmF5X29iamVjdCIpID49IDApIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQp
IHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IGxpc3Rl
ZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IGxp
c3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWlsZWQiKTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgbGlzdGVkIGFzIHN1cHBv
cnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qgbm90IGxpc3RlZCBh
cyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBmYWlsZWQgLS0gdGhpcyBpcyBsZWdhbCIpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW5CaW5kaW5nVGVzdERpc2FibGVkKCkg
eworICAgIGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4dGVuc2lvbiBkaXNhYmxl
ZCIpOworICAgIAorICAgIC8vIFVzZSB0aGUgY29uc3RhbnQgZGlyZWN0bHkgYXMgd2UgZG9uJ3Qg
aGF2ZSB0aGUgZXh0ZW5zaW9uCisgICAgdmFyIFZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUyA9IDB4
ODVCNTsKKyAgICAKKyAgICBnbC5nZXRQYXJhbWV0ZXIoVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VT
KTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgIlZFUlRFWF9BUlJB
WV9CSU5ESU5HX09FUyBzaG91bGQgbm90IGJlIHF1ZXJ5YWJsZSBpZiBleHRlbnNpb24gaXMgZGlz
YWJsZWQiKTsKK30KKworZnVuY3Rpb24gcnVuQmluZGluZ1Rlc3RFbmFibGVkKCkgeworICAgIGRl
YnVnKCJUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4dGVuc2lvbiBlbmFibGVkIik7CisgICAg
CisgICAgc2hvdWxkQmUoImV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMiLCAiMHg4NUI1Iik7
CisgICAgCisgICAgZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMp
OworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJWRVJURVhfQVJSQVlfQklO
RElOR19PRVMgcXVlcnkgc2hvdWxkIHN1Y2NlZWQgaWYgZXh0ZW5zaW9uIGlzIGVuYWJsZSIpOwor
ICAgIAorICAgIC8vIERlZmF1bHQgdmFsdWUgaXMgbnVsbAorICAgIGlmIChnbC5nZXRQYXJhbWV0
ZXIoZXh0LlZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUykgPT09IG51bGwpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiRGVmYXVsdCB2YWx1ZSBvZiBWRVJURVhfQVJSQVlfQklORElOR19PRVMgaXMgbnVs
bCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkRlZmF1bHQgdmFsdWUgb2Yg
VkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTIGlzIG5vdCBudWxsIik7CisgICAgfQorICAgIAorICAg
IGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgYSBWQU8iKTsKKyAgICB2YXIgdmFvMCA9IGV4dC5jcmVh
dGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHZhciB2YW8xID0gZXh0LmNyZWF0ZVZlcnRleEFycmF5
T0VTKCk7CisgICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIoZXh0LlZFUlRFWF9BUlJB
WV9CSU5ESU5HX09FUykiKTsKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHZhbzApOworICAg
IGlmIChnbC5nZXRQYXJhbWV0ZXIoZXh0LlZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUykgPT0gdmFv
MCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJnbC5nZXRQYXJhbWV0ZXIoZXh0LlZFUlRFWF9BUlJB
WV9CSU5ESU5HX09FUykgaXMgZXhwZWN0ZWQgVkFPIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlfQklORElOR19PRVMp
IGlzIG5vdCBleHBlY3RlZCBWQU8iKQorICAgIH0KKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VT
KHZhbzEpOworICAgIGlmIChnbC5nZXRQYXJhbWV0ZXIoZXh0LlZFUlRFWF9BUlJBWV9CSU5ESU5H
X09FUykgPT0gdmFvMSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJnbC5nZXRQYXJhbWV0ZXIoZXh0
LlZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUykgaXMgZXhwZWN0ZWQgVkFPIik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2wuZ2V0UGFyYW1ldGVyKGV4dC5WRVJURVhfQVJSQVlf
QklORElOR19PRVMpIGlzIG5vdCBleHBlY3RlZCBWQU8iKQorICAgIH0KKyAgICBleHQuZGVsZXRl
VmVydGV4QXJyYXlPRVModmFvMSk7CisgICAgc2hvdWxkQmVOdWxsKCJnbC5nZXRQYXJhbWV0ZXIo
ZXh0LlZFUlRFWF9BUlJBWV9CSU5ESU5HX09FUykiKTsKKyAgICBleHQuYmluZFZlcnRleEFycmF5
T0VTKHZhbzEpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICJiaW5kaW5nIGEgZGVsZXRlZCB2ZXJ0ZXggYXJyYXkgb2JqZWN0Iik7CisgICAgZXh0LmJpbmRW
ZXJ0ZXhBcnJheU9FUyhudWxsKTsKKyAgICBzaG91bGRCZU51bGwoImdsLmdldFBhcmFtZXRlcihl
eHQuVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTKSIpOworICAgIGV4dC5kZWxldGVWZXJ0ZXhBcnJh
eU9FUyh2YW8xKTsKK30KKworZnVuY3Rpb24gcnVuT2JqZWN0VGVzdCgpIHsKKyAgICBkZWJ1Zygi
VGVzdGluZyBvYmplY3QgY3JlYXRpb24iKTsKKyAgICAKKyAgICB2YW8gPSBleHQuY3JlYXRlVmVy
dGV4QXJyYXlPRVMoKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiY3Jl
YXRlVmVydGV4QXJyYXlPRVMgc2hvdWxkIG5vdCBzZXQgYW4gZXJyb3IiKTsKKyAgICBzaG91bGRC
ZU5vbk51bGwoInZhbyIpOworICAgIAorICAgIC8vIEV4cGVjdCBmYWxzZSBpZiBuZXZlciBib3Vu
ZAorICAgIHNob3VsZEJlRmFsc2UoImV4dC5pc1ZlcnRleEFycmF5T0VTKHZhbykiKTsKKyAgICBl
eHQuYmluZFZlcnRleEFycmF5T0VTKHZhbyk7CisgICAgc2hvdWxkQmVUcnVlKCJleHQuaXNWZXJ0
ZXhBcnJheU9FUyh2YW8pIik7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKTsKKyAg
ICBzaG91bGRCZVRydWUoImV4dC5pc1ZlcnRleEFycmF5T0VTKHZhbykiKTsKKyAgICAKKyAgICBz
aG91bGRCZUZhbHNlKCJleHQuaXNWZXJ0ZXhBcnJheU9FUygpIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZXh0LmlzVmVydGV4QXJyYXlPRVMobnVsbCkiKTsKKyAgICAKKyAgICBleHQuZGVsZXRlVmVy
dGV4QXJyYXlPRVModmFvKTsKKyAgICB2YW8gPSBudWxsOworfQorCitmdW5jdGlvbiBydW5BdHRy
aWJ1dGVUZXN0cygpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBhdHRyaWJ1dGVzIHdvcmsgYWNyb3Nz
IGJpbmRpbmdzIik7CisgICAgCisgICAgdmFyIHN0YXRlcyA9IFtdOworICAgIAorICAgIHZhciBh
dHRyQ291bnQgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTKTsKKyAgICBm
b3IgKHZhciBuID0gMDsgbiA8IGF0dHJDb3VudDsgbisrKSB7CisgICAgICAgIGdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgbnVsbCk7CisgICAgICAgIAorICAgICAgICB2YXIgc3RhdGUgPSB7
fTsKKyAgICAgICAgc3RhdGVzLnB1c2goc3RhdGUpOworICAgICAgICAKKyAgICAgICAgdmFyIHZh
byA9IHN0YXRlLnZhbyA9IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBleHQu
YmluZFZlcnRleEFycmF5T0VTKHZhbyk7CisgICAgICAgIAorICAgICAgICB2YXIgZW5hYmxlQXJy
YXkgPSAobiAlIDIgPT0gMCk7CisgICAgICAgIGlmIChlbmFibGVBcnJheSkgeworICAgICAgICAg
ICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobik7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChlbmFibGVBcnJheSkgeworICAgICAgICAgICAgdmFyIGJ1ZmZlciA9
IHN0YXRlLmJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgICAgICAgICBnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgMTAyNCwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG4sIDEgKyBuICUgNCwgZ2wuRkxPQVQs
IHRydWUsIG4gKiA0LCBuICogNCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChl
bmFibGVBcnJheSkgeworICAgICAgICAgICAgdmFyIGVsYnVmZmVyID0gc3RhdGUuZWxidWZmZXIg
PSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIGVsYnVmZmVyKTsKKyAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIDEwMjQsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKTsKKyAgICB9Cisg
ICAgCisgICAgdmFyIGFueU1pc21hdGNoID0gZmFsc2U7CisgICAgZm9yICh2YXIgbiA9IDA7IG4g
PCBhdHRyQ291bnQ7IG4rKykgeworICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNbbl07CisgICAg
ICAgIAorICAgICAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHN0YXRlLnZhbyk7CisgICAgICAg
IAorICAgICAgICB2YXIgc2hvdWxkQmVFbmFibGVkID0gKG4gJSAyID09IDApOworICAgICAgICB2
YXIgaXNFbmFibGVkID0gZ2wuZ2V0VmVydGV4QXR0cmliKG4sIGdsLlZFUlRFWF9BVFRSSUJfQVJS
QVlfRU5BQkxFRCk7CisgICAgICAgIGlmIChzaG91bGRCZUVuYWJsZWQgIT0gaXNFbmFibGVkKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQgbm90
IHByZXNlcnZlZCIpOworICAgICAgICAgICAgYW55TWlzbWF0Y2ggPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2YXIgYnVmZmVyID0gZ2wuZ2V0VmVydGV4QXR0cmliKG4sIGds
LlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpOworICAgICAgICBpZiAoc2hvdWxk
QmVFbmFibGVkKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyID09IHN0YXRlLmJ1ZmZlcikgewor
ICAgICAgICAgICAgICAgIC8vIE1hdGNoZWQKKyAgICAgICAgICAgICAgICBpZiAoKGdsLmdldFZl
cnRleEF0dHJpYihuLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpID09IDEgKyBuICUgNCkg
JiYKKyAgICAgICAgICAgICAgICAgICAgKGdsLmdldFZlcnRleEF0dHJpYihuLCBnbC5WRVJURVhf
QVRUUklCX0FSUkFZX1RZUEUpID09IGdsLkZMT0FUKSAmJgorICAgICAgICAgICAgICAgICAgICAo
Z2wuZ2V0VmVydGV4QXR0cmliKG4sIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCkg
PT0gdHJ1ZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGdsLmdldFZlcnRleEF0dHJpYihuLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gbiAqIDQpICYmCisgICAgICAgICAgICAg
ICAgICAgIChnbC5nZXRWZXJ0ZXhBdHRyaWJPZmZzZXQobiwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9QT0lOVEVSKSA9PSBuICogNCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2hlZAor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlZFUlRFWF9BVFRSSUJfQVJSQVlfKiBub3QgcHJlc2VydmVkIik7CisgICAgICAgICAgICAgICAg
ICAgIGFueU1pc21hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlZFUlRFWF9BVFRSSUJfQVJSQVlf
QlVGRkVSX0JJTkRJTkcgbm90IHByZXNlcnZlZCIpOworICAgICAgICAgICAgICAgIGFueU1pc21h
dGNoID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQiBpcyBub3QgcHJlc2VydmVkCisgICAgICAgICAg
ICBpZiAoYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9CVUZGRVJfQklORElORyBub3QgcHJlc2VydmVkIik7CisgICAgICAgICAgICAgICAg
YW55TWlzbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2YXIgZWxidWZmZXIgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuRUxFTUVOVF9BUlJBWV9C
VUZGRVJfQklORElORyk7CisgICAgICAgIGlmIChzaG91bGRCZUVuYWJsZWQpIHsKKyAgICAgICAg
ICAgIGlmIChlbGJ1ZmZlciA9PSBzdGF0ZS5lbGJ1ZmZlcikgeworICAgICAgICAgICAgICAgIC8v
IE1hdGNoZWQKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyBub3QgcHJlc2VydmVkIik7CisgICAgICAg
ICAgICAgICAgYW55TWlzbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGVsYnVmZmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAg
ICAvLyBNYXRjaGVkCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgbm90IHByZXNlcnZlZCIpOworICAg
ICAgICAgICAgICAgIGFueU1pc21hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOworICAgIGlmICghYW55
TWlzbWF0Y2gpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGF0dHJpYnV0ZXMgcHJlc2VydmVk
IGFjcm9zcyBiaW5kaW5ncyIpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHZhciBuID0gMDsgbiA8
IGF0dHJDb3VudDsgbisrKSB7CisgICAgICAgIHZhciBzdGF0ZSA9IHN0YXRlc1tuXTsKKyAgICAg
ICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHN0YXRlLnZhbyk7CisgICAgfQorfQorCitmdW5j
dGlvbiBydW5BdHRyaWJ1dGVWYWx1ZVRlc3RzKCkgeworICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQg
YXR0cmlidXRlIHZhbHVlcyBhcmUgbm90IGF0dGFjaGVkIHRvIGJpbmRpbmdzIik7CisgICAgCisg
ICAgdmFyIHY7CisgICAgdmFyIHZhbzAgPSBleHQuY3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKyAg
ICB2YXIgYW55RmFpbGVkID0gZmFsc2U7CisgICAgCisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9F
UyhudWxsKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWI0ZigwLCAwLCAxLCAyLCAzKTsKKyAgICAKKyAg
ICB2ID0gZ2wuZ2V0VmVydGV4QXR0cmliKDAsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQik7Cisg
ICAgaWYgKCEodlswXSA9PSAwICYmIHZbMV0gPT0gMSAmJiB2WzJdID09IDIgJiYgdlszXSA9PSAz
KSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJWZXJ0ZXggYXR0cmliIHZhbHVlIG5vdCByb3VuZC10
cmlwcGVkPyIpOworICAgICAgICBhbnlGYWlsZWQgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBl
eHQuYmluZFZlcnRleEFycmF5T0VTKHZhbzApOworICAgIAorICAgIHYgPSBnbC5nZXRWZXJ0ZXhB
dHRyaWIoMCwgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKTsKKyAgICBpZiAoISh2WzBdID09IDAg
JiYgdlsxXSA9PSAxICYmIHZbMl0gPT0gMiAmJiB2WzNdID09IDMpKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoIlZlcnRleCBhdHRyaWIgdmFsdWUgcmVzZXQgYWNyb3NzIGJpbmRpbmdzIik7CisgICAg
ICAgIGFueUZhaWxlZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGdsLnZlcnRleEF0dHJpYjRm
KDAsIDQsIDUsIDYsIDcpOworICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisgICAg
CisgICAgdiA9IGdsLmdldFZlcnRleEF0dHJpYigwLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIp
OworICAgIGlmICghKHZbMF0gPT0gNCAmJiB2WzFdID09IDUgJiYgdlsyXSA9PSA2ICYmIHZbM10g
PT0gNykpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVmVydGV4IGF0dHJpYiB2YWx1ZSBib3VuZCB0
byBidWZmZXIiKTsKKyAgICAgICAgYW55RmFpbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
aWYgKCFhbnlGYWlsZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiVmVydGV4IGF0dHJpYnV0ZSB2
YWx1ZXMgYXJlIG5vdCBhdHRhY2hlZCB0byBiaW5kaW5ncyIpCisgICAgfQorICAgIAorICAgIGV4
dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VT
KHZhbzApOworfQorCitmdW5jdGlvbiBydW5EcmF3VGVzdHMoKSB7CisgICAgZGVidWcoIlRlc3Rp
bmcgZHJhd3Mgd2l0aCB2YXJpb3VzIFZBTyBiaW5kaW5ncyIpOworICAgIAorICAgIGNhbnZhcy53
aWR0aCA9IDUwOyBjYW52YXMuaGVpZ2h0ID0gNTA7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgY2Fu
dmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICAKKyAgICB2YXIgdmFvMCA9IGV4dC5jcmVh
dGVWZXJ0ZXhBcnJheU9FUygpOworICAgIHZhciB2YW8xID0gZXh0LmNyZWF0ZVZlcnRleEFycmF5
T0VTKCk7CisKKyAgICB2YXIgb3B0X3Bvc2l0aW9uTG9jYXRpb24gPSAwOworICAgIHZhciBvcHRf
dGV4Y29vcmRMb2NhdGlvbiA9IDE7CisgICAgCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBT
aW1wbGVUZXh0dXJlUHJvZ3JhbShnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29y
ZExvY2F0aW9uKTsKKyAgICAKKyAgICBmdW5jdGlvbiBzZXR1cFF1YWQocykgeworICAgICAgICB2
YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICAgICAgICBnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgICAgICAgMS4wICog
cywgIDEuMCAqIHMsIDAuMCwKKyAgICAgICAgICAgIC0xLjAgKiBzLCAgMS4wICogcywgMC4wLAor
ICAgICAgICAgICAgLTEuMCAqIHMsIC0xLjAgKiBzLCAwLjAsCisgICAgICAgICAgICAgMS4wICog
cywgIDEuMCAqIHMsIDAuMCwKKyAgICAgICAgICAgIC0xLjAgKiBzLCAtMS4wICogcywgMC4wLAor
ICAgICAgICAgICAgIDEuMCAqIHMsIC0xLjAgKiBzLCAwLjBdKSwgZ2wuU1RBVElDX0RSQVcpOwor
ICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShvcHRfcG9zaXRpb25Mb2NhdGlvbik7
CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIob3B0X3Bvc2l0aW9uTG9jYXRpb24sIDMs
IGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgICAgdmFyIHZlcnRleE9iamVjdCA9IGds
LmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
dmVydGV4T2JqZWN0KTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5l
dyBGbG9hdDMyQXJyYXkoWworICAgICAgICAgICAgMS4wICogcywgMS4wICogcywKKyAgICAgICAg
ICAgIDAuMCAqIHMsIDEuMCAqIHMsCisgICAgICAgICAgICAwLjAgKiBzLCAwLjAgKiBzLAorICAg
ICAgICAgICAgMS4wICogcywgMS4wICogcywKKyAgICAgICAgICAgIDAuMCAqIHMsIDAuMCAqIHMs
CisgICAgICAgICAgICAxLjAgKiBzLCAwLjAgKiBzXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAg
ICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob3B0X3RleGNvb3JkTG9jYXRpb24pOworICAg
ICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG9wdF90ZXhjb29yZExvY2F0aW9uLCAyLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gcmVhZExvY2F0
aW9uKHgsIHkpIHsKKyAgICAgICAgdmFyIHBpeGVscyA9IG5ldyBVaW50OEFycmF5KDEgKiAxICog
NCk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgcGl4ZWxzKTsKKyAgICAgICAgcmV0dXJuIHBpeGVsczsKKyAgICB9OworICAgIGZ1
bmN0aW9uIHRlc3RQaXhlbChibGFja0xpc3QsIHdoaXRlTGlzdCkgeworICAgICAgICBmdW5jdGlv
biB0ZXN0TGlzdChsaXN0LCBleHBlY3RlZCkgeworICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7
IG4gPCBsaXN0Lmxlbmd0aDsgbisrKSB7CisgICAgICAgICAgICAgICAgdmFyIGwgPSBsaXN0W25d
OworICAgICAgICAgICAgICAgIHZhciB4ID0gLU1hdGguZmxvb3IobCAqIGNhbnZhcy53aWR0aCAv
IDIpICsgY2FudmFzLndpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IC1NYXRoLmZs
b29yKGwgKiBjYW52YXMuaGVpZ2h0IC8gMikgKyBjYW52YXMuaGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgICAgICB2YXIgc291cmNlID0gcmVhZExvY2F0aW9uKHgsIHkpOworICAgICAgICAgICAgICAg
IGlmIChNYXRoLmFicyhzb3VyY2VbMF0gLSBleHBlY3RlZCkgPiAyKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGVzdExp
c3QoYmxhY2tMaXN0LCAwKSAmJiB0ZXN0TGlzdCh3aGl0ZUxpc3QsIDI1NSk7CisgICAgfTsKKyAg
ICBmdW5jdGlvbiB2ZXJpZnlEcmF3KGRyYXdOdW1iZXIsIHMpIHsKKyAgICAgICAgd3R1LmRyYXdR
dWFkKGdsKTsKKyAgICAgICAgdmFyIGJsYWNrTGlzdCA9IFtdOworICAgICAgICB2YXIgd2hpdGVM
aXN0ID0gW107CisgICAgICAgIHZhciBwb2ludHMgPSBbMC4wLCAwLjIsIDAuNCwgMC42LCAwLjgs
IDEuMF07CisgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcG9pbnRzLmxlbmd0aDsgbisrKSB7
CisgICAgICAgICAgICBpZiAocG9pbnRzW25dIDw9IHMpIHsKKyAgICAgICAgICAgICAgICBibGFj
a0xpc3QucHVzaChwb2ludHNbbl0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB3aGl0ZUxpc3QucHVzaChwb2ludHNbbl0pOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGlmICh0ZXN0UGl4ZWwoYmxhY2tMaXN0LCB3aGl0ZUxpc3QpKSB7CisgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJEcmF3ICIgKyBkcmF3TnVtYmVyICsgIiBwYXNzZWQgcGl4ZWwgdGVz
dCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRHJhdyAiICsg
ZHJhd051bWJlciArICIgZmFpbGVkIHBpeGVsIHRlc3QiKTsKKyAgICAgICAgfQorICAgIH07Cisg
ICAgCisgICAgLy8gU2V0dXAgYWxsIGJpbmRpbmdzCisgICAgc2V0dXBRdWFkKDEpOworICAgIGV4
dC5iaW5kVmVydGV4QXJyYXlPRVModmFvMCk7CisgICAgc2V0dXBRdWFkKDAuNSk7CisgICAgZXh0
LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8xKTsKKyAgICBzZXR1cFF1YWQoMC4yNSk7CisgICAgCisg
ICAgLy8gVmVyaWZ5IGRyYXdpbmcKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOwor
ICAgIHZlcmlmeURyYXcoMCwgMSk7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8wKTsK
KyAgICB2ZXJpZnlEcmF3KDEsIDAuNSk7CisgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh2YW8x
KTsKKyAgICB2ZXJpZnlEcmF3KDIsIDAuMjUpOworICAgIAorICAgIGV4dC5iaW5kVmVydGV4QXJy
YXlPRVMobnVsbCk7CisgICAgZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHZhbzApOworICAgIGV4
dC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2YW8xKTsKKworICAgIC8vIERpc2FibGUgZ2xvYmFsIHZl
cnRleCBhdHRyaWIgYXJyYXkKKyAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkob3B0X3Bv
c2l0aW9uTG9jYXRpb24pOworICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShvcHRfdGV4
Y29vcmRMb2NhdGlvbik7CisKKyAgICAvLyBEcmF3IHdpdGggdmFsdWVzLgorICAgIHZhciBwb3Np
dGlvbkxvYyA9IDA7CisgICAgdmFyIGNvbG9yTG9jID0gMTsKKyAgICB2YXIgZ3JpZFJlcyA9IDE7
CisgICAgd3R1LnNldHVwUXVhZChnbCwgZ3JpZFJlcywgcG9zaXRpb25Mb2MpOworICAgIC8vIFNl
dCB0aGUgdmVydGV4IGNvbG9yIHRvIHJlZC4KKyAgICBnbC52ZXJ0ZXhBdHRyaWI0Zihjb2xvckxv
YywgMSwgMCwgMCwgMSk7CisKKyAgICB2YXIgdmFvMCA9IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9F
UygpOworICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVModmFvMCk7CisgICAgdmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBTaW1wbGVWZXJ0ZXhDb2xvclByb2dyYW0oZ2wsIHBvc2l0aW9uTG9jLCBjb2xv
ckxvYyk7CisgICAgd3R1LnNldHVwUXVhZChnbCwgZ3JpZFJlcywgcG9zaXRpb25Mb2MpOworICAg
IC8vIFNldCB0aGUgdmVydGV4IGNvbG9yIHRvIGdyZWVuLgorICAgIGdsLnZlcnRleEF0dHJpYjRm
KGNvbG9yTG9jLCAwLCAxLCAwLCAxKTsKKyAgICB3dHUuZHJhd0luZGV4ZWRRdWFkKGdsLCBncmlk
UmVzKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUsIDAsIDI1NV0sICJzaG91bGQg
YmUgZ3JlZW4iKQorICAgIGV4dC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2YW8wKTsKKyAgICB3dHUu
ZHJhd0luZGV4ZWRRdWFkKGdsLCBncmlkUmVzKTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFsw
LCAyNTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iKQorfQorCitmdW5jdGlvbiBydW5EZWxl
dGVUZXN0cygpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyB1c2luZyBkZWxldGVkIGJ1ZmZlcnMgcmVm
ZXJlbmNlZCBieSBWQU9zIik7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
Z2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsiYV9wb3NpdGlvbiIsICJhX2NvbG9yIl0pOwor
ICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICB2YXIgcG9zaXRpb25CdWZmZXIgPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9z
aXRpb25CdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoCisgICAgICAgIGdsLkFSUkFZX0JVRkZF
UiwKKyAgICAgICAgbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgICAgIDEuMCwgIDEuMCwKKyAg
ICAgICAgICAtMS4wLCAgMS4wLAorICAgICAgICAgIC0xLjAsIC0xLjAsCisgICAgICAgICAgIDEu
MCwgLTEuMF0pLAorICAgICAgICBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICB2YXIgY29sb3JzID0g
WworICAgICAgWzI1NSwgICAwLCAgIDAsIDI1NV0sCisgICAgICBbICAwLCAyNTUsICAgMCwgMjU1
XSwKKyAgICAgIFsgIDAsICAgMCwgMjU1LCAyNTVdLAorICAgICAgWyAgMCwgMjU1LCAyNTUsIDI1
NV0KKyAgICBdOworICAgIHZhciBjb2xvckJ1ZmZlcnMgPSBbXTsKKyAgICB2YXIgZWxlbWVudEJ1
ZmZlcnMgPSBbXTsKKyAgICB2YXIgdmFvcyA9IFtdOworICAgIGZvciAodmFyIGlpID0gMDsgaWkg
PCBjb2xvcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICB2YXIgdmFvID0gZXh0LmNyZWF0ZVZlcnRl
eEFycmF5T0VTKCk7CisgICAgICB2YW9zLnB1c2godmFvKTsKKyAgICAgIGV4dC5iaW5kVmVydGV4
QXJyYXlPRVModmFvKTsKKyAgICAgIC8vIFNldCB0aGUgcG9zaXRpb24gYnVmZmVyCisgICAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgcG9zaXRpb25CdWZmZXIpOworICAgICAgZ2wu
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDAsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAgIHZhciBlbGVtZW50QnVmZmVy
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICBlbGVtZW50QnVmZmVycy5wdXNoKGVsZW1lbnRC
dWZmZXIpOworICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxl
bWVudEJ1ZmZlcik7CisgICAgICBnbC5idWZmZXJEYXRhKAorICAgICAgICAgIGdsLkVMRU1FTlRf
QVJSQVlfQlVGRkVSLAorICAgICAgICAgIG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAwLCAyLCAz
XSksCisgICAgICAgICAgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAvLyBTZXR1cCB0aGUgY29s
b3IgYXR0cmliCisgICAgICB2YXIgY29sb3IgPSBjb2xvcnNbaWldOworICAgICAgaWYgKGlpIDwg
MykgeworICAgICAgICB2YXIgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAg
ICAgY29sb3JCdWZmZXJzLnB1c2goY29sb3JCdWZmZXIpOworICAgICAgICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgY29sb3JCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoCisgICAgICAgICAgWyBjb2xvclswXSwgY29s
b3JbMV0sIGNvbG9yWzJdLCBjb2xvclszXSwKKyAgICAgICAgICAgIGNvbG9yWzBdLCBjb2xvclsx
XSwgY29sb3JbMl0sIGNvbG9yWzNdLAorICAgICAgICAgICAgY29sb3JbMF0sIGNvbG9yWzFdLCBj
b2xvclsyXSwgY29sb3JbM10sCisgICAgICAgICAgICBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9y
WzJdLCBjb2xvclszXQorICAgICAgICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGds
LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKDEsIDQsIGdsLlVOU0lHTkVEX0JZVEUsIHRydWUsIDAsIDApOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgZ2wudmVydGV4QXR0cmliNGYoMSwgY29sb3JbMF0gLyAyNTUsIGNvbG9yWzFdIC8g
MjU1LCBjb2xvclsyXSAvIDI1NSwgY29sb3JbM10gLyAyNTUpOworICAgICAgfQorICAgIH0KKwor
ICAgIC8vIGRlbGV0ZSB0aGUgY29sb3IgYnVmZmVycyBBTkQgdGhlIHBvc2l0aW9uIGJ1ZmZlci4K
KyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpOworICAgIGZvciAodmFyIGlpID0gMDsg
aWkgPCBjb2xvckJ1ZmZlcnMubGVuZ3RoOyArK2lpKSB7CisgICAgICBnbC5kZWxldGVCdWZmZXIo
Y29sb3JCdWZmZXJzW2lpXSk7CisgICAgICBnbC5kZWxldGVCdWZmZXIoZWxlbWVudEJ1ZmZlcnNb
aWldKTsKKyAgICAgIC8vIFRoZSBidWZmZXJzIHNob3VsZCBzdGlsbCBiZSB2YWxpZCBhdCB0aGlz
IHBvaW50LCBzaW5jZSBpdCB3YXMgYXR0YWNoZWQgdG8gdGhlIFZBTworICAgICAgaWYoIWdsLmlz
QnVmZmVyKGNvbG9yQnVmZmVyc1tpaV0pKSB7CisgICAgICAgIHRlc3RGYWlsZWQoImJ1ZmZlciBy
ZW1vdmVkIHRvbyBlYXJseSIpOworICAgICAgfQorICAgIH0KKyAgICBnbC5kZWxldGVCdWZmZXIo
cG9zaXRpb25CdWZmZXIpOworCisgICAgLy8gUmVuZGVyIHdpdGggdGhlIGRlbGV0ZWQgYnVmZmVy
cy4gQXMgdGhleSBhcmUgcmVmZXJlbmNlZCBieSBWQU9zIHRoZXkKKyAgICAvLyBtdXN0IHN0aWxs
IGJlIGFyb3VuZC4KKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY29sb3JzLmxlbmd0aDsgKytp
aSkgeworICAgICAgdmFyIGNvbG9yID0gY29sb3JzW2lpXTsKKyAgICAgIGV4dC5iaW5kVmVydGV4
QXJyYXlPRVModmFvc1tpaV0pOworICAgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywg
NiwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgICAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIGNvbG9y
LCAic2hvdWxkIGJlICIgKyBjb2xvcik7CisgICAgfQorCisgICAgLy8gQ2xlYW4gdXAuCisgICAg
Zm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvbG9yQnVmZmVycy5sZW5ndGg7ICsraWkpIHsKKyAgICAg
IGV4dC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh2YW9zW2lpXSk7CisgICAgfQorCisgICAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IGNvbG9yQnVmZmVycy5sZW5ndGg7ICsraWkpIHsKKyAgICAgIC8vIFRo
ZSBidWZmZXJzIHNob3VsZCBubyBsb25nZXIgYmUgdmFsaWQgbm93IHRoYXQgdGhlIFZBT3MgYXJl
IGRlbGV0ZWQKKyAgICAgIGlmKGdsLmlzQnVmZmVyKGNvbG9yQnVmZmVyc1tpaV0pKSB7CisgICAg
ICAgIHRlc3RGYWlsZWQoImJ1ZmZlciBub3QgcHJvcGVybHkgY2xlYW5lZCB1cCBhZnRlciBWQU8g
ZGVsZXRpb24iKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bkFycmF5QnVmZmVy
QmluZFRlc3RzKCkgeworICAgIGRlYnVnKCJUZXN0aW5nIHRoYXQgVkFPcyBkb24ndCBlZmZlY3Qg
QVJSQVlfQlVGRkVSIGJpbmRpbmcuIik7CisKKyAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51
bGwpOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXIi
LCAiZnNoYWRlciJdLCBbImFfY29sb3IiLCAiYV9wb3NpdGlvbiJdKTsKKyAgICBnbC51c2VQcm9n
cmFtKHByb2dyYW0pOworCisgICAgLy8gY3JlYXRlIHNoYXJlZCBlbGVtZW50IGJ1dWZmZXIKKyAg
ICB2YXIgZWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIC8vIGJpbmQgdG8g
ZGVmYXVsdAorICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVsZW1l
bnRCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoCisgICAgICAgIGdsLkVMRU1FTlRfQVJSQVlf
QlVGRkVSLAorICAgICAgICBuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMCwgMiwgM10pLAorICAg
ICAgICBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBmaXJzdCBjcmVhdGUgdGhlIGJ1ZmZlcnMg
Zm9yIG5vIHZhbyBkcmF3LgorICAgIHZhciBub25WQU9Db2xvckJ1ZmZlciA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBub25WQU9Db2xvckJ1
ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBVaW50OEFycmF5
KAorICAgICAgWyAwLCAyNTUsIDAsIDI1NSwKKyAgICAgICAgMCwgMjU1LCAwLCAyNTUsCisgICAg
ICAgIDAsIDI1NSwgMCwgMjU1LAorICAgICAgICAwLCAyNTUsIDAsIDI1NSwKKyAgICAgIF0pLCBn
bC5TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBzaGFyZWQgcG9zaXRpb24gYnVmZmVyLgorICAgIHZh
ciBwb3NpdGlvbkJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBwb3NpdGlvbkJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YSgKKyAg
ICAgICAgZ2wuQVJSQVlfQlVGRkVSLAorICAgICAgICBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAg
ICAgICAgMS4wLCAgMS4wLAorICAgICAgICAgIC0xLjAsICAxLjAsCisgICAgICAgICAgLTEuMCwg
LTEuMCwKKyAgICAgICAgICAgMS4wLCAtMS4wXSksCisgICAgICAgIGdsLlNUQVRJQ19EUkFXKTsK
KworICAgIC8vIGF0dGFjaCBwb3NpdGlvbiBidWZmZXIgdG8gZGVmYXVsdAorICAgIGdsLmVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMiwg
Z2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIC8vIG5vdyBjcmVhdGUgdmFvCisgICAgdmFy
IHZhbyA9IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgIGV4dC5iaW5kVmVydGV4QXJy
YXlPRVModmFvKTsKKworICAgIC8vIGF0dGFjaCB0aGUgcG9zaXRpb24gYnVmZmVyIHZhbworICAg
IGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50
ZXIoMSwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIHZhciB2YW9Db2xvckJ1ZmZl
ciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDAp
OworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wuVU5TSUdORURfQllURSwgdHJ1
ZSwgMCwgMCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZhb0NvbG9yQnVm
ZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXko
CisgICAgICBbIDI1NSwgMCwgMCwgMjU1LAorICAgICAgICAyNTUsIDAsIDAsIDI1NSwKKyAgICAg
ICAgMjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDI1NSwgMCwgMCwgMjU1LAorICAgICAgXSksIGds
LlNUQVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBn
bC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIGdsLlVOU0lHTkVEX0JZVEUsIHRydWUsIDAsIDAp
OworCisgICAgLy8gbm93IHNldCB0aGUgYnVmZmVyIGJhY2sgdG8gdGhlIG5vblZBT0NvbG9yQnVm
ZmVyCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG5vblZBT0NvbG9yQnVmZmVy
KTsKKworICAgIC8vIGJpbmQgdG8gdmFvCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlcik7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFO
R0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBb
MjU1LCAwLCAwLCAyNTVdLCAic2hvdWxkIGJlIHJlZCIpOworCisgICAgLy8gdW5iaW5kIHZhbwor
ICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7CisKKyAgICAvLyBBdCB0aGlzIHBvaW50
IHRoZSBub25WQU9Db2xvckJ1ZmZlciBzaG91bGQgYmUgc3RpbGwgYmUgYm91bmQuCisgICAgLy8g
SWYgdGhlIFdlYkdMIGltcGwgaXMgZW11bGF0aW5nIFZBT3MgaXQgbXVzdCBtYWtlIHN1cmUKKyAg
ICAvLyBpdCBjb3JyZWN0bHkgcmVzdG9yZXMgdGhpcyBiaW5kaW5nLgorICAgIGdsLmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgZ2wu
VU5TSUdORURfQllURSwgdHJ1ZSwgMCwgMCk7CisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFO
R0xFUywgNiwgZ2wuVU5TSUdORURfQllURSwgMCk7CisgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBb
MCwgMjU1LCAwLCAyNTVdLCAic2hvdWxkIGJlIGdyZWVuIik7Cit9CisKK2RlYnVnKCIiKTsKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXMzdGMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYWFiNzM3YjQ4NGYxOTU3NmRkNDRkNTMzYjg2YmE4YjU4OTE4YTE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtczN0Yy5odG1s
CkBAIC0wLDAgKzEsNjM2IEBACivvu788IS0tCisKKy8qCisqKiBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKioKKyoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisqKiBjb3B5IG9m
IHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
CisqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcKKyoqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyoqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8KKyoqIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvCisqKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisqKgorKiogVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQKKyoqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIE1h
dGVyaWFscy4KKyoqCisqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorKiogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisqKiBNRVJDSEFOVEFCSUxJ
VFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu
CisqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWQorKiogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyoqIFRPUlQgT1IgT1RIRVJXSVNFLCBB
UklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisqKiBNQVRFUklB
TFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgorKi8KKwor
LS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHRpdGxlPldlYkdMIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzxzdHlsZT4KK2ltZyB7CisgYm9yZGVyOiAxcHggc29s
aWQgYmxhY2s7CisgbWFyZ2luLXJpZ2h0OiAxZW07Cit9CisudGVzdGltYWdlcyB7Cit9CisKKy50
ZXN0aW1hZ2VzIGJyIHsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50ZXN0aW1hZ2VzID4gZGl2IHsK
KyAgZmxvYXQ6IGxlZnQ7CisgIG1hcmdpbjogMWVtOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iOCIgaGVpZ2h0PSI4IiBzdHlsZT0id2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7Ij48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhl
IFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxh
YmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciBpbWdfNHg0X3JnYmFfcmF3ID0gbmV3IFVpbnQ4
QXJyYXkoWworICAgIDB4ZmYsMHgwMCwweDAwLDB4NjksMHgwMCwweGZmLDB4MDAsMHhmZiwweGZm
LDB4MDAsMHgwMCwweGZmLDB4MDAsMHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhmZiww
eDAwLDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHgwMCwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhm
ZiwweGZmLDB4MDAsMHgwMCwweGZmLDB4ZmYsMHgwMCwweDAwLDB4ZmYsMHhmZiwweDAwLDB4MDAs
MHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4
MDAsMHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhmZiwweDAwLDB4ZmYsCitdKTsKK3Zh
ciBpbWdfNHg0X3JnYl9keHQxID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4ZTAsMHgwNywweDAw
LDB4ZjgsMHgxMSwweDEwLDB4MTUsMHgwMCwKK10pOwordmFyIGltZ180eDRfcmdiYV9keHQxID0g
bmV3IFVpbnQ4QXJyYXkoWworICAgIDB4ZTAsMHgwNywweDAwLDB4ZjgsMHgxMywweDEwLDB4MTUs
MHgwMCwKK10pOwordmFyIGltZ180eDRfcmdiYV9keHQzID0gbmV3IFVpbnQ4QXJyYXkoWworICAg
IDB4ZjYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZjgsMHhlMCww
eDA3LDB4NDQsMHg0NSwweDQwLDB4NTUsCitdKTsKK3ZhciBpbWdfNHg0X3JnYmFfZHh0NSA9IG5l
dyBVaW50OEFycmF5KFsKKyAgICAweGY2LDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4
ZmYsMHgwMCwweGY4LDB4ZTAsMHgwNywweDQ0LDB4NDUsMHg0MCwweDU1LAorXSk7Cit2YXIgaW1n
Xzh4OF9yZ2JhX3JhdyA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZmLDB4MDAsMHgwMCwweDY5
LDB4MDAsMHhmZiwweDAwLDB4ZmYsMHhmZiwweDAwLDB4MDAsMHhmZiwweDAwLDB4ZmYsMHgwMCww
eGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHgwMCwweDAwLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHgw
MCwweGZmLDB4MDAsMHgwMCwweGZmLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHg2OSwweDAwLDB4ZmYs
MHgwMCwweGZmLDB4ZmYsMHgwMCwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhmZiwweDAwLDB4
MDAsMHhmZiwweGZmLDB4MDAsMHgwMCwweGZmLDB4ZmYsMHhmZiwweGZmLDB4MDAsMHhmZiwweDAw
LDB4MDAsMHhmZiwweGZmLDB4ZmYsMHgwMCwweDAwLDB4ZmYsMHhmZiwweDAwLDB4MDAsMHhmZiww
eGZmLDB4MDAsMHgwMCwweGZmLDB4MDAsMHhmZiwweDAwLDB4ZmYsMHhmZiwweGZmLDB4MDAsMHhm
ZiwweGZmLDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHgwMCwweDAwLDB4ZmYs
MHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4
MDAsMHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHgwMCwweGZmLDB4ZmYsMHgwMCwweDAw
LDB4ZmYsMHhmZiwweDAwLDB4MDAsMHhmZiwweGZmLDB4MDAsMHgwMCwweGZmLDB4ZmYsMHgwMCww
eGZmLDB4MDAsMHhmZiwweGZmLDB4MDAsMHhmZiwweGZmLDB4MDAsMHhmZiwweDAwLDB4ZmYsMHhm
ZiwweDAwLDB4ZmYsMHhmZiwweDAwLDB4MDAsMHhmZiwweGZmLDB4MDAsMHhmZiwweGZmLDB4ZmYs
MHgwMCwweDAwLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHgwMCwweGZmLDB4
ZmYsMHhmZiwweDAwLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHgwMCwweGZm
LDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHhmZiwweGZmLDB4MDAsMHgwMCww
eGZmLDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHgwMCwweDY5LDB4MDAsMHhm
ZiwweDAwLDB4ZmYsMHgwMCwweGZmLDB4MDAsMHhmZiwweGZmLDB4MDAsMHhmZiwweGZmLDB4MDAs
MHgwMCwweGZmLDB4ZmYsMHgwMCwweDAwLDB4ZmYsMHhmZiwweDAwLDB4MDAsMHhmZiwweGZmLDB4
MDAsMHhmZiwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHg2OSwweGZmLDB4MDAsMHhmZiwweGZm
LDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHhmZiww
eGZmLDB4MDAsMHhmZiwweGZmLDB4ZmYsMHgwMCwweGZmLDB4ZmYsMHhmZiwweDAwLDB4ZmYsMHhm
ZiwweGZmLAorXSk7Cit2YXIgaW1nXzh4OF9yZ2JfZHh0MSA9IG5ldyBVaW50OEFycmF5KFsKKyAg
ICAweGUwLDB4MDcsMHgwMCwweGY4LDB4MTEsMHgxMCwweDE1LDB4MDAsMHgxZiwweDAwLDB4ZTAs
MHhmZiwweDExLDB4MTAsMHgxNSwweDAwLDB4ZTAsMHgwNywweDFmLDB4ZjgsMHg0NCwweDQ1LDB4
NDAsMHg1NSwweDFmLDB4MDAsMHhmZiwweDA3LDB4NDQsMHg0NSwweDQwLDB4NTUsCitdKTsKK3Zh
ciBpbWdfOHg4X3JnYmFfZHh0MSA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGUwLDB4MDcsMHgw
MCwweGY4LDB4MTMsMHgxMywweDE1LDB4MDAsMHgxZiwweDAwLDB4ZTAsMHhmZiwweDExLDB4MTAs
MHgxNSwweDAwLDB4ZTAsMHgwNywweDFmLDB4ZjgsMHg0NCwweDQ1LDB4NDMsMHg1NywweDFmLDB4
MDAsMHhmZiwweDA3LDB4NDQsMHg0NSwweDQwLDB4NTUsCitdKTsKK3ZhciBpbWdfOHg4X3JnYmFf
ZHh0MyA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGY2LDB4ZmYsMHhmNiwweGZmLDB4ZmYsMHhm
ZiwweGZmLDB4ZmYsMHgwMCwweGY4LDB4ZTAsMHgwNywweDQ0LDB4NDUsMHg0MCwweDU1LDB4ZmYs
MHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGUwLDB4ZmYsMHgxZiwweDAwLDB4
NDQsMHg0NSwweDQwLDB4NTUsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGY2LDB4ZmYsMHhmNiwweGZm
LDB4MWYsMHhmOCwweGUwLDB4MDcsMHgxMSwweDEwLDB4MTUsMHgwMCwweGZmLDB4ZmYsMHhmZiww
eGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweDA3LDB4MWYsMHgwMCwweDExLDB4MTAsMHgx
NSwweDAwLAorXSk7Cit2YXIgaW1nXzh4OF9yZ2JhX2R4dDUgPSBuZXcgVWludDhBcnJheShbCisg
ICAgMHhmZiwweDY5LDB4MDEsMHgxMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhmOCwweGUw
LDB4MDcsMHg0NCwweDQ1LDB4NDAsMHg1NSwweGZmLDB4ZmYsMHgwMCwweDAwLDB4MDAsMHgwMCww
eDAwLDB4MDAsMHhlMCwweGZmLDB4MWYsMHgwMCwweDQ0LDB4NDUsMHg0MCwweDU1LDB4ZmYsMHg2
OSwweDAwLDB4MDAsMHgwMCwweDAxLDB4MTAsMHgwMCwweDFmLDB4ZjgsMHhlMCwweDA3LDB4MTEs
MHgxMCwweDE1LDB4MDAsMHhmZiwweGZmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4
ZmYsMHgwNywweDFmLDB4MDAsMHgxMSwweDEwLDB4MTUsMHgwMCwKK10pOworCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxpYXM6
IGZhbHNlfSk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Cit2YXIg
ZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxsOwordmFyIHZhbGlkRm9ybWF0cyA9IHsKKyAgICBD
T01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICA6IDB4ODNGMCwKKyAgICBDT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAgICAgICA6IDB4ODNGMSwKKyAgICBDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0VYVCAgICAgICA6IDB4ODNGMiwKKyAgICBDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0VYVCAgICAgICA6IDB4ODNGMywKK307Cit2YXIgbmFtZTsKK3ZhciBzdXBwb3J0ZWRG
b3JtYXRzOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2Vz
IG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4
aXN0cyIpOworCisgICAgLy8gUnVuIHRlc3RzIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkCisgICAg
cnVuVGVzdERpc2FibGVkKCk7CisKKyAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9y
ZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNjZXNzIGl0CisgICAgZXh0ID0gd3R1LmdldEV4
dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3Mz
dGMiKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9jb21w
cmVzc2VkX3RleHR1cmVfczN0YyBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAg
cnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMgZXh0
ZW5zaW9uIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVu
VGVzdEV4dGVuc2lvbigpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChl
eHRlbnNpb25FbmFibGVkKSB7CisgICAgdmFyIG5hbWUgPSB3dHUuZ2V0U3VwcG9ydGVkRXh0ZW5z
aW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIp
OworICAgIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVu
YWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVy
ZV9zM3RjIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIldFQkdMX2NvbXByZXNz
ZWRfdGV4dHVyZV9zM3RjIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWls
ZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFi
bGVkKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
czN0YyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX3MzdGMgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lv
biBmYWlsZWQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICB9CisgICAgfQorfQorCisKK2Z1
bmN0aW9uIHJ1blRlc3REaXNhYmxlZCgpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBiaW5kaW5nIGVu
dW0gd2l0aCBleHRlbnNpb24gZGlzYWJsZWQiKTsKKworICAgIHNob3VsZEJlKCdnbC5nZXRQYXJh
bWV0ZXIoZ2wuQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpJywgJ1tdJyk7Cit9CisKK2Z1bmN0
aW9uIGZvcm1hdEV4aXN0cyhmb3JtYXQsIHN1cHBvcnRlZEZvcm1hdHMpIHsKKyAgICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAg
aWYgKGZvcm1hdCA9PSBzdXBwb3J0ZWRGb3JtYXRzW2lpXSkgeworICAgICAgICAgICAgdGVzdFBh
c3NlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgZm9ybWF0VG9TdHJpbmcoZm9ybWF0KSArICIgaXMg
ZXhpc3RzIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgdGVz
dEZhaWxlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgZm9ybWF0VG9TdHJpbmcoZm9ybWF0KSArICIg
ZG9lcyBub3QgZXhpc3QiKTsKK30KKworZnVuY3Rpb24gZm9ybWF0VG9TdHJpbmcoZm9ybWF0KSB7
CisgICAgZm9yICh2YXIgcCBpbiBleHQpIHsKKyAgICAgICAgaWYgKGV4dFtwXSA9PSBmb3JtYXQp
IHsKKyAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAi
MHgiICsgZm9ybWF0LnRvU3RyaW5nKDE2KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdEV4dGVuc2lv
bigpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIp
OworCisgICAgLy8gY2hlY2sgdGhhdCBhbGwgZm9ybWF0IGVudW1zIGV4aXN0LgorICAgIGZvciAo
bmFtZSBpbiB2YWxpZEZvcm1hdHMpIHsKKyAgICAgICAgdmFyIGV4cGVjdGVkID0gIjB4IiArIHZh
bGlkRm9ybWF0c1tuYW1lXS50b1N0cmluZygxNik7CisgICAgICAgIHZhciBhY3R1YWwgPSAiZXh0
WyciICsgbmFtZSArICInXSI7CisgICAgICAgIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpOwor
ICAgIH0KKworICAgIHN1cHBvcnRlZEZvcm1hdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFMpOworICAgIC8vIFRoZXJlIHNob3VsZCBiZSBleGFjdGx5IDQg
Zm9ybWF0cworICAgIHNob3VsZEJlKCJzdXBwb3J0ZWRGb3JtYXRzLmxlbmd0aCIsICI0Iik7CisK
KyAgICAvLyBjaGVjayB0aGF0IGFsbCA0IGZvcm1hdHMgZXhpc3QKKyAgICBmb3IgKHZhciBuYW1l
IGluIHZhbGlkRm9ybWF0cy5sZW5ndGgpIHsKKyAgICAgICAgZm9ybWF0RXhpc3RzKHZhbGlkRm9y
bWF0c1tuYW1lXSwgc3VwcG9ydGVkRm9ybWF0cyk7CisgICAgfQorCisgICAgLy8gVGVzdCBlYWNo
IGZvcm1hdAorICAgIHRlc3REWFQxX1JHQigpOworICAgIHRlc3REWFQxX1JHQkEoKTsKKyAgICB0
ZXN0RFhUM19SR0JBKCk7CisgICAgdGVzdERYVDVfUkdCQSgpOworfQorCitmdW5jdGlvbiB0ZXN0
RFhUMV9SR0IoKSB7CisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7ICAgd2lkdGg6IDQsCisg
ICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAgICBjaGFubmVsczogMywKKyAgICAgICAg
ICAgIGRhdGE6IGltZ180eDRfcmdiX2R4dDEsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUCisgICAgICAgIH0sCisgICAgICAgIHsgICB3aWR0aDog
OCwKKyAgICAgICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiAzLAorICAg
ICAgICAgICAgZGF0YTogaW1nXzh4OF9yZ2JfZHh0MSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0
LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQKKyAgICAgICAgfQorICAgIF07CisgICAgdGVz
dERYVFRleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERYVDFfUkdCQSgpIHsKKyAg
ICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdo
dDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAgICAgZGF0YTogaW1nXzR4
NF9yZ2JhX2R4dDEsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAg
ICBoZWlnaHQ6IDgsCisgICAgICAgICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6
IGltZ184eDhfcmdiYV9keHQxLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQKKyAgICAgICAgfQorICAgIF07CisgICAgdGVzdERYVFRleHR1cmVz
KHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERYVDNfUkdCQSgpIHsKKyAgICB2YXIgdGVzdHMg
PSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdodDogNCwKKyAgICAg
ICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAgICAgZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDMs
CisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVAor
ICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6IDgs
CisgICAgICAgICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGltZ184eDhfcmdi
YV9keHQzLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19FWFQKKyAgICAgICAgfQorICAgIF07CisgICAgdGVzdERYVFRleHR1cmVzKHRlc3RzKTsKK30K
KworZnVuY3Rpb24gdGVzdERYVDVfUkdCQSgpIHsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAg
IHsgICB3aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5u
ZWxzOiA0LAorICAgICAgICAgICAgZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDUsCisgICAgICAgICAg
ICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVAorICAgICAgICB9LAor
ICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAgICAgICAg
ICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGltZ184eDhfcmdiYV9keHQ1LAorICAg
ICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQKKyAgICAg
ICAgfQorICAgIF07CisgICAgdGVzdERYVFRleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24g
dGVzdERYVFRleHR1cmVzKHRlc3RzKSB7CisgICAgZGVidWcoIjxoci8+Iik7CisgICAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IHRlc3RzLmxlbmd0aDsgKytpaSkgeworICAgICAgICB0ZXN0RFhUVGV4
dHVyZSh0ZXN0c1tpaV0pOworICAgIH0KK30KKworZnVuY3Rpb24gdW5jb21wcmVzc0RYVEJsb2Nr
KAorICAgIGRlc3RCdWZmZXIsIGRlc3RYLCBkZXN0WSwgZGVzdFdpZHRoLCBzcmMsIHNyY09mZnNl
dCwgZm9ybWF0KSB7CisgICAgZnVuY3Rpb24gbWFrZTU2NShzcmMsIG9mZnNldCkgeworICAgICAg
ICByZXR1cm4gc3JjW29mZnNldCArIDBdICsgc3JjW29mZnNldCArIDFdICogMjU2OworICAgIH0K
KyAgICBmdW5jdGlvbiBtYWtlODg4OEZyb201NjUoYykgeworICAgICAgICByZXR1cm4gWworICAg
ICAgICAgICAgICAgIE1hdGguZmxvb3IoKChjID4+IDExKSAmIDB4MUYpICogMjU1IC8gMzEpLAor
ICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoKChjID4+ICAgIDUpICYgMHgzRikgKiAyNTUgLyA2
MyksCisgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigoKGMgPj4gICAgMCkgJiAweDFGKSAqIDI1
NSAvIDMxKSwKKyAgICAgICAgICAgICAgICAyNTUKKyAgICAgICAgICAgIF07CisgICAgfQorICAg
IGZ1bmN0aW9uIG1peChtdWx0LCBjMCwgYzEsIGRpdikgeworICAgICAgICB2YXIgciA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYzAubGVuZ3RoOyArK2lpKSB7CisgICAgICAg
ICAgICByW2lpXSA9IE1hdGguZmxvb3IoKGMwW2lpXSAqIG11bHQgKyBjMVtpaV0pIC8gZGl2KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgdmFyIGlzRFhUMSA9IGZv
cm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCB8fAorICAgICAgICAgICAg
ICAgICBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOworICAgIHZh
ciBjb2xvck9mZnNldCA9IHNyY09mZnNldCArIChpc0RYVDEgPyAwIDogOCk7CisgICAgdmFyIGNv
bG9yMCA9IG1ha2U1NjUoc3JjLCBjb2xvck9mZnNldCArIDApOworICAgIHZhciBjb2xvcjEgPSBt
YWtlNTY1KHNyYywgY29sb3JPZmZzZXQgKyAyKTsKKyAgICB2YXIgYzBndGMxID0gY29sb3IwID4g
Y29sb3IxIHx8ICFpc0RYVDE7CisgICAgdmFyIHJnYmEwID0gbWFrZTg4ODhGcm9tNTY1KGNvbG9y
MCk7CisgICAgdmFyIHJnYmExID0gbWFrZTg4ODhGcm9tNTY1KGNvbG9yMSk7CisgICAgdmFyIGNv
bG9ycyA9IFsKKyAgICAgICAgICAgIHJnYmEwLAorICAgICAgICAgICAgcmdiYTEsCisgICAgICAg
ICAgICBjMGd0YzEgPyBtaXgoMiwgcmdiYTAsIHJnYmExLCAzKSA6IG1peCgxLCByZ2JhMCwgcmdi
YTEsIDIpLAorICAgICAgICAgICAgYzBndGMxID8gbWl4KDIsIHJnYmExLCByZ2JhMCwgMykgOiBb
MCwgMCwgMCwgMjU1XQorICAgICAgICBdOworCisgICAgLy8geWVhIEkga25vdyB0aGVyZSBpcyBh
IGxvdCBvZiBtYXRoIGluIHRoaXMgaW5uZXIgbG9vcC4KKyAgICAvLyBzbyBzdWUgbWUuCisgICAg
Zm9yICh2YXIgeXkgPSAwOyB5eSA8IDQ7ICsreXkpIHsKKyAgICAgICAgdmFyIHBpeGVscyA9IHNy
Y1tjb2xvck9mZnNldCArIDQgKyB5eV07CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCA0
OyArK3h4KSB7CisgICAgICAgICAgICB2YXIgZHN0T2ZmID0gKChkZXN0WSArIHl5KSAqIGRlc3RX
aWR0aCArIGRlc3RYICsgeHgpICogNDsKKyAgICAgICAgICAgIHZhciBjb2RlID0gKHBpeGVscyA+
PiAoeHggKiAyKSkgJiAweDM7CisgICAgICAgICAgICB2YXIgc3JjQ29sb3IgPSBjb2xvcnNbY29k
ZV07CisgICAgICAgICAgICB2YXIgYWxwaGE7CisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
eworICAgICAgICAgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAg
ICAgICAgICAgICAgICBhbHBoYSA9IDI1NTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAg
ICAgICAgIGFscGhhID0gKGNvZGUgPT0gMyAmJiAhYzBndGMxKSA/IDAgOiAyNTU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0VYVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZhciBh
bHBoYTAgPSBzcmNbc3JjT2Zmc2V0ICsgeXkgKiAyICsgTWF0aC5mbG9vcih4eCAvIDIpXTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGFscGhhMSA9IChhbHBoYTAgPj4gKCh4eCAlIDIpICogNCkp
ICYgMHhGOworICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGFscGhhMSB8IChhbHBoYTEgPDwg
NCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgYWxwaGEwID0gc3JjW3NyY09mZnNldCArIDBd
OworICAgICAgICAgICAgICAgICAgICB2YXIgYWxwaGExID0gc3JjW3NyY09mZnNldCArIDFdOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgYWxwaGFPZmYgPSBNYXRoLmZsb29yKHl5IC8gMikgKiAz
ICsgMjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFscGhhQml0cyA9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjW3NyY09mZnNldCArIGFscGhhT2ZmICsgMF0gKworICAgICAgICAgICAg
ICAgICAgICAgICAgIHNyY1tzcmNPZmZzZXQgKyBhbHBoYU9mZiArIDFdICogMjU2ICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBzcmNbc3JjT2Zmc2V0ICsgYWxwaGFPZmYgKyAyXSAqIDY1NTM2
OworICAgICAgICAgICAgICAgICAgICB2YXIgYWxwaGFTaGlmdCA9ICh5eSAlIDIpICogMTIgKyB4
eCAqIDM7CisgICAgICAgICAgICAgICAgICAgIHZhciBhbHBoYUNvZGUgPSAoYWxwaGFCaXRzID4+
IGFscGhhU2hpZnQpICYgMHg3OworICAgICAgICAgICAgICAgICAgICBpZiAoYWxwaGEwID4gYWxw
aGExKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFscGhhQ29kZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFscGhhID0gYWxwaGEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFscGhhID0gYWxwaGExOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbHBoYSA9ICgoOCAtIGFscGhhQ29kZSkgKiBhbHBoYTAgKyAoYWxwaGFDb2RlIC0gMSkgKiBh
bHBoYTEpIC8gNzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFDb2RlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSA3OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gMjU1OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9ICgoNiAtIGFscGhhQ29k
ZSkgKiBhbHBoYTAgKyAoYWxwaGFDb2RlIC0gMSkgKiBhbHBoYTEpIC8gNTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgImJhZCBmb3Jt
YXQiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAwXSA9
IHNyY0NvbG9yWzBdOworICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAxXSA9IHNyY0Nv
bG9yWzFdOworICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAyXSA9IHNyY0NvbG9yWzJd
OworICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAzXSA9IGFscGhhOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRCbG9ja1NpemUoZm9ybWF0KSB7CisgIHZhciBpc0RY
VDEgPSBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgfHwKKyAgICAg
ICAgICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7Cisg
IHJldHVybiBpc0RYVDEgPyA4IDogMTY7Cit9CisKK2Z1bmN0aW9uIHVuY29tcHJlc3NEWFQod2lk
dGgsIGhlaWdodCwgZGF0YSwgZm9ybWF0KSB7CisgICAgaWYgKHdpZHRoICUgNCB8fCBoZWlnaHQg
JSA0KSB0aHJvdyAiYmFkIHdpZHRoIG9yIGhlaWdodCI7CisKKyAgICB2YXIgZGVzdCA9IG5ldyBV
aW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgdmFyIGJsb2Nrc0Fjcm9zcyA9IHdp
ZHRoIC8gNDsKKyAgICB2YXIgYmxvY2tzRG93biA9IGhlaWdodCAvIDQ7CisgICAgdmFyIGJsb2Nr
U2l6ZSA9IGdldEJsb2NrU2l6ZShmb3JtYXQpOworICAgIGZvciAodmFyIHl5ID0gMDsgeXkgPCBi
bG9ja3NEb3duOyArK3l5KSB7CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCBibG9ja3NB
Y3Jvc3M7ICsreHgpIHsKKyAgICAgICAgICAgIHVuY29tcHJlc3NEWFRCbG9jaygKKyAgICAgICAg
ICAgICAgICBkZXN0LCB4eCAqIDQsIHl5ICogNCwgd2lkdGgsIGRhdGEsCisgICAgICAgICAgICAg
ICAgKHl5ICogYmxvY2tzQWNyb3NzICsgeHgpICogYmxvY2tTaXplLCBmb3JtYXQpOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBkZXN0OworfQorCitmdW5jdGlvbiBjb3B5UmVjdChkYXRh
LCBzcmNYLCBzcmNZLCBkc3RYLCBkc3RZLCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUpIHsKKyAgdmFy
IGJ5dGVzUGVyTGluZSA9IHdpZHRoICogNDsKKyAgdmFyIHNyY09mZnNldCA9IHNyY1ggKiA0ICsg
c3JjWSAqIHN0cmlkZTsKKyAgdmFyIGRzdE9mZnNldCA9IGRzdFggKiA0ICsgZHN0WSAqIHN0cmlk
ZTsKKyAgZm9yICg7IGhlaWdodCA+IDA7IC0taGVpZ2h0KSB7CisgICAgZm9yICh2YXIgaWkgPSAw
OyBpaSA8IGJ5dGVzUGVyTGluZTsgKytpaSkgeworICAgICAgZGF0YVtkc3RPZmZzZXQgKyBpaV0g
PSBkYXRhW3NyY09mZnNldCArIGlpXTsKKyAgICB9CisgICAgc3JjT2Zmc2V0ICs9IHN0cmlkZTsK
KyAgICBkc3RPZmZzZXQgKz0gc3RyaWRlOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3REWFRUZXh0
dXJlKHRlc3QpIHsKKyAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHRlc3QuZGF0YSk7Cisg
ICAgdmFyIHdpZHRoID0gdGVzdC53aWR0aDsKKyAgICB2YXIgaGVpZ2h0ID0gdGVzdC5oZWlnaHQ7
CisgICAgdmFyIGZvcm1hdCA9IHRlc3QuZm9ybWF0OworCisgICAgdmFyIHVuY29tcHJlc3NlZERh
dGEgPSB1bmNvbXByZXNzRFhUKHdpZHRoLCBoZWlnaHQsIGRhdGEsIGZvcm1hdCk7CisKKyAgICBj
YW52YXMud2lkdGggPSB3aWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIGds
LnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgIGRlYnVnKCJ0ZXN0aW5nICIgKyBm
b3JtYXRUb1N0cmluZyhmb3JtYXQpICsgIiAiICsgd2lkdGggKyAieCIgKyBoZWlnaHQpOworCisg
ICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5ORUFSRVNUKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICBn
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4
dHVyZSIpOworICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOworICAgIGdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ0cnlpbmcgdG8gZ2VuZXJhdGUg
bWlwbWFwcyBmcm9tIGNvbXByZXNzZWQgdGV4dHVyZSIpOworICAgIHd0dS5kcmF3UXVhZChnbCk7
CisgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgdGVzdC5jaGFubmVscywgd2lkdGgsIGhl
aWdodCwgdW5jb21wcmVzc2VkRGF0YSwgZGF0YSwgZm9ybWF0KTsKKworICAgIGdsLmNvbXByZXNz
ZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwg
ZGF0YSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAibm9uIDAg
Ym9yZGVyIik7CisKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBmb3JtYXQsIHdpZHRoICsgNCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICBnbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5z
aW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZv
cm1hdCwgd2lkdGgsIGhlaWdodCArIDQsIDAsIGRhdGEpOworICAgIGdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25z
Iik7CisgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0
LCB3aWR0aCAtIDQsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsK
KyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQgLSA0LCAwLCBkYXRhKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworCisg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0
aCAtIDEsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGggLSAyLCBoZWlnaHQsIDAs
IGRhdGEpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJp
bnZhbGlkIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQgLSAxLCAwLCBkYXRhKTsKKyAgICBnbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25z
Iik7CisgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0IC0gMiwgMCwgZGF0YSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworCisgICAgaWYgKHdp
ZHRoID09IDQpIHsKKyAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDEsIGZvcm1hdCwgMSwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgIGdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25zIGZvciBsZXZlbCA+IDAiKTsKKyAgICAg
IGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgMiwgaGVp
Z2h0LCAwLCBkYXRhKTsKKyAgICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ2
YWxpZCBkaW1lbnNpb25zIGZvciBsZXZlbCA+IDAiKTsKKyAgICB9CisgICAgaWYgKGhlaWdodCA9
PSA0KSB7CisgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBm
b3JtYXQsIHdpZHRoLCAxLCAwLCBkYXRhKTsKKyAgICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25zIGZvciBsZXZlbCA+IDAiKTsKKyAgICAgIGdsLmNv
bXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgd2lkdGgsIDIsIDAs
IGRhdGEpOworICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInZhbGlkIGRp
bWVuc2lvbnMgZm9yIGxldmVsID4gMCIpOworICAgIH0KKworICAgIC8vIHBpY2sgYSB3cm9uZyBm
b3JtYXQgdGhhdCB1c2VzIHRoZSBzYW1lIGFtb3VudCBvZiBkYXRhLgorICAgIHZhciB3cm9uZ0Zv
cm1hdDsKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdC
X1MzVENfRFhUMV9FWFQ6CisgICAgICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUOgorICAgICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9SR0Jf
UzNUQ19EWFQxX0VYVDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfRVhUOgorICAgICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgIHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfRVhUOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ2wuY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgd3Jv
bmdGb3JtYXQsIGRhdGEpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICJmb3JtYXQgZG9lcyBub3QgbWF0Y2giKTsKKworICAgIGdsLmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoICsgNCwgaGVpZ2h0LCBmb3Jt
YXQsIGRhdGEpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRh
dGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCArIDQsIGZv
cm1hdCwgZGF0YSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAi
ZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCAtIDQsIGhlaWdodCwg
Zm9ybWF0LCBkYXRhKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUs
ICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgLSA0
LCBmb3JtYXQsIGRhdGEpOworICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxV
RSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisKKyAgICBnbC5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCAtIDEsIGhl
aWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggLSAyLCBoZWlnaHQsIGZvcm1h
dCwgZGF0YSk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
ImludmFsaWQgZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgLSAxLCBmb3JtYXQsIGRhdGEpOwor
ICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRp
bWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0IC0gMiwgZm9ybWF0LCBkYXRhKTsKKyAgICBnbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7
CisKKyAgICB2YXIgc3ViRGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGEuYnVmZmVyLCAwLCBnZXRC
bG9ja1NpemUoZm9ybWF0KSk7CisKKyAgICBpZiAod2lkdGggPT0gOCAmJiBoZWlnaHQgPT0gOCkg
eworICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAx
LCAwLCA0LCA0LCBmb3JtYXQsIHN1YkRhdGEpOworICAgICAgICBnbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBvZmZzZXQiKTsKKyAgICAgICAgZ2wuY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMSwgNCwgNCwgZm9ybWF0
LCBzdWJEYXRhKTsKKyAgICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgImludmFsaWQgb2Zmc2V0Iik7CisgICAgfQorCisgICAgdmFyIHN0cmlkZSA9IHdpZHRo
ICogNDsKKyAgICBmb3IgKHZhciB5b2ZmID0gMDsgeW9mZiA8IGhlaWdodDsgeW9mZiArPSA0KSB7
CisgICAgICAgIGZvciAodmFyIHhvZmYgPSAwOyB4b2ZmIDwgd2lkdGg7IHhvZmYgKz0gNCkgewor
ICAgICAgICAgICAgY29weVJlY3QodW5jb21wcmVzc2VkRGF0YSwgMCwgMCwgeG9mZiwgeW9mZiwg
NCwgNCwgc3RyaWRlKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIHhvZmYsIHlvZmYsIDQsIDQsIGZvcm1hdCwgc3ViRGF0YSk7CisgICAg
ICAgICAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXBy
ZXNzZWQgdGV4dHVyZSIpOworICAgICAgICAgICAgd3R1LmRyYXdRdWFkKGdsKTsKKyAgICAgICAg
ICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHdpZHRoLCBoZWln
aHQsIHVuY29tcHJlc3NlZERhdGEsIGRhdGEsIGZvcm1hdCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGluc2VydEltZyhlbGVtZW50LCBjYXB0aW9uLCBpbWcpIHsKKyAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmFwcGVuZENoaWxk
KGltZyk7CisgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2FwdGlvbikpOwor
ICAgIGRpdi5hcHBlbmRDaGlsZChsYWJlbCk7CisgICAgZWxlbWVudC5hcHBlbmRDaGlsZChkaXYp
OworfQorCitmdW5jdGlvbiBtYWtlSW1hZ2UoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIGRhdGFX
aWR0aCwgZGF0YSwgYWxwaGEpIHsKKyAgICB2YXIgc2NhbGUgPSA4OworICAgIHZhciBjID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgYy53aWR0aCA9IGltYWdlV2lkdGgg
KiBzY2FsZTsKKyAgICBjLmhlaWdodCA9IGltYWdlSGVpZ2h0ICogc2NhbGU7CisgICAgdmFyIGN0
eCA9IGMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgaW1hZ2VI
ZWlnaHQ7ICsreXkpIHsKKyAgICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IGltYWdlV2lkdGg7
ICsreHgpIHsKKyAgICAgICAgICAgIHZhciBvZmZzZXQgPSAoeXkgKiBkYXRhV2lkdGggKyB4eCkg
KiA0OworICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKworICAgICAgICAgICAg
ICAgICAgICBkYXRhW29mZnNldCArIDBdICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YVtvZmZzZXQgKyAxXSArICIsIiArCisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0ICsg
Ml0gKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAoYWxwaGEgPyBkYXRhW29mZnNldCArIDNd
IC8gMjU1IDogMSkgKyAiKSI7CisgICAgICAgICAgICBjdHguZmlsbFJlY3QoeHggKiBzY2FsZSwg
eXkgKiBzY2FsZSwgc2NhbGUsIHNjYWxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgaW1n
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgaW1nLnNyYyA9IGMudG9EYXRh
VVJMKCk7CisgICAgcmV0dXJuIGltZzsKK30KK2Z1bmN0aW9uIGNvbXBhcmVSZWN0KAorICAgICAg
ICBhY3R1YWxXaWR0aCwgYWN0dWFsSGVpZ2h0LCBhY3R1YWxDaGFubmVscywKKyAgICAgICAgZGF0
YVdpZHRoLCBkYXRhSGVpZ2h0LCBleHBlY3RlZERhdGEsCisgICAgICAgIHRlc3REYXRhLCB0ZXN0
Rm9ybWF0KSB7CisgICAgdmFyIGFjdHVhbCA9IG5ldyBVaW50OEFycmF5KGFjdHVhbFdpZHRoICog
YWN0dWFsSGVpZ2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygKKyAgICAgICAgICAgIDAsIDAs
IGFjdHVhbFdpZHRoLCBhY3R1YWxIZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFj
dHVhbCk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgZGl2LmNsYXNzTmFtZSA9ICJ0ZXN0aW1hZ2VzIjsKKyAgICBpbnNlcnRJbWcoZGl2LCAiZXhw
ZWN0ZWQiLCBtYWtlSW1hZ2UoCisgICAgICAgICAgICBhY3R1YWxXaWR0aCwgYWN0dWFsSGVpZ2h0
LCBkYXRhV2lkdGgsIGV4cGVjdGVkRGF0YSwKKyAgICAgICAgICAgIGFjdHVhbENoYW5uZWxzID09
IDQpKTsKKyAgICBpbnNlcnRJbWcoZGl2LCAiYWN0dWFsIiwgbWFrZUltYWdlKAorICAgICAgICAg
ICAgYWN0dWFsV2lkdGgsIGFjdHVhbEhlaWdodCwgYWN0dWFsV2lkdGgsIGFjdHVhbCwKKyAgICAg
ICAgICAgIGFjdHVhbENoYW5uZWxzID09IDQpKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIGZhaWxlZCA9IGZhbHNlOworICAg
IGZvciAodmFyIHl5ID0gMDsgeXkgPCBhY3R1YWxIZWlnaHQ7ICsreXkpIHsKKyAgICAgICAgZm9y
ICh2YXIgeHggPSAwOyB4eCA8IGFjdHVhbFdpZHRoOyArK3h4KSB7CisgICAgICAgICAgICB2YXIg
YWN0dWFsT2Zmc2V0ID0gKHl5ICogYWN0dWFsV2lkdGggKyB4eCkgKiA0OworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkT2Zmc2V0ID0gKHl5ICogZGF0YVdpZHRoICsgeHgpICogNDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWREYXRhW2V4
cGVjdGVkT2Zmc2V0ICsgMF0sCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkRGF0YVtleHBl
Y3RlZE9mZnNldCArIDFdLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZERhdGFbZXhwZWN0
ZWRPZmZzZXQgKyAyXSwKKyAgICAgICAgICAgICAgICAgICAgKGFjdHVhbENoYW5uZWxzID09IDMg
PyAyNTUgOiBleHBlY3RlZERhdGFbZXhwZWN0ZWRPZmZzZXQgKyAzXSkKKyAgICAgICAgICAgIF07
CisgICAgICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgNDsgKytqaikgeworICAgICAgICAg
ICAgICAgIGlmIChhY3R1YWxbYWN0dWFsT2Zmc2V0ICsgampdICE9IGV4cGVjdGVkW2pqXSkgewor
ICAgICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB2
YXIgd2FzID0gYWN0dWFsW2FjdHVhbE9mZnNldCArIDBdLnRvU3RyaW5nKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoaiA9IDE7IGogPCA0OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdhcyArPSAiLCIgKyBhY3R1YWxbYWN0dWFsT2Zmc2V0ICsgal07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnYXQgKCcgKyB4eCArICcs
ICcgKyB5eSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpIGV4
cGVjdGVkOiAnICsgZXhwZWN0ZWQgKyAnIHdhcyAnICsgd2FzKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmYWlsZWQpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgidGV4dHVyZSByZW5kZXJlZCBjb3JyZWN0bHkiKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RQVlJUQ1RleHR1cmVzKCkgeworICAgIHRlc3RGYWlsZWQoIlBWUlRD
IHRlc3Qgbm90IHlldCBpbXBsZW1lbnRlZCIpOworfQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbCBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvd2ViZ2wtZGVidWctcmVuZGVyZXItaW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NWU2ZjJk
ODNkZGYxZTBjMDRkNTQzNjlkZWI4OWRiYzZiZTgwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLWRlYnVnLXJlbmRlcmVyLWluZm8uaHRtbApAQCAtMCwwICsxLDEyNyBAQAor
77u/PCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KKyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9v
ciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKiogIk1hdGVyaWFscyIpLCB0
byBkZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisq
KiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy
Z2UsIHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3Bp
ZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBNYXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworKiogdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisqKiBpbiBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBNYXRlcmlhbHMuCisqKgorKiogVEhF
IE1BVEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorKiogSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyoq
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJQUxTIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisKKy0tPgorCis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
V2ViR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9IndpZHRoOiAx
cHg7IGhlaWdodDogMXB4OyI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
IS0tIFNoYWRlcnMgZm9yIHRlc3Rpbmcgc3RhbmRhcmQgZGVyaXZhdGl2ZXMgLS0+CisKKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIHRoZSBXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIGV4dGVuc2lvbiwg
aWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoImNhbnZhcyIpOwordmFyIGV4
dCA9IG51bGw7Cit2YXIgdmFvID0gbnVsbDsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQo
IldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3Nl
ZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFJ1biB0ZXN0cyB3aXRoIGV4dGVu
c2lvbiBkaXNhYmxlZAorICAgIHJ1blRlc3REaXNhYmxlZCgpOworCisgICAgLy8gUXVlcnkgdGhl
IGV4dGVuc2lvbiBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBpdAor
ICAgIGV4dCA9IGdsLmdldEV4dGVuc2lvbigiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOwor
ICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIFdFQkdMX2RlYnVnX3JlbmRl
cmVyX2luZm8gc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisKKyAgICAgICAgcnVuU3VwcG9y
dGVkVGVzdChmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vz
c2Z1bGx5IGVuYWJsZWQgV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBleHRlbnNpb24iKTsKKwor
ICAgICAgICBydW5TdXBwb3J0ZWRUZXN0KHRydWUpOworICAgICAgICBydW5UZXN0RW5hYmxlZCgp
OworICAgIH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChleHRlbnNpb25FbmFibGVk
KSB7CisgICAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKyAg
ICBpZiAoc3VwcG9ydGVkLmluZGV4T2YoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKSA+PSAw
KSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdl
dEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8gbGlzdGVkIGFzIHN1cHBvcnRlZCBi
dXQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIldFQkdM
X2RlYnVnX3JlbmRlcmVyX2luZm8gbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVu
c2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8gbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5k
IGdldEV4dGVuc2lvbiBmYWlsZWQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICB9CisgICAg
fQorfQorCitmdW5jdGlvbiBydW5UZXN0RGlzYWJsZWQoKSB7CisgICAgZGVidWcoIlRlc3Rpbmcg
ZW51bXMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQiKTsKKworICAgIC8vIFVzZSB0aGUgY29uc3Rh
bnRzIGRpcmVjdGx5IGFzIHdlIGRvbid0IGhhdmUgdGhlIGV4dGVuc2lvbgorCisgICAgdmFyIFVO
TUFTS0VEX1ZFTkRPUl9XRUJHTCA9IDB4OTI0NTsKKyAgICBnbC5nZXRQYXJhbWV0ZXIoVU5NQVNL
RURfVkVORE9SX1dFQkdMKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5V
TSwgIlVOTUFTS0VEX1ZFTkRPUl9XRUJHTCBzaG91bGQgbm90IGJlIHF1ZXJ5YWJsZSBpZiBleHRl
bnNpb24gaXMgZGlzYWJsZWQiKTsKKworICAgIHZhciBVTk1BU0tFRF9SRU5ERVJFUl9XRUJHTCA9
IDB4OTI0NjsKKyAgICBnbC5nZXRQYXJhbWV0ZXIoVU5NQVNLRURfUkVOREVSRVJfV0VCR0wpOwor
ICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiVU5NQVNLRURfUkVOREVS
RVJfV0VCR0wgc2hvdWxkIG5vdCBiZSBxdWVyeWFibGUgaWYgZXh0ZW5zaW9uIGlzIGRpc2FibGVk
Iik7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RFbmFibGVkKCkgeworICAgIGRlYnVnKCJUZXN0aW5n
IGVudW1zIHdpdGggZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKworICAgIHNob3VsZEJlKCJleHQuVU5N
QVNLRURfVkVORE9SX1dFQkdMIiwgIjB4OTI0NSIpOworICAgIGdsLmdldFBhcmFtZXRlcihleHQu
VU5NQVNLRURfVkVORE9SX1dFQkdMKTsKKyAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAiVU5NQVNLRURfVkVORE9SX1dFQkdMIHF1ZXJ5IHNob3VsZCBzdWNjZWVkIGlmIGV4dGVu
c2lvbiBpcyBlbmFibGUiKTsKKworICAgIHNob3VsZEJlKCJleHQuVU5NQVNLRURfUkVOREVSRVJf
V0VCR0wiLCAiMHg5MjQ2Iik7CisgICAgZ2wuZ2V0UGFyYW1ldGVyKGV4dC5VTk1BU0tFRF9SRU5E
RVJFUl9XRUJHTCk7CisgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlVOTUFT
S0VEX1JFTkRFUkVSX1dFQkdMIHF1ZXJ5IHNob3VsZCBzdWNjZWVkIGlmIGV4dGVuc2lvbiBpcyBl
bmFibGUiKTsKK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93
ZWJnbC1kZWJ1Zy1zaGFkZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlYnVnLXNoYWRlcnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDU5MmY3MzEwNTdmZGYzMDIyMTkyNmZmNjhjNzY1MTEzYWY4OTU2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kZWJ1Zy1zaGFkZXJzLmh0bWwK
QEAgLTAsMCArMSwxNjUgQEAKK++7vzwhLS0KKworLyoKKyoqIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgS2hyb25vcyBHcm91cCBJbmMuCisqKgorKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyoqIGNvcHkgb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUK
KyoqICJNYXRlcmlhbHMiKSwgdG8gZGVhbCBpbiB0aGUgTWF0ZXJpYWxzIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZworKiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorKiogZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBNYXRlcmlhbHMsIGFuZCB0bworKiogcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgTWF0ZXJpYWxzIGFyZSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8KKyoqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyoqCisqKiBUaGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs
dWRlZAorKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0
ZXJpYWxzLgorKioKKyoqIFRIRSBNQVRFUklBTFMgQVJFIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyoqIE1FUkNIQU5UQUJJTElU
WSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4K
KyoqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZCisqKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorKiogVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyoqIE1BVEVSSUFM
UyBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBNQVRFUklBTFMuCisqLworCist
LT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHRpdGxlPldlYkdMIFdlYkdMX2RlYnVnX3NoYWRlcnMgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZGVza3RvcC1n
bC1jb25zdGFudHMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHN0
eWxlPSJ3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsiPiA8L2NhbnZhcz4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPCEtLSBTaGFkZXJzIGZvciB0ZXN0aW5nIHN0YW5kYXJkIGRlcml2YXRpdmVz
IC0tPgorCis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2
ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV0VCR0xfZGVidWdfc2hhZGVycyBleHRl
bnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KCJjYW52YXMiKTsK
K3ZhciBleHQgPSBudWxsOwordmFyIHNoYWRlciA9IG51bGw7Cit2YXIgcHJvZ3JhbSA9IG51bGw7
Cit2YXIgaW5mbyA9IG51bGw7Cit2YXIgdHJhbnNsYXRlZFNvdXJjZTsKKworaWYgKCFnbCkgewor
ICAgIHRlc3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7
CisgICAgdGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFF1ZXJ5
IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3Mg
aXQKKyAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKKyAg
ICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9kZWJ1Z19zaGFkZXJz
IHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworCisgICAgICAgIHJ1blN1cHBvcnRlZFRlc3Qo
ZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBl
bmFibGVkIFdFQkdMX2RlYnVnX3NoYWRlcnMgZXh0ZW5zaW9uIik7CisKKyAgICAgICAgcnVuU3Vw
cG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVuVGVzdEVuYWJsZWQoKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBz
dXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgICAgaWYgKHN1cHBvcnRl
ZC5pbmRleE9mKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIikgPj0gMCkgeworICAgICAgICBpZiAoZXh0
ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfZGVidWdfc2hh
ZGVycyBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJXRUJHTF9kZWJ1Z19zaGFk
ZXJzIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWlsZWQiKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIG5vdCBsaXN0ZWQgYXMgc3Vw
cG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIG5vdCBsaXN0ZWQgYXMg
c3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdEVuYWJsZWQoKSB7CisgICAgZGVi
dWcoIlRlc3RpbmcgZnVuY3Rpb24gd2l0aCBleHRlbnNpb24gZW5hYmxlZCIpOworCisgICAgdmFy
IHNoYWRlckluZm9zID0gWworICAgICAgeworICAgICAgICBzb3VyY2U6ICJ2b2lkIG1haW4oKSB7
IGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOyB9IiwKKyAgICAgICAgdHlw
ZTogZ2wuVkVSVEVYX1NIQURFUgorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgc291cmNlOiAi
dm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7IH0i
LAorICAgICAgICB0eXBlOiBnbC5GUkFHTUVOVF9TSEFERVIKKyAgICAgIH0KKyAgICBdOworCisg
ICAgLy8gRG8gdGhpcyB0d2ljZSB0byB0ZXN0IGZvciBjYWNoaW5nIGlzc3Vlcy4KKyAgICBmb3Ig
KHZhciBqaiA9IDA7IGpqIDwgMjsgKytqaikgeworICAgICAgICBkZWJ1ZygicGFzczoiICsgKGpq
ICsgMSkpOworICAgICAgICBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICBm
b3IgKHZhciBpaSA9IDA7IGlpIDwgc2hhZGVySW5mb3MubGVuZ3RoOyArK2lpKSB7CisgICAgICAg
ICAgICBpbmZvID0gc2hhZGVySW5mb3NbaWldOworCisgICAgICAgICAgICBzaGFkZXIgPSBnbC5j
cmVhdGVTaGFkZXIoaW5mby50eXBlKTsKKworICAgICAgICAgICAgLy8gaWYgbm8gc291cmNlIGhh
cyBiZWVuIGRlZmluZWQgb3IgY29tcGlsZVNoYWRlcigpIGhhcyBub3QgYmVlbiBjYWxsZWQsCisg
ICAgICAgICAgICAvLyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKCkgc2hvdWxkIHJldHVybiBh
biBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICBzaG91bGRCZU51bGwoImV4dC5nZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlKHNoYWRlcikiKTsKKyAgICAgICAgICAgIGdsLnNoYWRlclNvdXJjZShz
aGFkZXIsIGluZm8uc291cmNlKTsKKyAgICAgICAgICAgIHNob3VsZEJlTnVsbCgiZXh0LmdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2Uoc2hhZGVyKSIpOworICAgICAgICAgICAgZ2wuY29tcGlsZVNo
YWRlcihzaGFkZXIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRTaGFkZXJQYXJh
bWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykiKTsKKyAgICAgICAgICAgIHRyYW5zbGF0
ZWRTb3VyY2UgPSBleHQuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShzaGFkZXIpOworICAgICAg
ICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIk5vIGdsIGVycm9yIHNob3Vs
ZCBvY2N1ciIpOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWRTb3VyY2UgJiYgdHJhbnNsYXRl
ZFNvdXJjZS5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vz
c2Z1bGx5IGNhbGxlZCBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKCkiKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ2FsbGluZyBnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlKCkgZmFpbGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBn
bC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICAgICAgfQorICAgICAgICBnbC5s
aW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKHByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSIpOworICAgIH0KKworICAgIC8vIFRl
c3QgY2hhbmdpbmcgdGhlIHNvdXJjZS4gTWFrZSBzdXJlIHdlIGdldCB0aGUgY29ycmVjdCBzb3Vy
Y2UgZWFjaCB0aW1lLgorICAgIGRlYnVnKCJ0ZXN0IGNoYW5naW5nIHNvdXJjZSIpOworICAgIHNo
YWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIGdsLnNoYWRl
clNvdXJjZShzaGFkZXIsICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoZ2xfRnJh
Z0Nvb3JkLngsIDAuMCwgMC4wLCAxLjApOyB9Iik7CisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFk
ZXIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wu
Q09NUElMRV9TVEFUVVMpIik7CisgICAgdHJhbnNsYXRlZFNvdXJjZSA9IGV4dC5nZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlKHNoYWRlcik7CisgICAgc2hvdWxkQmVUcnVlKCd0cmFuc2xhdGVkU291
cmNlICYmIHRyYW5zbGF0ZWRTb3VyY2UuaW5kZXhPZigiZ2xfRnJhZ0Nvb3JkIikgPj0gMCcpOwor
ICAgIC8vIGNoYW5nZSB0aGUgc291cmNlIGJ1dCBkb24ndCBjb21waWxlLgorICAgIGdsLnNoYWRl
clNvdXJjZShzaGFkZXIsICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsgfSIpOworICAgIC8vIHRoZSBzb3VyY2Ugc2hvdWxkIE5PVCBjaGFuZ2Uu
IEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgb2xkIHNvdXJjZS4KKyAgICBuZXdUcmFuc2xh
dGVkU291cmNlID0gZXh0LmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Uoc2hhZGVyKTsKKyAgICBz
aG91bGRCZSgnbmV3VHJhbnNsYXRlZFNvdXJjZScsICd0cmFuc2xhdGVkU291cmNlJyk7CisgICAg
Ly8gbm93IGNvbXBpbGUuCisgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuQ09NUElMRV9TVEFUVVMp
Iik7CisgICAgLy8gdGhlIHNvdXJjZSBzaG91bGQgaGF2ZSBjaGFuZ2UuCisgICAgbmV3VHJhbnNs
YXRlZFNvdXJjZSA9IGV4dC5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKHNoYWRlcik7CisgICAg
c2hvdWxkTm90QmUoJ25ld1RyYW5zbGF0ZWRTb3VyY2UnLCAndHJhbnNsYXRlZFNvdXJjZScpOwor
fQorCitkZWJ1ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRo
LXRleHR1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM3OTJmMDgwM2E3OGRjNWYzMzBmNTI1OGIxNTZjOTgwN2RjZTg1MDkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbApAQCAtMCwwICsx
LDM0MiBAQAorPCEtLQorCisvKgorKiogQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KKyoqCisqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorKiogY29weSBvZiB0aGlzIHNvZnR3YXJl
IGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKiogIk1hdGVyaWFs
cyIpLCB0byBkZWFsIGluIHRoZSBNYXRlcmlhbHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nCisqKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsCisqKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs
bCBjb3BpZXMgb2YgdGhlIE1hdGVyaWFscywgYW5kIHRvCisqKiBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBNYXRlcmlhbHMgYXJlIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworKiog
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKioKKyoqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisqKiBpbiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBNYXRlcmlhbHMuCisqKgor
KiogVEhFIE1BVEVSSUFMUyBBUkUgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwKKyoqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKiogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorKiogSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyoqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsCisqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorKiogTUFURVJJQUxTIE9SIFRIRSBVU0Ug
T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KKyovCisKKy0tPgorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0
bGU+V2ViR0wgV0VCR0xfZGVwdGhfdGV4dHVyZSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVy
dGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGds
X1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hh
ZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwordW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOwordW5pZm9ybSB2ZWMyIHVfcmVzb2x1dGlv
bjsKK3ZvaWQgbWFpbigpCit7CisgICAgdmVjMiB0ZXhjb29yZCA9IGdsX0ZyYWdDb29yZC54eSAv
IHVfcmVzb2x1dGlvbjsKKyAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB0
ZXhjb29yZCk7Cit9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iOCIgaGVp
Z2h0PSI4IiBzdHlsZT0id2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7Ij48L2NhbnZhcz4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIHRoZSBXRUJHTF9kZXB0aF90ZXh0dXJlIGV4dGVuc2lvbiwgaWYgaXQg
aXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9KTsKK3Zh
ciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKK3ZhciBleHQgPSBudWxsOwor
dmFyIHZhbyA9IG51bGw7Cit2YXIgdGV4OwordmFyIG5hbWU7Cit2YXIgc3VwcG9ydGVkRm9ybWF0
czsKK3ZhciBjYW52YXMyOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29u
dGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBj
b250ZXh0IGV4aXN0cyIpOworCisgICAgLy8gUnVuIHRlc3RzIHdpdGggZXh0ZW5zaW9uIGRpc2Fi
bGVkCisgICAgcnVuVGVzdERpc2FibGVkKCk7CisKKyAgICAvLyBRdWVyeSB0aGUgZXh0ZW5zaW9u
IGFuZCBzdG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNjZXNzIGl0CisgICAgZXh0ID0g
d3R1LmdldEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAiV0VCR0xfZGVwdGhfdGV4dHVy
ZSIpOworICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIFdFQkdMX2RlcHRo
X3RleHR1cmUgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIHJ1blN1cHBvcnRl
ZFRlc3QoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3Nm
dWxseSBlbmFibGVkIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uIik7CisKKyAgICAgICAg
cnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVuVGVzdEV4dGVuc2lvbigpOworICAg
IH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChleHRlbnNpb25FbmFibGVkKSB7Cisg
ICAgdmFyIG5hbWUgPSB3dHUuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMo
Z2wsICJXRUJHTF9kZXB0aF90ZXh0dXJlIik7CisgICAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkg
eworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNp
b24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJXRUJHTF9kZXB0aF90ZXh0dXJlIGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lv
biBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleHRlbnNp
b25FbmFibGVkKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJXRUJHTF9kZXB0aF90ZXh0dXJl
IG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJXRUJHTF9kZXB0aF90ZXh0
dXJlIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFpbGVkIC0tIHRo
aXMgaXMgbGVnYWwiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworCitmdW5jdGlvbiBydW5UZXN0
RGlzYWJsZWQoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgYmluZGluZyBlbnVtIHdpdGggZXh0ZW5z
aW9uIGRpc2FibGVkIik7CisKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGdsLCBnbC5JTlZBTElEX0VOVU0sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5V
TlNJR05FRF9TSE9SVCwgbnVsbCknKTsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGds
LklOVkFMSURfRU5VTSwgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhf
Q09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwg
bnVsbCknKTsKK30KKworCitmdW5jdGlvbiBkdW1wSXQoZ2wsIHJlcywgbXNnKSB7CisgIHJldHVy
bjsgIC8vIGNvbW1lbnQgb3V0IHRvIGRlYnVnCisgIGRlYnVnKG1zZyk7CisgIHZhciBhY3R1YWxQ
aXhlbHMgPSBuZXcgVWludDhBcnJheShyZXMgKiByZXMgKiA0KTsKKyAgZ2wucmVhZFBpeGVscygw
LCAwLCByZXMsIHJlcywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYWN0dWFsUGl4ZWxzKTsK
KworICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgcmVzOyArK3l5KSB7CisgICAgdmFyIHN0cnMgPSBb
XTsKKyAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgcmVzOyArK3h4KSB7CisgICAgICB2YXIgYWN0
dWFsID0gKHl5ICogcmVzICsgeHgpICogNDsKKyAgICAgIHN0cnMucHVzaCgiKCIgKyBhY3R1YWxQ
aXhlbHNbYWN0dWFsXSArICIsIiArIGFjdHVhbFBpeGVsc1thY3R1YWwrMV0gKyAiLCIgKyBhY3R1
YWxQaXhlbHNbYWN0dWFsICsgMl0gKyAiLCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsICsgM10gKyAi
KSIpOworICAgIH0KKyAgICBkZWJ1ZyhzdHJzLmpvaW4oIiAiKSk7CisgIH0KK30KK2Z1bmN0aW9u
IHJ1blRlc3RFeHRlbnNpb24oKSB7CisgICAgZGVidWcoIlRlc3RpbmcgV0VCR0xfZGVwdGhfdGV4
dHVyZSIpOworCisgICAgdmFyIHJlcyA9IDg7CisKKyAgICAvLyBtYWtlIGNhbnZhcyBmb3IgdGVz
dGluZy4KKyAgICBjYW52YXMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Cisg
ICAgY2FudmFzMi53aWR0aCA9IHJlczsKKyAgICBjYW52YXMyLmhlaWdodCA9IHJlczsKKyAgICB2
YXIgY3R4ID0gY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpOworICAgIGN0eC5maWxsU3R5bGUgPSAi
Ymx1ZSI7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhczIud2lkdGgsIGNhbnZhczIuaGVp
Z2h0KTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyd2c2hhZGVy
JywgJ2ZzaGFkZXInXSwgWydhX3Bvc2l0aW9uJ10pOworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3Jh
bSk7CisgICAgZ2wudW5pZm9ybTJmKGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9y
ZXNvbHV0aW9uIiksIHJlcywgcmVzKTsKKworICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICBn
bC5idWZmZXJEYXRhKAorICAgICAgICBnbC5BUlJBWV9CVUZGRVIsCisgICAgICAgIG5ldyBGbG9h
dDMyQXJyYXkoCisgICAgICAgICAgICBbICAgMSwgIDEsICAxLAorICAgICAgICAgICAgICAgLTEs
ICAxLCAgMCwKKyAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsCisgICAgICAgICAgICAgICAgMSwg
IDEsICAxLAorICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwKKyAgICAgICAgICAgICAgICAxLCAt
MSwgIDAsCisgICAgICAgICAgICBdKSwKKyAgICAgICAgZ2wuU1RBVElDX0RSQVcpOworICAgIGds
LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIHZhciB0eXBlcyA9IFsKKyAgICAg
ICAge29iajogJ2dsJywgIGF0dGFjaG1lbnQ6ICdERVBUSF9BVFRBQ0hNRU5UJywgICAgICAgICBm
b3JtYXQ6ICdERVBUSF9DT01QT05FTlQnLCB0eXBlOiAnVU5TSUdORURfU0hPUlQnLCAgICAgICAg
ICBkYXRhOiAnbmV3IFVpbnQxNkFycmF5KDEpJyB9LAorICAgICAgICB7b2JqOiAnZ2wnLCAgYXR0
YWNobWVudDogJ0RFUFRIX0FUVEFDSE1FTlQnLCAgICAgICAgIGZvcm1hdDogJ0RFUFRIX0NPTVBP
TkVOVCcsIHR5cGU6ICdVTlNJR05FRF9JTlQnLCAgICAgICAgICAgIGRhdGE6ICduZXcgVWludDMy
QXJyYXkoMSknIH0sCisgICAgICAgIHtvYmo6ICdleHQnLCBhdHRhY2htZW50OiAnREVQVEhfU1RF
TkNJTF9BVFRBQ0hNRU5UJywgZm9ybWF0OiAnREVQVEhfU1RFTkNJTCcsICAgdHlwZTogJ1VOU0lH
TkVEX0lOVF8yNF84X1dFQkdMJywgZGF0YTogJ25ldyBVaW50MzJBcnJheSgxKScgfQorICAgIF07
CisKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdHlwZXMubGVuZ3RoOyArK2lpKSB7CisgICAg
ICAgIHZhciB0eXBlSW5mbyA9IHR5cGVzW2lpXTsKKyAgICAgICAgdmFyIHR5cGUgPSB0eXBlSW5m
by50eXBlOworICAgICAgICB2YXIgdHlwZVN0ciA9IHR5cGVJbmZvLm9iaiArICcuJyArIHR5cGU7
CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygidGVzdGluZzogIiArIHR5cGUp
OworCisgICAgICAgIC8vIGNoZWNrIHRoYXQgY3ViZW1hcHMgYXJlIG5vdCBhbGxvd2VkLgorICAg
ICAgICB2YXIgY3ViZVRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV9DVUJFX01BUCwgY3ViZVRleCk7CisgICAgICAgIHZhciB0YXJnZXRz
ID0gWworICAgICAgICAgICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gnLAorICAgICAgICAg
ICdURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gnLAorICAgICAgICAgICdURVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1knLAorICAgICAgICAgICdURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kn
LAorICAgICAgICAgICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1onLAorICAgICAgICAgICdU
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1onCisgICAgICAgIF07CisgICAgICAgIGZvciAodmFy
IHR0ID0gMDsgdHQgPCB0YXJnZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICAgICAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLnRleEltYWdlMkQo
Z2wuJyArIHRhcmdldHNbaWldICsgJywgMSwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCArICcsIDEs
IDEsIDAsIGdsLicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCAnICsgdHlwZVN0ciArICcsIG51bGwp
Jyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjaGVjayAyZCB0ZXh0dXJlcy4KKyAgICAgICAg
dGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFXzJELCB0ZXgpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5f
RklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKworICAgICAgICAvLyB0ZXN0
IGxldmVsID4gMAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBnbC4nICsgdHlwZUlu
Zm8uZm9ybWF0ICsgJywgMSwgMSwgMCwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCArICcsICcgKyB0
eXBlU3RyICsgJywgbnVsbCknKTsKKworICAgICAgICAvLyB0ZXN0IHdpdGggZGF0YQorICAgICAg
ICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC4nICsgdHlwZUluZm8uZm9ybWF0ICsgJywgMSwg
MSwgMCwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCArICcsICcgKyB0eXBlU3RyICsgJywgJyArIHR5
cGVJbmZvLmRhdGEgKyAnKScpOworCisgICAgICAgIC8vIHRlc3Qgd2l0aCBjYW52YXMKKyAgICAg
ICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJ
RF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCBnbC4nICsgdHlwZUluZm8uZm9ybWF0
ICsgJywgJyArIHR5cGVTdHIgICsgJywgY2FudmFzMiknKTsKKworICAgICAgICAvLyB0ZXN0IGNv
cHlUZXhJbWFnZTJECisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFM
SURfRU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCAnZ2wuY29weVRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuJyArIHR5cGVJbmZvLmZvcm1hdCArICcsIDAsIDAsIDEsIDEsIDApJyk7
CisKKyAgICAgICAgLy8gdGVzdCByZWFsIHRoaW5nCisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xF
cnJvcihnbCwgZ2wuTk9fRVJST1IsICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGds
LicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCAnICsgcmVzICsgJywgJyArIHJlcyArICcsIDAsIGds
LicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCAnICsgdHlwZVN0ciArICcsIG51bGwpJyk7CisKKyAg
ICAgICAgLy8gdGVzdCB0ZXhTdWJJbWFnZTJECisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJv
cihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIDEsIDEsIGdsLicgKyB0eXBlSW5mby5mb3JtYXQgKyAnLCAnICsgdHlwZVN0
ciAgKyAnLCAnICsgdHlwZUluZm8uZGF0YSArICcpJyk7CisKKyAgICAgICAgLy8gdGVzdCBjb3B5
VGV4U3ViSW1hZ2UyRAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAnZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwg
MCwgMCwgMCwgMSwgMSknKTsKKworICAgICAgICAvLyB0ZXN0IGdlbmVyYXRlTWlwbWFwCisgICAg
ICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC5n
ZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKScpOworCisgICAgICAgIHZhciBmYm8gPSBnbC5j
cmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVC
VUZGRVIsIGZibyk7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVG
RkVSLCBnbFt0eXBlSW5mby5hdHRhY2htZW50XSwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsKKyAg
ICAgICAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgY2hlY2sgaWYgdGhlIHNwZWMgaXMgdXBkYXRlZCB0
byByZXF1aXJlIHRoZXNlIGNvbWJpbmF0aW9ucyB0byB3b3JrLgorICAgICAgICBpZiAoZ2wuY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgIT0gZ2wuRlJBTUVCVUZGRVJfQ09N
UExFVEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHRyeSBhZGRpbmcgYSBjb2xvciBidWZm
ZXIuCisgICAgICAgICAgICB2YXIgY29sb3JUZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBjb2xvclRleCk7CisgICAgICAg
ICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBn
bC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
LkxJTkVBUik7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgcmVzLCByZXMsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCBjb2xv
clRleCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsK
KworICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgdGV4dHVyZSB0byByZW5kZXIgd2l0aCB3aGls
ZSB3ZSByZXR1cm4gdG8gdGhlIGRlcHRoIHRleHR1cmUuCisgICAgICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgICAgIC8vIHJlbmRlciB0aGUgei1xdWFkCisg
ICAgICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigx
LCAwLCAwLCAxKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Nik7CisKKyAgICAgICAgZHVtcEl0KGdsLCByZXMsICItLWZpcnN0LS0iKTsKKworICAgICAgICAv
LyByZW5kZXIgdGhlIGRlcHRoIHRleHR1cmUuCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleCk7CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CisgICAgICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAg
ICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworCisgICAgICAgIHZhciBhY3R1
YWxQaXhlbHMgPSBuZXcgVWludDhBcnJheShyZXMgKiByZXMgKiA0KTsKKyAgICAgICAgZ2wucmVh
ZFBpeGVscygwLCAwLCByZXMsIHJlcywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYWN0dWFs
UGl4ZWxzKTsKKworICAgICAgICBkdW1wSXQoZ2wsIHJlcywgIi0tZGVwdGgtLSIpOworCisgICAg
ICAgIC8vIENoZWNrIHRoYXQgZWFjaCBwaXhlbCdzIFJHQiBhcmUgdGhlIHNhbWUgYW5kIHRoYXQg
aXQncyB2YWx1ZSBpcyBsZXNzCisgICAgICAgIC8vIHRoYW4gdGhlIHByZXZpb3VzIHBpeGVsIGlu
IGVpdGhlciBkaXJlY3Rpb24uIEJhc2ljYWxseSB2ZXJpZnkgd2UgaGF2ZSBhCisgICAgICAgIC8v
IGdyYWRpZW50LgorICAgICAgICB2YXIgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIGZvciAodmFy
IHl5ID0gMDsgeXkgPCByZXM7ICsreXkpIHsKKyAgICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4
IDwgcmVzOyArK3h4KSB7CisgICAgICAgICAgICB2YXIgYWN0dWFsID0gKHl5ICogcmVzICsgeHgp
ICogNDsKKyAgICAgICAgICAgIHZhciBsZWZ0ID0gYWN0dWFsIC0gNDsKKyAgICAgICAgICAgIHZh
ciBkb3duID0gYWN0dWFsIC0gcmVzICogNDsKKworICAgICAgICAgICAgaWYgKGFjdHVhbFBpeGVs
c1thY3R1YWwgKyAwXSAhPSBhY3R1YWxQaXhlbHNbYWN0dWFsICsgMV0pIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCdSICE9IEcnKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYWN0dWFsUGl4ZWxzW2FjdHVhbCAr
IDBdICE9IGFjdHVhbFBpeGVsc1thY3R1YWwgKyAyXSkgeworICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ1IgIT0gQicpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC8vIEFMUEhBIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVu
dAorICAgICAgICAgICAgaWYgKGFjdHVhbFBpeGVsc1thY3R1YWwgKyAzXSAhPSAweEZGICYmIGFj
dHVhbFBpeGVsc1thY3R1YWwgKyAzXSAhPSBhY3R1YWxQaXhlbHNbYWN0dWFsICsgMF0pIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdBICE9IDI1NSAmJiBBICE9IFInKTsKKyAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICh4eCA+IDApIHsKKyAgICAgICAgICAgICAgaWYgKGFjdHVhbFBpeGVsc1thY3R1YWxdIDw9IGFj
dHVhbFBpeGVsc1tsZWZ0XSkgeworICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiYWN0dWFs
KCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsXSArICIpIDwgbGVmdCgiICsgYWN0dWFsUGl4ZWxzW2xl
ZnRdICsgIikiKTsKKyAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHl5ID4gMCkgeworICAgICAg
ICAgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbYWN0dWFsXSA8PSBhY3R1YWxQaXhlbHNbZG93bl0p
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiYWN0dWFsKCIgKyBhY3R1YWxQaXhl
bHNbYWN0dWFsXSArICIpIDwgZG93bigiICsgYWN0dWFsUGl4ZWxzW2Rvd25dICsgIikiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayB0
aGF0IGJvdHRvbSBsZWZ0IGNvcm5lciBpcyB2YXN0bHkgZGlmZmVyZW50IHRoYXRuIHRvcCByaWdo
dC4KKyAgICAgICAgaWYgKGFjdHVhbFBpeGVsc1socmVzICogcmVzIC0gMSkgKiA0XSAtIGFjdHVh
bFBpeGVsc1swXSA8IDB4QzApIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImNvcm5lcnMgYXJl
IG5vdCBkaWZmZXJlbnQgZW5vdWdoIik7CisgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGVwdGggdGV4dHVyZSByZW5kZXJlZCBjb3JyZWN0bHkuIik7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBjaGVjayBsaW1pdGF0aW9ucworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZS
QU1FQlVGRkVSLCBnbFt0eXBlSW5mby5hdHRhY2htZW50XSwgZ2wuVEVYVFVSRV8yRCwgbnVsbCwg
MCk7CisgICAgICAgIHZhciBiYWRBdHRhY2htZW50ID0gdHlwZUluZm8uYXR0YWNobWVudCA9PSAn
REVQVEhfQVRUQUNITUVOVCcgPyAnREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UJyA6ICdERVBUSF9B
VFRBQ0hNRU5UJzsKKyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJP
UiwgJ2dsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC4nICsgYmFkQXR0
YWNobWVudCArICcsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCknKTsKKyAgICAgICAgc2hvdWxkTm90
QmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1F
QlVGRkVSX0NPTVBMRVRFJyk7CisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICdnbC5jbGVhcihnbC5ERVBUSF9CVUZGRVJf
QklUKScpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwp
OworICAgICAgICBzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICdnbC5OT19FUlJPUicpOworICAg
IH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="206595"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="206620"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>