<?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>105977</bug_id>
          
          <creation_ts>2013-01-02 17:28:39 -0800</creation_ts>
          <short_desc>Implement WebIDL-style string constants in WebAudio (part 2)</short_desc>
          <delta_ts>2013-01-06 08:46:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst+watchlist</cc>
    
    <cc>nbarth</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>s.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>799126</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-01-02 17:28:39 -0800</bug_when>
    <thetext>Implement WebIDL-style string constants in WebAudio (part 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799141</commentid>
    <comment_count>1</comment_count>
      <attachid>181123</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-01-02 17:49:59 -0800</bug_when>
    <thetext>Created attachment 181123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799149</commentid>
    <comment_count>2</comment_count>
      <attachid>181123</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 17:58:56 -0800</bug_when>
    <thetext>Comment on attachment 181123
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=181123&amp;action=review

&gt; Source/WebCore/Modules/webaudio/BiquadFilterNode.cpp:47
&gt; +        return &quot;lowpass&quot;;

You can wrap these constants in ASCIILiteral if you want to make things slightly faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799154</commentid>
    <comment_count>3</comment_count>
      <attachid>181123</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 18:12:10 -0800</bug_when>
    <thetext>Comment on attachment 181123
Patch

Attachment 181123 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15656259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799157</commentid>
    <comment_count>4</comment_count>
      <attachid>181126</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-01-02 18:21:56 -0800</bug_when>
    <thetext>Created attachment 181126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799534</commentid>
    <comment_count>5</comment_count>
      <attachid>181123</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-01-03 11:58:50 -0800</bug_when>
    <thetext>Comment on attachment 181123
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=181123&amp;action=review

&gt;&gt; Source/WebCore/Modules/webaudio/BiquadFilterNode.cpp:47
&gt;&gt; +        return &quot;lowpass&quot;;
&gt; 
&gt; You can wrap these constants in ASCIILiteral if you want to make things slightly faster.

I&apos;m not super worried about efficiency on the getters and it seems like it might be a little less readable this way.  Do you have a strong preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799537</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-01-03 12:00:52 -0800</bug_when>
    <thetext>Kentaro, would you mind having a look.  This one is very similar to the &quot;part 1&quot; patch:
https://bugs.webkit.org/show_bug.cgi?id=105058

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799634</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-03 13:44:02 -0800</bug_when>
    <thetext>&gt; Do you have a strong preference?

Nope!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800192</commentid>
    <comment_count>8</comment_count>
      <attachid>181126</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-04 07:07:17 -0800</bug_when>
    <thetext>Comment on attachment 181126
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=181126&amp;action=review

LGTM

&gt; Source/WebCore/bindings/v8/custom/V8BiquadFilterNodeCustom.cpp:40
&gt; +    v8::Handle&lt;v8::Object&gt; holder = info.Holder();
&gt; +    BiquadFilterNode* imp = V8BiquadFilterNode::toNative(holder);

Nit: You can just write &apos;info.Holder()&apos; instead of putting it into &apos;holder&apos;.

&gt; Source/WebCore/bindings/v8/custom/V8BiquadFilterNodeCustom.cpp:46
&gt; +        if (!ok || !imp-&gt;setType(type))

This should be &apos;ASSERT(ok)&apos;. Since you are checking IsNumber() above, toUInt32() should not fail.

&gt; Source/WebCore/bindings/v8/custom/V8PannerNodeCustom.cpp:40
&gt; +    v8::Handle&lt;v8::Object&gt; holder = info.Holder();
&gt; +    PannerNode* imp = V8PannerNode::toNative(holder);

Ditto. You can write &apos;info.Holder()&apos;.

&gt; Source/WebCore/bindings/v8/custom/V8PannerNodeCustom.cpp:46
&gt; +        if (!ok || !imp-&gt;setPanningModel(model))

Ditto. &apos;ASSERT(ok)&apos;.

&gt; Source/WebCore/bindings/v8/custom/V8PannerNodeCustom.cpp:66
&gt; +    v8::Handle&lt;v8::Object&gt; holder = info.Holder();
&gt; +    PannerNode* imp = V8PannerNode::toNative(holder);

Ditto.

&gt; Source/WebCore/bindings/v8/custom/V8PannerNodeCustom.cpp:72
&gt; +        if (!ok || !imp-&gt;setDistanceModel(model))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800193</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-04 07:09:15 -0800</bug_when>
    <thetext>nbarth: Once you implement &apos;enum&apos; in WebKit IDLs, you might want to clean up the custom bindings of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800586</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-01-04 13:34:48 -0800</bug_when>
    <thetext>Committed r138849: &lt;http://trac.webkit.org/changeset/138849&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181123</attachid>
            <date>2013-01-02 17:49:59 -0800</date>
            <delta_ts>2013-01-03 11:58:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105977-20130102174707.patch</filename>
            <type>text/plain</type>
            <size>64255</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE5MjUyM2RkZWMzNDRi
YjAzMjQ1NGQzN2UxNTk4N2IwN2M2YTg0Yi4uOGFlMjhiYTBjMjllOTZmMjE2YzNjZTRhZDA2ZThk
MGNmZWE0NDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAxLTAyICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYklE
TC1zdHlsZSBzdHJpbmcgY29uc3RhbnRzIGluIFdlYkF1ZGlvIChwYXJ0IDIpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU5NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgRGVwcmVjYXRpb24gTm90
ZXMgZm9yIG1vcmUgZGV0YWlsOgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlv
L3Jhdy1maWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0bWwjRGVwcmVjYXRpb25Ob3Rl
cworICAgICAgICAKKyAgICAgICAgUGFubmVyTm9kZSwgQmlxdWFkRmlsdGVyTm9kZSwgT3NjaWxs
YXRvck5vZGUgY29uc3RhbnRzIG11c3Qgc3VwcG9ydCBXZWJJREwtc3R5bGUgc3RyaW5nIGNvbnN0
YW50cy4KKyAgICAgICAgTGVnYWN5IHN1cHBvcnQgaW4gdGhlIHNldHRlcnMgZm9yIHRoZSBvbGQg
aW50ZWdlciB2YWx1ZXMgc2hvdWxkIGJlIHN1cHBvcnRlZC4KKyAgICAgICAgVGhpcyBwYXRjaCBo
YW5kbGVzIHRoZSBjaGFuZ2VzIGZvciBCaXF1YWRGaWx0ZXJOb2RlIGFuZCBQYW5uZXJOb2RlLgor
CisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL3Bhbm5lcm5vZGUtYmFzaWMuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpcXVhZEZpbHRlck5vZGU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaDoKKyAgICAgICAgKEJpcXVhZEZpbHRlck5vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGU6OnBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oOgorICAgICAgICAoUGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpT
Qy5jbWFrZToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0
VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJOb2Rl
OjpzZXRQYW5uaW5nTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJOb2RlOjpzZXRE
aXN0YW5jZU1vZGVsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaXF1YWRGaWx0
ZXJOb2RlQ3VzdG9tLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlQWNjZXNzb3JTZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBhbm5lck5vZGVDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYW5uZXJOb2RlOjpwYW5uaW5n
TW9kZWxBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFBhbm5lck5vZGU6OmRp
c3RhbmNlTW9kZWxBY2Nlc3NvclNldHRlcik6CisKIDIwMTMtMDEtMDIgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhdIFY4RE9NV3JhcHBlci5jcHAgaGFzIG1h
bnkgbW9yZSBpbmNsdWRlcyB0aGFuIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggYjZjODc0YjIyYTI2ZDJjNzdmZmViN2I5MjRkNDUxY2UyZjMxYzg4My4uMmFmZjA3
ODQ3Yzc4MTQzODJlNzNjYTU1YjZlMzhlNDE2ZWE3ZGNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yMjU1LDYgKzIyNTUsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTRm9udEZhY2VSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMzgzLDYg
KzIzODQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1Bhbm5lck5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAppbmRleCBkNzUyZTJjMzkyMGM0ZTA4
ODY1OTI0ZjZlNDViOTU1MWViZmU3Y2ZlLi4yZjUxYTQ4MjkzYjYxZjI3MzEwNWRkYWU2NDljOTM2
Y2UxODcwZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTQwLDE3ICs0MCw2MiBAQCBCaXF1YWRGaWx0ZXJOb2Rl
OjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CiB9CiAKLXZvaWQgQmlx
dWFkRmlsdGVyTm9kZTo6c2V0VHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1N0cmluZyBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKIHsKLSAgICBpZiAo
dHlwZSA+IEJpcXVhZFByb2Nlc3Nvcjo6QWxscGFzcykgewotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICByZXR1cm47CisgICAgc3dpdGNoIChjb25zdF9jYXN0PEJpcXVh
ZEZpbHRlck5vZGUqPih0aGlzKS0+YmlxdWFkUHJvY2Vzc29yKCktPnR5cGUoKSkgeworICAgIGNh
c2UgQmlxdWFkUHJvY2Vzc29yOjpMb3dQYXNzOgorICAgICAgICByZXR1cm4gImxvd3Bhc3MiOwor
ICAgIGNhc2UgQmlxdWFkUHJvY2Vzc29yOjpIaWdoUGFzczoKKyAgICAgICAgcmV0dXJuICJoaWdo
cGFzcyI7CisgICAgY2FzZSBCaXF1YWRQcm9jZXNzb3I6OkJhbmRQYXNzOgorICAgICAgICByZXR1
cm4gImJhbmRwYXNzIjsKKyAgICBjYXNlIEJpcXVhZFByb2Nlc3Nvcjo6TG93U2hlbGY6CisgICAg
ICAgIHJldHVybiAibG93c2hlbGYiOworICAgIGNhc2UgQmlxdWFkUHJvY2Vzc29yOjpIaWdoU2hl
bGY6CisgICAgICAgIHJldHVybiAiaGlnaHNoZWxmIjsKKyAgICBjYXNlIEJpcXVhZFByb2Nlc3Nv
cjo6UGVha2luZzoKKyAgICAgICAgcmV0dXJuICJwZWFraW5nIjsKKyAgICBjYXNlIEJpcXVhZFBy
b2Nlc3Nvcjo6Tm90Y2g6CisgICAgICAgIHJldHVybiAibm90Y2giOworICAgIGNhc2UgQmlxdWFk
UHJvY2Vzc29yOjpBbGxwYXNzOgorICAgICAgICByZXR1cm4gImFsbHBhc3MiOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gImxvd3Bh
c3MiOwogICAgIH0KK30KKwordm9pZCBCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSAibG93cGFzcyIpCisgICAgICAgIHNldFR5
cGUoQmlxdWFkUHJvY2Vzc29yOjpMb3dQYXNzKTsKKyAgICBlbHNlIGlmICh0eXBlID09ICJoaWdo
cGFzcyIpCisgICAgICAgIHNldFR5cGUoQmlxdWFkUHJvY2Vzc29yOjpIaWdoUGFzcyk7CisgICAg
ZWxzZSBpZiAodHlwZSA9PSAiYmFuZHBhc3MiKQorICAgICAgICBzZXRUeXBlKEJpcXVhZFByb2Nl
c3Nvcjo6QmFuZFBhc3MpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gImxvd3NoZWxmIikKKyAgICAg
ICAgc2V0VHlwZShCaXF1YWRQcm9jZXNzb3I6Okxvd1NoZWxmKTsKKyAgICBlbHNlIGlmICh0eXBl
ID09ICJoaWdoc2hlbGYiKQorICAgICAgICBzZXRUeXBlKEJpcXVhZFByb2Nlc3Nvcjo6SGlnaFNo
ZWxmKTsKKyAgICBlbHNlIGlmICh0eXBlID09ICJwZWFraW5nIikKKyAgICAgICAgc2V0VHlwZShC
aXF1YWRQcm9jZXNzb3I6OlBlYWtpbmcpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gIm5vdGNoIikK
KyAgICAgICAgc2V0VHlwZShCaXF1YWRQcm9jZXNzb3I6Ok5vdGNoKTsKKyAgICBlbHNlIGlmICh0
eXBlID09ICJhbGxwYXNzIikKKyAgICAgICAgc2V0VHlwZShCaXF1YWRQcm9jZXNzb3I6OkFsbHBh
c3MpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
QmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZSh1bnNpZ25lZCB0eXBlKQoreworICAgIGlmICh0eXBl
ID4gQmlxdWFkUHJvY2Vzc29yOjpBbGxwYXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CiAgICAgYmlxdWFkUHJvY2Vzc29yKCktPnNldFR5cGUoc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vz
c29yOjpGaWx0ZXJUeXBlPih0eXBlKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLQogdm9pZCBC
aXF1YWRGaWx0ZXJOb2RlOjpnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBGbG9hdDMyQXJyYXkq
IGZyZXF1ZW5jeUh6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGbG9hdDMyQXJyYXkqIG1hZ1Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkqIHBoYXNlUmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4IGY2
Njk5YWY4MDQ2YTdmOTY5M2NjZTJmNzhlNTFlNWJjNDhkYjkwZGEuLmRkZTJhZWM3NzI2ZTQ5ZTc3
YzFhYjYzNjAwZWI0MDUyMzU1ZmMzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCkBAIC01MCw5ICs1MCwxMCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpcXVhZEZpbHRlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAogICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBzaG9y
dCB0eXBlKCkgeyByZXR1cm4gYmlxdWFkUHJvY2Vzc29yKCktPnR5cGUoKTsgfQotICAgIHZvaWQg
c2V0VHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBTdHJp
bmcgdHlwZSgpIGNvbnN0OworICAgIGJvb2wgc2V0VHlwZSh1bnNpZ25lZCk7IC8vIFJldHVybnMg
dHJ1ZSBvbiBzdWNjZXNzLgorICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IEF1ZGlvUGFyYW0qIGZyZXF1ZW5jeSgpIHsgcmV0dXJuIGJpcXVhZFByb2Nlc3NvcigpLT5wYXJh
bWV0ZXIxKCk7IH0KICAgICBBdWRpb1BhcmFtKiBxKCkgeyByZXR1cm4gYmlxdWFkUHJvY2Vzc29y
KCktPnBhcmFtZXRlcjIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwKaW5kZXggYWYyMGQwYmU4ZGY5YTY0ZGNkNDU4NDZm
ZTdiZjJhMmM2NjEyMDZmNi4uZjM3NGFmNTI1MzUzZDMyNDE4NDdjZmI4NWY2OWM5YWQ1MzliOGMy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuaWRsCkBAIC0zNiw4ICszNiw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Tk9UQ0ggPSA2OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFMTFBBU1MgPSA3OwogCi0gICAg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHR5cGUKLSAgICAgICAgc2V0dGVyIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsK
ICAgICAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBmcmVxdWVuY3k7IC8vIGlu
IEhlcnR6CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gZGV0dW5lOyAvLyBpbiBD
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
aW5kZXggOTZkNGQ4MTgxN2JhOWVkNTNmYzE0ZTNlMmMyYjEwY2IyZmZkNzExOC4uMzEyNDk5Yjkx
MGExZjQ3YTgyODcwOTE4N2RlOGJjODQ2MTExYjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkhSVEZQYW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE1
MSw3ICsxNTIsMzQgQEAgQXVkaW9MaXN0ZW5lciogUGFubmVyTm9kZTo6bGlzdGVuZXIoKQogICAg
IHJldHVybiBjb250ZXh0KCktPmxpc3RlbmVyKCk7CiB9CiAKLXZvaWQgUGFubmVyTm9kZTo6c2V0
UGFubmluZ01vZGVsKHVuc2lnbmVkIHNob3J0IG1vZGVsLCBFeGNlcHRpb25Db2RlJiBlYykKK1N0
cmluZyBQYW5uZXJOb2RlOjpwYW5uaW5nTW9kZWwoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9w
YW5uaW5nTW9kZWwpIHsKKyAgICBjYXNlIEVRVUFMUE9XRVI6CisgICAgICAgIHJldHVybiAiZXF1
YWxwb3dlciI7CisgICAgY2FzZSBIUlRGOgorICAgICAgICByZXR1cm4gIkhSVEYiOworICAgIGNh
c2UgU09VTkRGSUVMRDoKKyAgICAgICAgcmV0dXJuICJzb3VuZGZpZWxkIjsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICJIUlRGIjsK
KyAgICB9Cit9CisKK3ZvaWQgUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKGNvbnN0IFN0cmlu
ZyYgbW9kZWwpCit7CisgICAgaWYgKG1vZGVsID09ICJlcXVhbHBvd2VyIikKKyAgICAgICAgc2V0
UGFubmluZ01vZGVsKEVRVUFMUE9XRVIpOworICAgIGVsc2UgaWYgKG1vZGVsID09ICJIUlRGIikK
KyAgICAgICAgc2V0UGFubmluZ01vZGVsKEhSVEYpOworICAgIGVsc2UgaWYgKG1vZGVsID09ICJz
b3VuZGZpZWxkIikKKyAgICAgICAgc2V0UGFubmluZ01vZGVsKFNPVU5ERklFTEQpOworICAgIGVs
c2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgUGFubmVyTm9kZTo6
c2V0UGFubmluZ01vZGVsKHVuc2lnbmVkIG1vZGVsKQogewogICAgIHN3aXRjaCAobW9kZWwpIHsK
ICAgICBjYXNlIEVRVUFMUE9XRVI6CkBAIC0xNjQsMTQgKzE5Miw0MyBAQCB2b2lkIFBhbm5lck5v
ZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2RlbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU09VTkRGSUVMRDoKICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBzb3VuZCBmaWVsZCBtb2RlbC4gU2VlIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2Ny4KLSAgICAgICAgLy8gRm9yIG5vdywgZmFsbCB0
aHJvdWdoIHRvIHRocm93IGFuIGV4Y2VwdGlvbi4KLSAgICBkZWZhdWx0OgotICAgICAgICBlYyA9
IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2Fn
ZUxldmVsLCAiJ3NvdW5kZmllbGQnIHBhbm5pbmcgbW9kZWwgbm90IGltcGxlbWVudGVkLiIpOwog
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhbm5lck5vZGU6OnNldERpc3Rh
bmNlTW9kZWwodW5zaWduZWQgc2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQorU3RyaW5n
IFBhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAoreworICAgIHN3aXRjaCAoY29uc3Rf
Y2FzdDxQYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFuY2VFZmZlY3QubW9kZWwoKSkgeworICAg
IGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsTGluZWFyOgorICAgICAgICByZXR1cm4gImxpbmVh
ciI7CisgICAgY2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxJbnZlcnNlOgorICAgICAgICByZXR1
cm4gImludmVyc2UiOworICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsRXhwb25lbnRpYWw6
CisgICAgICAgIHJldHVybiAiZXhwb25lbnRpYWwiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gImludmVyc2UiOworICAgIH0KK30K
Kwordm9pZCBQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKGNvbnN0IFN0cmluZyYgbW9kZWwp
Cit7CisgICAgaWYgKG1vZGVsID09ICJsaW5lYXIiKQorICAgICAgICBzZXREaXN0YW5jZU1vZGVs
KERpc3RhbmNlRWZmZWN0OjpNb2RlbExpbmVhcik7CisgICAgZWxzZSBpZiAobW9kZWwgPT0gImlu
dmVyc2UiKQorICAgICAgICBzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlRWZmZWN0OjpNb2RlbElu
dmVyc2UpOworICAgIGVsc2UgaWYgKG1vZGVsID09ICJleHBvbmVudGlhbCIpCisgICAgICAgIHNl
dERpc3RhbmNlTW9kZWwoRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsRXhwb25lbnRpYWwpOworICAgIGVs
c2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgUGFubmVyTm9kZTo6
c2V0RGlzdGFuY2VNb2RlbCh1bnNpZ25lZCBtb2RlbCkKIHsKICAgICBzd2l0Y2ggKG1vZGVsKSB7
CiAgICAgY2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxMaW5lYXI6CkBAIC0xODAsOSArMjM3LDEw
IEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2Rl
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwo
c3RhdGljX2Nhc3Q8RGlzdGFuY2VFZmZlY3Q6Ok1vZGVsVHlwZT4obW9kZWwpLCB0cnVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRv
dWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IGI4Y2MxZGU3ZDg2MzkyM2Q1OTk0
ZGJmODViMTcwOTE5YmUwOTlkYWEuLmM3NzY2MDQ0ZmU4NGFjMzRjYzkwMWNmNzUwODZiMDZhYTJj
MGJhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5o
CkBAIC03OSw4ICs3OSw5IEBAIHB1YmxpYzoKICAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigp
OwogCiAgICAgLy8gUGFubmluZyBtb2RlbAotICAgIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2Rl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9Ci0gICAgdm9pZCBzZXRQYW5uaW5n
TW9kZWwodW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgcGFubmlu
Z01vZGVsKCkgY29uc3Q7CisgICAgYm9vbCBzZXRQYW5uaW5nTW9kZWwodW5zaWduZWQpOyAvLyBS
ZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KKyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFBvc2l0aW9uCiAgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQpAQCAtOTUsOCArOTYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2Np
dHkgPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KIAogICAgIC8vIERpc3RhbmNlIHBhcmFtZXRl
cnMKLSAgICB1bnNpZ25lZCBzaG9ydCBkaXN0YW5jZU1vZGVsKCkgeyByZXR1cm4gbV9kaXN0YW5j
ZUVmZmVjdC5tb2RlbCgpOyB9Ci0gICAgdm9pZCBzZXREaXN0YW5jZU1vZGVsKHVuc2lnbmVkIHNo
b3J0LCBFeGNlcHRpb25Db2RlJik7CisgICAgU3RyaW5nIGRpc3RhbmNlTW9kZWwoKSBjb25zdDsK
KyAgICBib29sIHNldERpc3RhbmNlTW9kZWwodW5zaWduZWQpOyAvLyBSZXR1cm5zIHRydWUgb24g
c3VjY2Vzcy4KKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBmbG9hdCByZWZEaXN0YW5jZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX2Rpc3Rh
bmNlRWZmZWN0LnJlZkRpc3RhbmNlKCkpOyB9CiAgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShmbG9h
dCByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3Rh
bmNlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5p
ZGwKaW5kZXggNWNmMWY3YzdlYmE0ZWM1Zjk2ZmRmMDYwMjcxYjJlMTNhOGQ3MGMyNi4uYWM0Y2Rk
ZDcxMGUxMDM5ODU0ZWQ5NDc0YTNlN2E4NWNhZTc1NzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCkBAIC0zNyw4ICszNyw3IEBACiAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgRVhQT05FTlRJQUxfRElTVEFOQ0UgPSAyOwogCiAgICAgLy8g
RGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYgCi0gICAgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0IHBhbm5pbmdNb2RlbAotICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgW0N1c3RvbVNldHRlcl0gYXR0cmlidXRlIERPTVN0cmluZyBwYW5uaW5nTW9kZWw7CiAK
ICAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtIAogICAgIHZvaWQg
c2V0UG9zaXRpb24oaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7CkBAIC00Niw4
ICs0NSw3IEBACiAgICAgdm9pZCBzZXRWZWxvY2l0eShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBp
biBmbG9hdCB6KTsKIAogICAgIC8vIERpc3RhbmNlIG1vZGVsCi0gICAgYXR0cmlidXRlIHVuc2ln
bmVkIHNob3J0IGRpc3RhbmNlTW9kZWwKLSAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlzdGFuY2VNb2Rl
bDsKIAogICAgIGF0dHJpYnV0ZSBmbG9hdCByZWZEaXN0YW5jZTsKICAgICBhdHRyaWJ1dGUgZmxv
YXQgbWF4RGlzdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkZDQzYzFmN2ZkMTYwZGI0YjZjZGUwNjhj
ZTgwNDdlYzkzNjNlODlhLi5kODA5OGEwNDhhYWNkMTYwZDc3ZjRjZWYxYzNjOGIwZGZhYjgxMzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTM0MTksOCArMzQxOSwxMCBAQCBlbmFibGU/KFdFQl9BVURJTykg
ewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dXZWJBdWRpb0N1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcCBcCisgICAg
ICAgIGJpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1NjcmlwdFByb2Nlc3Nvck5vZGVDdXN0b20uY3BwIFwKICAgICAgICAgTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggZWRhYzJl
NGE5NDYwYzJhNzE2N2E5MzAxZDI4M2NmZmU3ZDE3MzlkMS4uYzM3NDkxMWVhZmJlNGM1MmI0ZTIz
ZGE5ODVkZTQ0ZDZkYjFmZWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjY4LDcgKzI2OCw5IEBA
IGlmIChFTkFCTEVfV0VCX0FVRElPKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKICAg
ICAgICAgYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMv
SlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNQYW5uZXJO
b2RlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1NjcmlwdFByb2Nlc3Nvck5vZGVD
dXN0b20uY3BwCiAgICAgKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggNGEwODE0ODdmZDBk
NmIxOTAyOTVlMjA1NjlkZTA0ZTI4MDZiNDYyYy4uNzIyOTEwMDNhYTFlMGU5N2JiZDVmM2RmMjBk
YTA5ODY1ZmFkNjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTc2LDYgKzc2LDcgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKyAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTEzOSw2ICsxNDAsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50
ZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4T3NjaWxsYXRvck5vZGVDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5j
cHAKKyAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQYW5uZXJOb2RlQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAz
Mzg3YmNiOGJkNzM3NzNkOGU0ZjAxNDVkOThhZTRiMDY4YzMyNmRlLi4yNjVkNDQ4NGUyNjc0MGNl
M2NhNzQyZTUxMGNjZWU2NmE3YjA2YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMjk5LDYgKzEy
OTksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmll
d0N1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0J1ZmZl
clNvdXJjZU5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhBdWRpb0NvbnRleHRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENTU1J1bGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCcsCkBAIC0xMzcyLDYgKzEzNzMsNyBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRl
ckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE9zY2lsbGF0
b3JOb2RlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGFu
bmVyTm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBl
cmZvcm1hbmNlRW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhNjczYTcyYjI4
MDBkN2I4NGIzMTljZDNhZjY2ZDYyYTk5OTJkNzEuLjdhMjNkMTlmZGYyZDc4OTYwN2FjMDRkNzUx
YTM3ZTgxYTVkYWU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTY1ODksNiArNjU4OSw4IEBACiAJCUZEN0YyOTk3MTNENEMw
Q0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2
ZVNoYXBlclByb2Nlc3Nvci5oICovOyB9OwogCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyog
SlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5j
cHAgKi87IH07CiAJCUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDgyRDdG
NjEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5oICovOyB9OworCQlGRDhBQTYz
QzE2OTUxNDhFMDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEFBNjNCMTY5NTE0OEUw
MEQyRUE2OCAvKiBKU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwICovOyB9OworCQlGRDhBQTYz
RTE2OTUxNEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEFBNjNEMTY5NTE0QTcwMEQyRUE2
OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwICovOyB9OwogCQlGRDhDNDZFQjE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEM0NkU5MTU0NjA4RTcwMEE1OTEwQyAvKiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwICovOyB9OwogCQlGRDhDNDZFQzE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDhDNDZFQTE1NDYwOEU3MDBBNTkxMEMgLyogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggKi87IH07CiAJCUZEQTE1RTlEMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQTE1RTgxMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmNw
cCAqLzsgfTsKQEAgLTE0MTY1LDYgKzE0MTY3LDggQEAKIAkJRkQ3RjI5OTAxM0Q0QzBDQjAwQUQ5
NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2F2ZVNoYXBlclByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dhdmVTaGFwZXJOb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ4MkQ3RjYxM0Q0QzhCRDAwNEU0MzcyIC8qIEpT
V2F2ZVNoYXBlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXYXZl
U2hhcGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDhBQTYzQjE2OTUx
NDhFMDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEOEFBNjNEMTY5NTE0QTcwMEQyRUE2OCAvKiBK
U1Bhbm5lck5vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQ4QzQ2RTkxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDhDNDZFQTE1NDYwOEU3
MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGREExNUU4MTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjQ1LDYgKzIwNjQ5LDcgQEAK
IAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLywKIAkJ
CQlGREVBQUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0
b20uY3BwICovLAogCQkJCUZERUFBQUYwMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQ29udGV4
dEN1c3RvbS5jcHAgKi8sCisJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFk
RmlsdGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8q
IEpTQmxvYkN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0RDEwNTE5
NzFBMDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKQEAg
LTIwNzM2LDYgKzIwNzQxLDcgQEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
b2RlTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGRTZFNkMxNTAxQTNCRjAwMDRFQkM0IC8qIEpT
Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlGREJEMURGQjE2N0ZFMjdEMDA1MUExMUUg
LyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgKi8sCisJCQkJRkQ4QUE2M0QxNjk1MTRBNzAw
RDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJQTg1RjIyMDgxNDMwMzc3
RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDEyRDUx
Mjk1RDBCRDAwQUNBOTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLywK
IAkJCQk0OTk4QUVEMzEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja0N1c3RvbS5jcHAgKi8sCkBAIC0yOTEzMiw2ICsyOTEzOCw4IEBACiAJCQkJNDE5QkMy
REUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNURBOTdFQ0UxNjhFNzg3QjAwMEUzNjc2IC8qIFN5c3RlbVZlcnNpb25NYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGREJEMURGQzE2N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9y
Tm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDhBQTYzQzE2OTUxNDhFMDBEMkVB
NjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZE
OEFBNjNFMTY5NTE0QTcwMEQyRUE2OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZp
bHRlck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRG
aWx0ZXJOb2RlQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWQ5YzljOTE5MGE1NjY0MTc3ZmI3ZmQy
MzdhNGVlZTY4YzdlNmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKwor
I2luY2x1ZGUgIkpTQmlxdWFkRmlsdGVyTm9kZS5oIgorCisjaW5jbHVkZSAiQmlxdWFkRmlsdGVy
Tm9kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBKU0JpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIEJpcXVhZEZpbHRlck5vZGUqIGltcCA9IHN0YXRpY19jYXN0PEJpcXVh
ZEZpbHRlck5vZGUqPihpbXBsKCkpOworCisjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCisg
ICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgdWludDMyX3QgdHlwZSA9IHZhbHVl
LnRvVUludDMyKGV4ZWMpOworICAgICAgICBpZiAoIWltcC0+c2V0VHlwZSh0eXBlKSkKKyAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbGxlZ2FsIEJp
cXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmICh0eXBlID09ICJsb3dw
YXNzIiB8fCB0eXBlID09ICJoaWdocGFzcyIgfHwgdHlwZSA9PSAiYmFuZHBhc3MiIHx8IHR5cGUg
PT0gImxvd3NoZWxmIiB8fCB0eXBlID09ICJoaWdoc2hlbGYiIHx8IHR5cGUgPT0gInBlYWtpbmci
IHx8IHR5cGUgPT0gIm5vdGNoIiB8fCB0eXBlID09ICJhbGxwYXNzIikgeworICAgICAgICAgICAg
aW1wLT5zZXRUeXBlKHR5cGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbGxl
Z2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MTNkZTQwYTI0
N2FjNGM3OTFiMmZjYTRkZTVjM2JjMWY5M2RkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsODkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FV
RElPKQorCisjaW5jbHVkZSAiSlNQYW5uZXJOb2RlLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBQYW5uZXJOb2RlKiBpbXAgPSBzdGF0aWNfY2FzdDxQYW5uZXJOb2RlKj4o
aW1wbCgpKTsKKworI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQorICAgIGlmICh2YWx1ZS5p
c051bWJlcigpKSB7CisgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoZXhl
Yyk7CisgICAgICAgIGlmICghaW1wLT5zZXRQYW5uaW5nTW9kZWwobW9kZWwpKQorICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwgcGFubmlu
Z01vZGVsIikpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgeworICAgICAgICBTdHJpbmcgbW9kZWwgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChtb2RlbCA9PSAiZXF1YWxwb3dlciIgfHwg
bW9kZWwgPT0gIkhSVEYiIHx8IG1vZGVsID09ICJzb3VuZGZpZWxkIikgeworICAgICAgICAgICAg
aW1wLT5zZXRQYW5uaW5nTW9kZWwobW9kZWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJJbGxlZ2FsIHBhbm5pbmdNb2RlbCIpKTsKK30KKwordm9pZCBKU1Bhbm5lck5vZGU6OnNl
dERpc3RhbmNlTW9kZWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFBh
bm5lck5vZGUqIGltcCA9IHN0YXRpY19jYXN0PFBhbm5lck5vZGUqPihpbXBsKCkpOworCisjaWYg
RU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCisgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgdWludDMyX3QgbW9kZWwgPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgaWYg
KCFpbXAtPnNldERpc3RhbmNlTW9kZWwobW9kZWwpKQorICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkp
IHsKKyAgICAgICAgU3RyaW5nIG1vZGVsID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgICAgICBpZiAobW9kZWwgPT0gImxpbmVhciIgfHwgbW9kZWwgPT0gImludmVyc2Ui
IHx8IG1vZGVsID09ICJleHBvbmVudGlhbCIpIHsKKyAgICAgICAgICAgIGltcC0+c2V0RGlzdGFu
Y2VNb2RlbChtb2RlbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwg
ZGlzdGFuY2VNb2RlbCIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTE5MWI1ZDVmYmQzNDI4NTVkZGNmYWUzNjY1MzI2NTg4NDc4NzRmMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpcXVhZEZpbHRlck5v
ZGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiVjhCaXF1YWRGaWx0
ZXJOb2RlLmgiCisKKyNpbmNsdWRlICJCaXF1YWRGaWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgVjhCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlQWNjZXNzb3JTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkJpcXVhZEZpbHRl
ck5vZGUudHlwZS5fc2V0Iik7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBp
bmZvLkhvbGRlcigpOworICAgIEJpcXVhZEZpbHRlck5vZGUqIGltcCA9IFY4QmlxdWFkRmlsdGVy
Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKKworI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKSAg
ICAKKyAgICBpZiAodmFsdWUtPklzTnVtYmVyKCkpIHsKKyAgICAgICAgYm9vbCBvayA9IGZhbHNl
OworICAgICAgICB1aW50MzJfdCB0eXBlID0gdG9VSW50MzIodmFsdWUsIG9rKTsKKyAgICAgICAg
aWYgKCFvayB8fCAhaW1wLT5zZXRUeXBlKHR5cGUpKQorICAgICAgICAgICAgdGhyb3dFcnJvcih2
OFR5cGVFcnJvciwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIiwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAodmFsdWUt
PklzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcodmFs
dWUpOworICAgICAgICBpZiAodHlwZSA9PSAibG93cGFzcyIgfHwgdHlwZSA9PSAiaGlnaHBhc3Mi
IHx8IHR5cGUgPT0gImJhbmRwYXNzIiB8fCB0eXBlID09ICJsb3dzaGVsZiIgfHwgdHlwZSA9PSAi
aGlnaHNoZWxmIiB8fCB0eXBlID09ICJwZWFraW5nIiB8fCB0eXBlID09ICJub3RjaCIgfHwgdHlw
ZSA9PSAiYWxscGFzcyIpIHsKKyAgICAgICAgICAgIGltcC0+c2V0VHlwZSh0eXBlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0aHJvd0Vycm9yKHY4
VHlwZUVycm9yLCAiSWxsZWdhbCBCaXF1YWRGaWx0ZXJOb2RlIHR5cGUiLCBpbmZvLkdldElzb2xh
dGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhQYW5uZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFBhbm5lck5vZGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNGQ4M2U4NTQ1NjZiMDUyY2Rl
NzQzNGEzNWEyZmNjOGFmMDM5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhQYW5uZXJOb2RlQ3VzdG9tLmNwcApAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIlY4UGFubmVyTm9kZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFY4UGFubmVyTm9kZTo6cGFubmluZ01vZGVsQWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFU
UygiRE9NLlBhbm5lck5vZGUucGFubmluZ01vZGVsLl9zZXQiKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgUGFubmVyTm9kZSogaW1wID0g
VjhQYW5uZXJOb2RlOjp0b05hdGl2ZShob2xkZXIpOworCisjaWYgRU5BQkxFKExFR0FDWV9XRUJf
QVVESU8pICAgIAorICAgIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkgeworICAgICAgICBib29sIG9r
ID0gZmFsc2U7CisgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdG9VSW50MzIodmFsdWUsIG9rKTsK
KyAgICAgICAgaWYgKCFvayB8fCAhaW1wLT5zZXRQYW5uaW5nTW9kZWwobW9kZWwpKQorICAgICAg
ICAgICAgdGhyb3dFcnJvcih2OFR5cGVFcnJvciwgIklsbGVnYWwgcGFubmluZ01vZGVsIiwgaW5m
by5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBp
ZiAodmFsdWUtPklzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIG1vZGVsID0gdG9XZWJDb3Jl
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgaWYgKG1vZGVsID09ICJlcXVhbHBvd2VyIiB8fCBtb2Rl
bCA9PSAiSFJURiIgfHwgbW9kZWwgPT0gInNvdW5kZmllbGQiKSB7CisgICAgICAgICAgICBpbXAt
PnNldFBhbm5pbmdNb2RlbChtb2RlbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgdGhyb3dFcnJvcih2OFR5cGVFcnJvciwgIklsbGVnYWwgcGFubmlu
Z01vZGVsIiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2b2lkIFY4UGFubmVyTm9kZTo6ZGlz
dGFuY2VNb2RlbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5QYW5uZXJOb2RlLmRpc3RhbmNlTW9kZWwuX3NldCIpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBQYW5u
ZXJOb2RlKiBpbXAgPSBWOFBhbm5lck5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CisKKyNpZiBFTkFC
TEUoTEVHQUNZX1dFQl9BVURJTykgICAgCisgICAgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7Cisg
ICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAgICAgdWludDMyX3QgbW9kZWwgPSB0b1VJbnQz
Mih2YWx1ZSwgb2spOworICAgICAgICBpZiAoIW9rIHx8ICFpbXAtPnNldERpc3RhbmNlTW9kZWwo
bW9kZWwpKQorICAgICAgICAgICAgdGhyb3dFcnJvcih2OFR5cGVFcnJvciwgIklsbGVnYWwgZGlz
dGFuY2VNb2RlbCIsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorCisgICAgaWYgKHZhbHVlLT5Jc1N0cmluZygpKSB7CisgICAgICAgIFN0cmluZyBt
b2RlbCA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CisgICAgICAgIGlmIChtb2RlbCA9PSAibGlu
ZWFyIiB8fCBtb2RlbCA9PSAiaW52ZXJzZSIgfHwgbW9kZWwgPT0gImV4cG9uZW50aWFsIikgewor
ICAgICAgICAgICAgaW1wLT5zZXREaXN0YW5jZU1vZGVsKG1vZGVsKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0aHJvd0Vycm9yKHY4VHlwZUVycm9y
LCAiSWxsZWdhbCBkaXN0YW5jZU1vZGVsIiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGY5NDg0OWYxZmE0NzllZDAzZjA1NmJjOTkxZTUwMmIyZTU0OGJmOTcuLjgxMGE1ZjMzMWI5MWMy
NWNmYmE5ZjI0YjZjMzQxYjljZmJhOTg4MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0w
MS0wMiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBXZWJJREwtc3R5bGUgc3RyaW5nIGNvbnN0YW50cyBpbiBXZWJBdWRpbyAocGFydCAyKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1OTc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRp
by9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmF1ZGlvL2F1ZGlvcGFubmVybm9kZS1iYXNpYy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHdlYmF1ZGlvL2JpcXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViYXVkaW8vYmlxdWFkLWdldEZyZXF1ZW5jeVJlc3BvbnNlLmh0bWw6CisgICAgICAg
ICogd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNpYy5odG1sOgorICAgICAgICAqIHdlYmF1
ZGlvL3Bhbm5lcm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJh
dWRpby9wYW5uZXJub2RlLWJhc2ljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL3Jl
c291cmNlcy9iaXF1YWQtdGVzdGluZy5qczoKKyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMv
ZGlzdGFuY2UtbW9kZWwtdGVzdGluZy5qczoKKyAgICAgICAgKGNyZWF0ZUdyYXBoKToKKyAgICAg
ICAgKC5yZXR1cm4ucmVuZGVyZWRCdWZmZXIpOgorICAgICAgICAoY2hlY2tEaXN0YW5jZVJlc3Vs
dCk6CisgICAgICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL3Bhbm5lci1tb2RlbC10ZXN0aW5nLmpz
OgorICAgICAgICAoY3JlYXRlR3JhcGgpOgorCiAyMDEzLTAxLTAyICBMdWtlIE1hY3BoZXJzb24g
ICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1
bSBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5l
cm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYW5u
ZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWE5Nzc0ZWMyOTU0MGM0NjBjMDQ2NDA5MDk4ZmNkMjIzZjYxMTcyOC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b3Bhbm5lcm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAs
MCBAQAotQmFzaWMgdGVzdCBmb3IgQXVkaW9QYW5uZXJOb2RlLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLVBBU1MgQXVkaW9QYW5uZXJOb2RlIGhhcyBvbmUgaW5wdXQuCi1QQVNTIEF1
ZGlvUGFubmVyTm9kZSBoYXMgb25lIG91dHB1dC4KLVBBU1MgcGFubmluZ01vZGVsIGRlZmF1bHQg
dmFsdWUgaXMgSFJURi4KLVBBU1MgcmVmRGlzdGFuY2UgZGVmYXVsdCB2YWx1ZSBpcyAxLgotUEFT
UyBtYXhEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIGlzIDEwMDAwLgotUEFTUyByb2xsb2ZmRmFjdG9y
IGRlZmF1bHQgdmFsdWUgaXMgMS4KLVBBU1MgY29uZUlubmVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBp
cyAzNjAuCi1QQVNTIGNvbmVPdXRlckFuZ2xlIGRlZmF1bHQgdmFsdWUgaXMgMzYwLgotUEFTUyBj
b25lT3V0ZXJHYWluIGRlZmF1bHQgdmFsdWUgaXMgMC4KLVBBU1MgcGFubmluZ01vZGVsIHNldCB0
byBFUVVBTFBPV0VSIG1vZGVsIGFuZCByZWFkIGNvcnJlY3RseS4KLVBBU1MgcGFubmluZ01vZGVs
IHNldCB0byBIUlRGIG1vZGVsIGFuZCByZWFkIGNvcnJlY3RseS4KLVBBU1MgU2V0dGluZyBwYW5u
aW5nTW9kZWwgdG8gU09VTkRGSUVMRCBjb3JyZWN0bHkgdGhyb3dzIGV4Y2VwdGlvbiBiZWNhdXNl
IGl0IGlzIG5vdCBpbXBsZW1lbnRlZC4KLVBBU1MgSWxsZWdhbCBwYW5uaW5nTW9kZWwgY29ycmVj
dGx5IHRocm93cyBleGNlcHRpb24uCi1QQVNTIGRpc3RhbmNlTW9kZWwgc2V0IHRvIExJTkVBUl9E
SVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuCi1QQVNTIGRpc3RhbmNlTW9kZWwgc2V0IHRvIElO
VkVSU0VfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LgotUEFTUyBkaXN0YW5jZU1vZGVsIHNl
dCB0byBFWFBPTkVOVElBTF9ESVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuCi1QQVNTIElsbGVn
YWwgZGlzdGFuY2VNb2RlbCBjb3JyZWN0bHkgdGhyb3dzIGV4Y2VwdGlvbi4KLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvcGFubmVybm9kZS1iYXNpYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzNmQ0MjA3ZDQzODBmYTc5YTU2N2Y3ODk4NGM0ODIyNDU4NmZiM2Y2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvcGFubmVybm9kZS1iYXNpYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTM1
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9k
eT4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotCi08c2NyaXB0PgotZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgZm9yIEF1ZGlvUGFubmVyTm9k
ZS4iKTsKLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLQotICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOwotICAgIHZh
ciBwYW5uZXIgPSBjb250ZXh0LmNyZWF0ZVBhbm5lcigpOwotICAgIAotICAgIGlmIChwYW5uZXIu
bnVtYmVyT2ZJbnB1dHMgPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIkF1ZGlvUGFubmVyTm9k
ZSBoYXMgb25lIGlucHV0LiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiQXVkaW9Q
YW5uZXJOb2RlIHNob3VsZCBoYXZlIG9uZSBpbnB1dC4iKTsKLQotICAgIGlmIChwYW5uZXIubnVt
YmVyT2ZPdXRwdXRzID09PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCJBdWRpb1Bhbm5lck5vZGUg
aGFzIG9uZSBvdXRwdXQuIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCJBdWRpb1Bh
bm5lck5vZGUgc2hvdWxkIGhhdmUgb25lIG91dHB1dC4iKTsKLQotICAgIGlmIChwYW5uZXIucGFu
bmluZ01vZGVsID09PSBwYW5uZXIuSFJURikKLSAgICAgICAgdGVzdFBhc3NlZCgicGFubmluZ01v
ZGVsIGRlZmF1bHQgdmFsdWUgaXMgSFJURi4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWls
ZWQoInBhbm5pbmdNb2RlbCBkZWZhdWx0IHZhbHVlIGlzIG5vdCBIUlRGLiIpOwotIAotICAgIGlm
IChwYW5uZXIucmVmRGlzdGFuY2UgPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoInJlZkRpc3Rh
bmNlIGRlZmF1bHQgdmFsdWUgaXMgMS4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQo
InJlZkRpc3RhbmNlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIDEuIik7Ci0KLSAgICBpZiAocGFu
bmVyLm1heERpc3RhbmNlID09PSAxMDAwMCkKLSAgICAgICAgdGVzdFBhc3NlZCgibWF4RGlzdGFu
Y2UgZGVmYXVsdCB2YWx1ZSBpcyAxMDAwMC4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWls
ZWQoIm1heERpc3RhbmNlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIDEwMDAwLiIpOwotCi0gICAg
aWYgKHBhbm5lci5yb2xsb2ZmRmFjdG9yID09PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCJyb2xs
b2ZmRmFjdG9yIGRlZmF1bHQgdmFsdWUgaXMgMS4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RG
YWlsZWQoInJvbGxvZmZGYWN0b3IgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgMS4iKTsKLQotICAg
IGlmIChwYW5uZXIuY29uZUlubmVyQW5nbGUgPT09IDM2MCkKLSAgICAgICAgdGVzdFBhc3NlZCgi
Y29uZUlubmVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBpcyAzNjAuIik7Ci0gICAgZWxzZQotICAgICAg
ICB0ZXN0RmFpbGVkKCJjb25lSW5uZXJBbmdsZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSAzNjAu
Iik7Ci0KLSAgICBpZiAocGFubmVyLmNvbmVPdXRlckFuZ2xlID09PSAzNjApCi0gICAgICAgIHRl
c3RQYXNzZWQoImNvbmVPdXRlckFuZ2xlIGRlZmF1bHQgdmFsdWUgaXMgMzYwLiIpOwotICAgIGVs
c2UKLSAgICAgICAgdGVzdEZhaWxlZCgiY29uZU91dGVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBzaG91
bGQgYmUgMzYwLiIpOwotCi0gICAgaWYgKHBhbm5lci5jb25lT3V0ZXJHYWluID09PSAwKQotICAg
ICAgICB0ZXN0UGFzc2VkKCJjb25lT3V0ZXJHYWluIGRlZmF1bHQgdmFsdWUgaXMgMC4iKTsKLSAg
ICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoImNvbmVPdXRlckdhaW4gZGVmYXVsdCB2YWx1ZSBz
aG91bGQgYmUgMC4iKTsKLQotICAgIC8vIFNldCB0aGUgcGFubmluZyBtb2RlbCBhbmQgc2VlIGlm
IGl0IGNhbiBiZSByZWFkIGJhY2sgY29ycmVjdGx5LgotICAgIHBhbm5lci5wYW5uaW5nTW9kZWwg
PSBwYW5uZXIuRVFVQUxQT1dFUjsKLSAgICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0gMCkK
LSAgICAgICAgdGVzdFBhc3NlZCgicGFubmluZ01vZGVsIHNldCB0byBFUVVBTFBPV0VSIG1vZGVs
IGFuZCByZWFkIGNvcnJlY3RseS4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoInBh
bm5pbmdNb2RlbCBzZXQgdG8gRVFVQUxQT1dFUiAoMCkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIu
cGFubmluZ01vZGVsKTsKLSAgICAKLSAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmVyLkhS
VEY7Ci0gICAgaWYgKHBhbm5lci5wYW5uaW5nTW9kZWwgPT09IDEpCi0gICAgICAgIHRlc3RQYXNz
ZWQoInBhbm5pbmdNb2RlbCBzZXQgdG8gSFJURiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHkuIik7
Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCJwYW5uaW5nTW9kZWwgc2V0IHRvIEhSVEYg
KDEpIGJ1dCByZXR1cm5lZCAiICsgcGFubmVyLnBhbm5pbmdNb2RlbCk7Ci0KLSAgICAvLyBTT1VO
REZJRUxEIHNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QKLSAgICAvLyBj
dXJyZW50bHkgaW1wbGVtZW50ZWQuICAoU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzM2NykKLSAgICB0cnkgewotICAgICAgICBwYW5uZXIucGFubmluZ01vZGVs
ID0gcGFubmVyLlNPVU5ERklFTEQ7Ci0gICAgICAgIHRlc3RGYWlsZWQoIlNldHRpbmcgcGFubmlu
Z01vZGVsIHRvIFNPVU5ERklFTEQgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGlz
IG5vdCBpbXBsZW1lbnRlZC4iKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgdGVzdFBhc3Nl
ZCgiU2V0dGluZyBwYW5uaW5nTW9kZWwgdG8gU09VTkRGSUVMRCBjb3JyZWN0bHkgdGhyb3dzIGV4
Y2VwdGlvbiBiZWNhdXNlIGl0IGlzIG5vdCBpbXBsZW1lbnRlZC4iKTsKLSAgICB9Ci0KLSAgICAv
LyBPdGhlciBpbnZhbGlkIG1vZGVscyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgotICAgIHRy
eSB7Ci0gICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuU09VTkRGSUVMRCArIDE7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgcGFubmluZ01vZGVsIHNob3VsZCB0aHJvdyBl
eGNlcHRpb24uIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIklsbGVn
YWwgcGFubmluZ01vZGVsIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLiIpOwotICAgIH0KLQot
ICAgIHBhbm5lci5kaXN0YW5jZU1vZGVsID0gcGFubmVyLkxJTkVBUl9ESVNUQU5DRTsKLSAgICBp
ZiAocGFubmVyLmRpc3RhbmNlTW9kZWwgPT09IDApCi0gICAgICAgIHRlc3RQYXNzZWQoImRpc3Rh
bmNlTW9kZWwgc2V0IHRvIExJTkVBUl9ESVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuIik7Ci0g
ICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCJkaXN0YW5jZU1vZGVsIHNldCB0byBMSU5FQVJf
RElTVEFOQ0UgKDApIGJ1dCByZXR1cm5lZCAiICsgcGFubmVyLmRpc3RhbmNlTW9kZWwpOwotCi0g
ICAgcGFubmVyLmRpc3RhbmNlTW9kZWwgPSBwYW5uZXIuSU5WRVJTRV9ESVNUQU5DRTsKLSAgICBp
ZiAocGFubmVyLmRpc3RhbmNlTW9kZWwgPT09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoImRpc3Rh
bmNlTW9kZWwgc2V0IHRvIElOVkVSU0VfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiZGlzdGFuY2VNb2RlbCBzZXQgdG8gSU5WRVJT
RV9ESVNUQU5DRSAoMSkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIuZGlzdGFuY2VNb2RlbCk7Ci0K
LSAgICBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9IHBhbm5lci5FWFBPTkVOVElBTF9ESVNUQU5DRTsK
LSAgICBpZiAocGFubmVyLmRpc3RhbmNlTW9kZWwgPT09IDIpCi0gICAgICAgIHRlc3RQYXNzZWQo
ImRpc3RhbmNlTW9kZWwgc2V0IHRvIEVYUE9ORU5USUFMX0RJU1RBTkNFIGFuZCByZWFkIGNvcnJl
Y3RseS4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoImRpc3RhbmNlTW9kZWwgc2V0
IHRvIEVYUE9ORU5USUFMX0RJU1RBTkNFICgyKSBidXQgcmV0dXJuZWQgIiArIHBhbm5lci5kaXN0
YW5jZU1vZGVsKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHBhbm5lci5kaXN0YW5jZU1vZGVsID0g
cGFubmVyLkVYUE9ORU5USUFMX0RJU1RBTkNFICsgMTsKLSAgICAgICAgdGVzdEZhaWxlZCgiSWxs
ZWdhbCBkaXN0YW5jZU1vZGVsIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7Ci0gICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCBjb3JyZWN0
bHkgdGhyb3dzIGV4Y2VwdGlvbi4iKTsKLSAgICB9Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotcnVuVGVzdCgpOwotc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLTwvc2NyaXB0PgotCi08
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2Jp
cXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9uc2UtZXhwZWN0ZWQudHh0CmluZGV4IDkzMDEx
ODIzOTBlZTUyNjg1NDE1NWNlOTQ2MmFmNzllNTkxZTU5NGIuLjhlZTczMjZjNWM2M2EzMDZhMGMw
NjZiMzQzZTFmYTQ3MjU2ZGY5MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2Jp
cXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vYmlxdWFkLWdldEZyZXF1ZW5jeVJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtNCw3
ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyBNYWduaXR1ZGUgcmVzcG9u
c2Ugd2l0aGluIGFjY2VwdGFibGUgdGhyZXNob2xkLgogUEFTUyBQaGFzZSByZXNwb25zZSB3aXRo
aW4gYWNjZXB0YWJsZSB0aHJlc2hvbGQuCi1QQVNTIFBlYWtpbmcgZmlsdGVyIGZyZXF1ZW5jeSBy
ZXNwb25zZSB3YXMgY29ycmVjdC4KK1BBU1MgRnJlcXVlbmN5IHJlc3BvbnNlIHdhcyBjb3JyZWN0
LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9uc2Uu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS5o
dG1sCmluZGV4IDQ3NjJkYTYyODMwNzA3Njk5OWZkNWI5MjIzNDkwNTM3NDE4YTg1NGYuLjllYzIw
ODljNTI4Njc1YTZmMjBjMzNiOTg2NmIyNDE4M2NiYTFjMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL2JpcXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS5odG1sCkBAIC0xMDcs
NyArMTA3LDcgQEAgZnVuY3Rpb24gZnJlcXVlbmN5UmVzcG9uc2VSZWZlcmVuY2UoZmlsdGVyLCBm
cmVxdWVuY2llcykKIHsKICAgICB2YXIgc2FtcGxlUmF0ZSA9IGZpbHRlci5jb250ZXh0LnNhbXBs
ZVJhdGU7CiAgICAgdmFyIG5vcm1hbGl6ZWRGcmVxID0gbm9ybWFsaXplZEZyZXF1ZW5jeShmaWx0
ZXIuZnJlcXVlbmN5LnZhbHVlLCBzYW1wbGVSYXRlKTsKLSAgICB2YXIgZmlsdGVyQ29lZmZpY2ll
bnRzID0gY3JlYXRlRmlsdGVyKGZpbHRlci50eXBlLCBub3JtYWxpemVkRnJlcSwgZmlsdGVyLlEu
dmFsdWUsIGZpbHRlci5nYWluLnZhbHVlKTsKKyAgICB2YXIgZmlsdGVyQ29lZmZpY2llbnRzID0g
Y3JlYXRlRmlsdGVyKGZpbHRlclR5cGVJbmRleFtmaWx0ZXIudHlwZV0sIG5vcm1hbGl6ZWRGcmVx
LCBmaWx0ZXIuUS52YWx1ZSwgZmlsdGVyLmdhaW4udmFsdWUpOwogCiAgICAgdmFyIG1hZ25pdHVk
ZXMgPSBbXTsKICAgICB2YXIgcGhhc2VzID0gW107CkBAIC0yODMsNyArMjgzLDcgQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgZmlsdGVyID0gY29udGV4dC5jcmVhdGVCaXF1YWRGaWx0ZXIoKTsK
IAogICAgIC8vIEFyYml0cmFyaWx5IHRlc3QgYSBwZWFraW5nIGZpbHRlciwgYnV0IGFueSBraW5k
IG9mIGZpbHRlciBjYW4gYmUgdGVzdGVkLgotICAgIGZpbHRlci50eXBlID0gZmlsdGVyLlBFQUtJ
Tkc7CisgICAgZmlsdGVyLnR5cGUgPSAicGVha2luZyI7CiAgICAgZmlsdGVyLmZyZXF1ZW5jeS52
YWx1ZSA9IGZpbHRlckN1dG9mZjsKICAgICBmaWx0ZXIuUS52YWx1ZSA9IGZpbHRlclE7CiAgICAg
ZmlsdGVyLmdhaW4udmFsdWUgPSBmaWx0ZXJHYWluOwpAQCAtMjk2LDkgKzI5Niw5IEBAIGZ1bmN0
aW9uIHJ1blRlc3QoKQogICAgIHZhciBzdWNjZXNzID0gY29tcGFyZVJlc3BvbnNlcyhmaWx0ZXIs
IGZyZXF1ZW5jaWVzLCBtYWdSZXNwb25zZSwgcGhhc2VSZXNwb25zZSk7CiAKICAgICBpZiAoc3Vj
Y2VzcykgewotICAgICAgICB0ZXN0UGFzc2VkKGZpbHRlclR5cGVOYW1lW2ZpbHRlci50eXBlXSAr
ICIgZnJlcXVlbmN5IHJlc3BvbnNlIHdhcyBjb3JyZWN0LiIpOworICAgICAgICB0ZXN0UGFzc2Vk
KCJGcmVxdWVuY3kgcmVzcG9uc2Ugd2FzIGNvcnJlY3QuIik7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgdGVzdEZhaWxlZChmaWx0ZXJUeXBlTmFtZVtmaWx0ZXIudHlwZV0gKyAiIGZyZXF1ZW5jeSBy
ZXNwb25zZSB3YXMgaW5jb3JyZWN0LiIpOworICAgICAgICB0ZXN0RmFpbGVkKCJGcmVxdWVuY3kg
cmVzcG9uc2Ugd2FzIGluY29ycmVjdC4iKTsKICAgICB9CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZGZpbHRlcm5vZGUtYmFzaWMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNp
Yy1leHBlY3RlZC50eHQKaW5kZXggOTI1MWYwMDVlZTQ1MTU2NTc2YjE4YmMwOWI3MmMwYmU4ZGVi
MzFlMi4uYTNlMWNhZTYwODFlOWQ4NDc5NDA0Mjc1ODRjNWViMTRjYTA4NTQyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNpYy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNpYy1leHBl
Y3RlZC50eHQKQEAgLTIsMjEgKzIsMzEgQEAgQmFzaWMgdGVzdHMgZm9yIEJpcXVhZEZpbHRlck5v
ZGUuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUEFTUyBCaXF1YWRGaWx0ZXJOb2Rl
IGhhcyBvbmUgaXV0cHV0LgorUEFTUyBCaXF1YWRGaWx0ZXJOb2RlIGhhcyBvbmUgaW5wdXQuCiBQ
QVNTIEJpcXVhZEZpbHRlck5vZGUgaGFzIG9uZSBvdXRwdXQuCiBQQVNTIEJpcXVhZCBmaWx0ZXIg
ZGVmYXVsdHMgdG8gbG93LXBhc3MgZmlsdGVyLgogUEFTUyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBm
cmVxdWVuY3kgaXMgMzUwLgogUEFTUyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBRIGlzIDEuCiBQQVNT
IFRoZSBkZWZhdWx0IHZhbHVlIG9mIGdhaW4gaXMgMC4KLVBBU1MgQmlxdWFkIGZpbHRlciB0eXBl
IDAgaXMgc2V0dGFibGUuCi1QQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAxIGlzIHNldHRhYmxlLgot
UEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgMiBpcyBzZXR0YWJsZS4KLVBBU1MgQmlxdWFkIGZpbHRl
ciB0eXBlIDMgaXMgc2V0dGFibGUuCi1QQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSA0IGlzIHNldHRh
YmxlLgotUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgNSBpcyBzZXR0YWJsZS4KLVBBU1MgQmlxdWFk
IGZpbHRlciB0eXBlIDYgaXMgc2V0dGFibGUuCi1QQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSA3IGlz
IHNldHRhYmxlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgJ2xvd3Bhc3MnIGlzIHNldHRhYmxl
LgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgJ2hpZ2hwYXNzJyBpcyBzZXR0YWJsZS4KK1BBU1Mg
QmlxdWFkIGZpbHRlciB0eXBlICdiYW5kcGFzcycgaXMgc2V0dGFibGUuCitQQVNTIEJpcXVhZCBm
aWx0ZXIgdHlwZSAnbG93c2hlbGYnIGlzIHNldHRhYmxlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5
cGUgJ2hpZ2hzaGVsZicgaXMgc2V0dGFibGUuCitQQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAncGVh
a2luZycgaXMgc2V0dGFibGUuCitQQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAnbm90Y2gnIGlzIHNl
dHRhYmxlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgJ2FsbHBhc3MnIGlzIHNldHRhYmxlLgor
UEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgMCBpcyBzZXR0YWJsZSB1c2luZyBsZWdhY3kgaW50ZWdl
ciB2YWx1ZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlIDEgaXMgc2V0dGFibGUgdXNpbmcgbGVn
YWN5IGludGVnZXIgdmFsdWUuCitQQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAyIGlzIHNldHRhYmxl
IHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgMyBp
cyBzZXR0YWJsZSB1c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgQmlxdWFkIGZpbHRl
ciB0eXBlIDQgaXMgc2V0dGFibGUgdXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuCitQQVNTIEJp
cXVhZCBmaWx0ZXIgdHlwZSA1IGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVl
LgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgNiBpcyBzZXR0YWJsZSB1c2luZyBsZWdhY3kgaW50
ZWdlciB2YWx1ZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlIDcgaXMgc2V0dGFibGUgdXNpbmcg
bGVnYWN5IGludGVnZXIgdmFsdWUuCiBQQVNTIElsbGVnYWwgZmlsdGVyIHR5cGUgY29ycmVjdGx5
IHRocm93cyBleGNlcHRpb24uCitQQVNTIFNldHRpbmcgLnR5cGUgdG8gaWxsZWdhbCBzdHJpbmcg
dmFsdWUgdGhyZXcgVHlwZUVycm9yLgorUEFTUyBTZXR0aW5nIC50eXBlIHRvIGlsbGVnYWwgdHlw
ZSBvZiBGbG9hdDMyQXJyYXkgdGhyZXcgVHlwZUVycm9yLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9iaXF1YWRmaWx0ZXJub2RlLWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9i
aXF1YWRmaWx0ZXJub2RlLWJhc2ljLmh0bWwKaW5kZXggMzY3ZmMwODM4MWZlYmRiMzVhYmY3NGVj
NWYxNTc3MGRlOTc5ZWI1Zi4uOTc1MWRkNmM1YmI5MzIyNTk1NzRmM2Q4MGVmYmY3MmY4MzVmMDA0
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNp
Yy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZGZpbHRlcm5vZGUtYmFzaWMu
aHRtbApAQCAtMjYsMTYgKzI2LDE2IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIGZp
bHRlciA9IGNvbnRleHQuY3JlYXRlQmlxdWFkRmlsdGVyKCk7CiAgICAKICAgICBpZiAoZmlsdGVy
Lm51bWJlck9mSW5wdXRzID09PSAxKSAKLSAgICAgICAgdGVzdFBhc3NlZCgiQmlxdWFkRmlsdGVy
Tm9kZSBoYXMgb25lIGl1dHB1dC4iKTsKKyAgICAgICAgdGVzdFBhc3NlZCgiQmlxdWFkRmlsdGVy
Tm9kZSBoYXMgb25lIGlucHV0LiIpOwogICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiQmlx
dWFkRmlsdGVyTm9kZSBzaG91bGQgaGF2ZSBvbmUgaXV0cHV0LiIpOworICAgICAgICB0ZXN0RmFp
bGVkKCJCaXF1YWRGaWx0ZXJOb2RlIHNob3VsZCBoYXZlIG9uZSBpbnB1dC4iKTsKICAgICAKICAg
ICBpZiAoZmlsdGVyLm51bWJlck9mT3V0cHV0cyA9PT0gMSkgCiAgICAgICAgIHRlc3RQYXNzZWQo
IkJpcXVhZEZpbHRlck5vZGUgaGFzIG9uZSBvdXRwdXQuIik7CiAgICAgZWxzZQogICAgICAgICB0
ZXN0RmFpbGVkKCJCaXF1YWRGaWx0ZXJOb2RlIHNob3VsZCBoYXZlIG9uZSBvdXRwdXQuIik7CiAg
ICAgCi0gICAgaWYgKGZpbHRlci50eXBlID09PSBmaWx0ZXIuTE9XUEFTUykKKyAgICBpZiAoZmls
dGVyLnR5cGUgPT09ICJsb3dwYXNzIikKICAgICAgICAgdGVzdFBhc3NlZCgiQmlxdWFkIGZpbHRl
ciBkZWZhdWx0cyB0byBsb3ctcGFzcyBmaWx0ZXIuIik7CiAgICAgZWxzZQogICAgICAgICB0ZXN0
RmFpbGVkKCJCaXF1YWQgZmlsdGVyIHNob3VsZCBkZWZhdWx0IHRvIGxvdy1wYXNzIGZpbHRlci4i
KTsKQEAgLTU2LDIzICs1NiwyMyBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgICB0ZXN0
RmFpbGVkKCJUaGUgZGVmYXVsdCB2YWx1ZSBvZiBnYWluIHNob3VsZCBiZSAwLiIpOwogCiAgICAg
Ly8gQ2hlY2sgdGhhdCBhbGwgbGVnYWwgZmlsdGVyIHR5cGVzIGNhbiBiZSBzZXQuCi0gICAgdmFy
IGZpbHRlclR5cGVBcnJheSA9IFtmaWx0ZXIuTE9XUEFTUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbHRlci5ISUdIUEFTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRl
ci5CQU5EUEFTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5MT1dTSEVMRiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5ISUdIU0hFTEYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWx0ZXIuUEVBS0lORywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbHRlci5OT1RDSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5BTExQ
QVNTXTsKKyAgICB2YXIgZmlsdGVyVHlwZUFycmF5ID0gW3t0eXBlOiAibG93cGFzcyIsIGludGVn
ZXJUeXBlOiBmaWx0ZXIuTE9XUEFTU30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlw
ZTogImhpZ2hwYXNzIiwgaW50ZWdlclR5cGU6IGZpbHRlci5ISUdIUEFTU30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7dHlwZTogImJhbmRwYXNzIiwgaW50ZWdlclR5cGU6IGZpbHRlci5C
QU5EUEFTU30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogImxvd3NoZWxmIiwg
aW50ZWdlclR5cGU6IGZpbHRlci5MT1dTSEVMRn0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7dHlwZTogImhpZ2hzaGVsZiIsIGludGVnZXJUeXBlOiBmaWx0ZXIuSElHSFNIRUxGfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHt0eXBlOiAicGVha2luZyIsIGludGVnZXJUeXBlOiBm
aWx0ZXIuUEVBS0lOR30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogIm5vdGNo
IiwgaW50ZWdlclR5cGU6IGZpbHRlci5OT1RDSH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7dHlwZTogImFsbHBhc3MiLCBpbnRlZ2VyVHlwZTogZmlsdGVyLkFMTFBBU1N9XTsKIAogICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyVHlwZUFycmF5Lmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBmaWx0ZXIudHlwZSA9IGZpbHRlclR5cGVBcnJheVtpXTsK
LSAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gZmlsdGVyVHlwZUFycmF5W2ldICYmIGZp
bHRlclR5cGVBcnJheVtpXSA9PT0gaSkgewotICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
IkJpcXVhZCBmaWx0ZXIgdHlwZSAiICsgaSArICIgaXMgc2V0dGFibGUuIjsKKyAgICAgICAgICAg
IGZpbHRlci50eXBlID0gZmlsdGVyVHlwZUFycmF5W2ldLnR5cGU7CisgICAgICAgICAgICBpZiAo
ZmlsdGVyLnR5cGUgPT09IGZpbHRlclR5cGVBcnJheVtpXS50eXBlKSB7CisgICAgICAgICAgICAg
ICAgdmFyIG1lc3NhZ2UgPSAiQmlxdWFkIGZpbHRlciB0eXBlICciICsgZmlsdGVyVHlwZUFycmF5
W2ldLnR5cGUgKyAiJyBpcyBzZXR0YWJsZS4iOwogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
bWVzc2FnZSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBtZXNz
YWdlID0gIkJpcXVhZCBmaWx0ZXIgdHlwZSAiICsgaSArICIgd2FzIG5vdCBjb3JyZWN0bHkgc2V0
LiI7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAiQmlxdWFkIGZpbHRlciB0eXBlICci
ICsgZmlsdGVyVHlwZUFycmF5W2ldLnR5cGUgKyAiJyB3YXMgbm90IGNvcnJlY3RseSBzZXQuIjsK
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGNhdGNoKGUpIHsKQEAgLTgxLDYgKzgxLDI0IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGb3IgbGVnYWN5IHN1cHBvcnQsIHZlcmlmeSB0
aGF0IHdlIGNhbiBzZXQgdGhlIHR5cGUgYXR0cmlidXRlIGFzIGFuIGludGVnZXIgdmFsdWUgYW5k
CisgICAgLy8gdmVyaWZ5IHRoYXQgdGhpcyB0cmFuc2xhdGVzIGNvcnJlY3RseSB0byB0aGUgV2Vi
SURMIGVudW0gdmFsdWUuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJUeXBlQXJyYXku
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbHRlci50eXBlID0g
ZmlsdGVyVHlwZUFycmF5W2ldLmludGVnZXJUeXBlOworICAgICAgICAgICAgaWYgKGZpbHRlci50
eXBlID09PSBmaWx0ZXJUeXBlQXJyYXlbaV0udHlwZSAmJiBmaWx0ZXJUeXBlQXJyYXlbaV0uaW50
ZWdlclR5cGUgPT09IGkpIHsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9ICJCaXF1YWQg
ZmlsdGVyIHR5cGUgIiArIGkgKyAiIGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZh
bHVlLiI7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAiQmlxdWFkIGZpbHRlciB0
eXBlICIgKyBpICsgIiB3YXMgbm90IGNvcnJlY3RseSBzZXQgdXNpbmcgbGVnYWN5IGludGVnZXIg
dmFsdWUuIjsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIkJp
cXVhZCBmaWx0ZXIgdHlwZSAiICsgaSArICIgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24gdXNp
bmcgbGVnYWN5IGludGVnZXIgdmFsdWUuIjsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQobWVzc2Fn
ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBDaGVjayB0aGF0IGlsbGVnYWwgZmlsdGVy
IHR5cGUgdGhyb3dzLgogICAgIHRyeSB7CiAgICAgICAgIGZpbHRlci50eXBlID0gZmlsdGVyLkFM
TFBBU1MgKyAxOwpAQCAtODksNiArMTA3LDEwIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAg
ICAgIHRlc3RQYXNzZWQoIklsbGVnYWwgZmlsdGVyIHR5cGUgY29ycmVjdGx5IHRocm93cyBleGNl
cHRpb24uIik7CiAgICAgfQogCisgICAgLy8gQ2hlY2sgc3BlY2lmaWNhbGx5IHRoYXQgd2UgdGhy
b3cgYSBUeXBlRXJyb3IuCisgICAgc2hvdWxkVGhyb3dUeXBlRXJyb3IoZnVuY3Rpb24oKSB7IGZp
bHRlci50eXBlID0gInh5ejEyMzQ5amZrc2QiOyB9LCAiU2V0dGluZyAudHlwZSB0byBpbGxlZ2Fs
IHN0cmluZyB2YWx1ZSIpOworICAgIHNob3VsZFRocm93VHlwZUVycm9yKGZ1bmN0aW9uKCkgeyBm
aWx0ZXIudHlwZSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7IH0sICJTZXR0aW5nIC50eXBlIHRvIGls
bGVnYWwgdHlwZSBvZiBGbG9hdDMyQXJyYXkiKTsKKwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9wYW5uZXJub2RlLWJhc2ljLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5lcm5vZGUtYmFzaWMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ1MWY1MTcxOTU5NzVmNTEzM2I5MGIyMWRjMGZjOTU3MmNlMTc2YzAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9wYW5uZXJub2RlLWJhc2lj
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitCYXNpYyB0ZXN0cyBmb3IgUGFubmVyTm9k
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIFBhbm5lck5vZGUgaGFzIG9u
ZSBpbnB1dC4KK1BBU1MgUGFubmVyTm9kZSBoYXMgb25lIG91dHB1dC4KK1BBU1MgcmVmRGlzdGFu
Y2UgZGVmYXVsdCB2YWx1ZSBpcyAxLgorUEFTUyBtYXhEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIGlz
IDEwMDAwLgorUEFTUyByb2xsb2ZmRmFjdG9yIGRlZmF1bHQgdmFsdWUgaXMgMS4KK1BBU1MgY29u
ZUlubmVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBpcyAzNjAuCitQQVNTIGNvbmVPdXRlckFuZ2xlIGRl
ZmF1bHQgdmFsdWUgaXMgMzYwLgorUEFTUyBjb25lT3V0ZXJHYWluIGRlZmF1bHQgdmFsdWUgaXMg
MC4KK1BBU1MgUGFubmVyTm9kZSBkZWZhdWx0cyB0byAnSFJURicgcGFubmluZ01vZGVsLgorUEFT
UyBQYW5uZXJOb2RlIGRlZmF1bHRzIHRvICdpbnZlcnNlJyBkaXN0YW5jZU1vZGVsLgorUEFTUyBw
YW5uaW5nTW9kZWw6ICdlcXVhbHBvd2VyJyBpcyBzZXR0YWJsZS4KK1BBU1MgcGFubmluZ01vZGVs
OiAnSFJURicgaXMgc2V0dGFibGUuCitQQVNTIHBhbm5pbmdNb2RlbDogMCBpcyBzZXR0YWJsZSB1
c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgcGFubmluZ01vZGVsOiAxIGlzIHNldHRh
YmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVlLgorUEFTUyBkaXN0YW5jZU1vZGVsOiAnbGlu
ZWFyJyBpcyBzZXR0YWJsZS4KK1BBU1MgZGlzdGFuY2VNb2RlbDogJ2ludmVyc2UnIGlzIHNldHRh
YmxlLgorUEFTUyBkaXN0YW5jZU1vZGVsOiAnZXhwb25lbnRpYWwnIGlzIHNldHRhYmxlLgorUEFT
UyBkaXN0YW5jZU1vZGVsOiAwIGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVl
LgorUEFTUyBkaXN0YW5jZU1vZGVsOiAxIGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2Vy
IHZhbHVlLgorUEFTUyBkaXN0YW5jZU1vZGVsOiAyIGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBp
bnRlZ2VyIHZhbHVlLgorUEFTUyBTZXR0aW5nIC50eXBlIHRvIGlsbGVnYWwgc3RyaW5nIHZhbHVl
IHRocmV3IFR5cGVFcnJvci4KK1BBU1MgU2V0dGluZyAudHlwZSB0byBpbGxlZ2FsIHR5cGUgb2Yg
RmxvYXQzMkFycmF5IHRocmV3IFR5cGVFcnJvci4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9wYW5uZXJub2RlLWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9wYW5uZXJub2Rl
LWJhc2ljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk4ODk5ZDFiNjFlZGI3ZDAyMWM1ODQ4YzY0MWI1Y2Qw
NGIzZjVlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5lcm5v
ZGUtYmFzaWMuaHRtbApAQCAtMCwwICsxLDE3MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMg
dGVzdHMgZm9yIFBhbm5lck5vZGUuIik7CisKK3ZhciBjb250ZXh0ID0gMDsKKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250
ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworICAgIHZhciBwYW5uZXIgPSBjb250ZXh0
LmNyZWF0ZVBhbm5lcigpOworICAgCisgICAgaWYgKHBhbm5lci5udW1iZXJPZklucHV0cyA9PT0g
MSkgCisgICAgICAgIHRlc3RQYXNzZWQoIlBhbm5lck5vZGUgaGFzIG9uZSBpbnB1dC4iKTsKKyAg
ICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIlBhbm5lck5vZGUgc2hvdWxkIGhhdmUgb25lIGlu
cHV0LiIpOworICAgIAorICAgIGlmIChwYW5uZXIubnVtYmVyT2ZPdXRwdXRzID09PSAxKSAKKyAg
ICAgICAgdGVzdFBhc3NlZCgiUGFubmVyTm9kZSBoYXMgb25lIG91dHB1dC4iKTsKKyAgICBlbHNl
CisgICAgICAgIHRlc3RGYWlsZWQoIlBhbm5lck5vZGUgc2hvdWxkIGhhdmUgb25lIG91dHB1dC4i
KTsKKworICAgIGlmIChwYW5uZXIucmVmRGlzdGFuY2UgPT09IDEpCisgICAgICAgIHRlc3RQYXNz
ZWQoInJlZkRpc3RhbmNlIGRlZmF1bHQgdmFsdWUgaXMgMS4iKTsKKyAgICBlbHNlCisgICAgICAg
IHRlc3RGYWlsZWQoInJlZkRpc3RhbmNlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIDEuIik7Cisg
ICAgCisgICAgaWYgKHBhbm5lci5tYXhEaXN0YW5jZSA9PT0gMTAwMDApCisgICAgICAgIHRlc3RQ
YXNzZWQoIm1heERpc3RhbmNlIGRlZmF1bHQgdmFsdWUgaXMgMTAwMDAuIik7CisgICAgZWxzZQor
ICAgICAgICB0ZXN0RmFpbGVkKCJtYXhEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSAx
MDAwMC4iKTsKKyAgICAKKyAgICBpZiAocGFubmVyLnJvbGxvZmZGYWN0b3IgPT09IDEpCisgICAg
ICAgIHRlc3RQYXNzZWQoInJvbGxvZmZGYWN0b3IgZGVmYXVsdCB2YWx1ZSBpcyAxLiIpOworICAg
IGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgicm9sbG9mZkZhY3RvciBkZWZhdWx0IHZhbHVlIHNo
b3VsZCBiZSAxLiIpOworICAgIAorICAgIGlmIChwYW5uZXIuY29uZUlubmVyQW5nbGUgPT09IDM2
MCkKKyAgICAgICAgdGVzdFBhc3NlZCgiY29uZUlubmVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBpcyAz
NjAuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJjb25lSW5uZXJBbmdsZSBkZWZh
dWx0IHZhbHVlIHNob3VsZCBiZSAzNjAuIik7CisgICAgCisgICAgaWYgKHBhbm5lci5jb25lT3V0
ZXJBbmdsZSA9PT0gMzYwKQorICAgICAgICB0ZXN0UGFzc2VkKCJjb25lT3V0ZXJBbmdsZSBkZWZh
dWx0IHZhbHVlIGlzIDM2MC4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoImNvbmVP
dXRlckFuZ2xlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIDM2MC4iKTsKKyAgICAKKyAgICBpZiAo
cGFubmVyLmNvbmVPdXRlckdhaW4gPT09IDApCisgICAgICAgIHRlc3RQYXNzZWQoImNvbmVPdXRl
ckdhaW4gZGVmYXVsdCB2YWx1ZSBpcyAwLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxl
ZCgiY29uZU91dGVyR2FpbiBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSAwLiIpOworCisgICAgaWYg
KHBhbm5lci5wYW5uaW5nTW9kZWwgPT09ICJIUlRGIikKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFu
bmVyTm9kZSBkZWZhdWx0cyB0byAnSFJURicgcGFubmluZ01vZGVsLiIpOworICAgIGVsc2UKKyAg
ICAgICAgdGVzdEZhaWxlZCgiUGFubmVyTm9kZSBzaG91bGQgZGVmYXVsdCB0byAnSFJURicgcGFu
bmluZ01vZGVsLiIpOworICAgIAorICAgIGlmIChwYW5uZXIuZGlzdGFuY2VNb2RlbCA9PT0gImlu
dmVyc2UiKQorICAgICAgICB0ZXN0UGFzc2VkKCJQYW5uZXJOb2RlIGRlZmF1bHRzIHRvICdpbnZl
cnNlJyBkaXN0YW5jZU1vZGVsLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiUGFu
bmVyTm9kZSBzaG91bGQgZGVmYXVsdCB0byAnaW52ZXJzZScgZGlzdGFuY2VNb2RlbC4iKTsKKwor
ICAgIC8vIENoZWNrIHRoYXQgdGhlIC5wYW5uaW5nTW9kZWwgYXR0cmlidXRlIGNhbiBiZSBzZXQg
dG8gYWxsIGxlZ2FsIHZhbHVlcy4KKyAgICB2YXIgcGFubmluZ01vZGVscyA9IFt7dmFsdWU6ICJl
cXVhbHBvd2VyIiwgaW50ZWdlclZhbHVlOiBwYW5uZXIuRVFVQUxQT1dFUn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAge3ZhbHVlOiAiSFJURiIsIGludGVnZXJWYWx1ZTogcGFubmVyLkhSVEZ9
LAorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBlbmFibGUgInNvdW5kZmllbGQi
IG9uY2UgZmVhdHVyZSBpcyBpbXBsZW1lbnRlZDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3MzY3CisgICAgICAgICAgICAgICAgICAgICAgICAgLy8ge3ZhbHVlOiAi
c291bmRmaWVsZCIsIGludGVnZXJWYWx1ZTogcGFubmVyLlNPVU5ERklFTER9CisgICAgICAgICAg
ICAgICAgICAgICAgICBdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYW5uaW5nTW9kZWxz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBwYW5uZXIucGFubmlu
Z01vZGVsID0gcGFubmluZ01vZGVsc1tpXS52YWx1ZTsKKyAgICAgICAgICAgIGlmIChwYW5uZXIu
cGFubmluZ01vZGVsID09PSBwYW5uaW5nTW9kZWxzW2ldLnZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgdmFyIG1lc3NhZ2UgPSAicGFubmluZ01vZGVsOiAnIiArIHBhbm5pbmdNb2RlbHNbaV0udmFs
dWUgKyAiJyBpcyBzZXR0YWJsZS4iOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobWVzc2Fn
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
InBhbm5pbmdNb2RlbDogJyIgKyBwYW5uaW5nTW9kZWxzW2ldLnZhbHVlICsgIicgd2FzIG5vdCBj
b3JyZWN0bHkgc2V0LiI7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB2YXIgbWVzc2Fn
ZSA9ICJTZXR0aW5nIHBhbm5pbmdNb2RlbCB0byAnIiArIHBhbm5pbmdNb2RlbHNbaV0udmFsdWUg
KyAiJyBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbi4iOworICAgICAgICAgICAgdGVzdEZhaWxl
ZChtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZvciBsZWdhY3kgc3VwcG9y
dCwgdmVyaWZ5IHRoYXQgd2UgY2FuIHNldCB0aGUgLnBhbm5pbmdNb2RlbCBhdHRyaWJ1dGUgYXMg
YW4gaW50ZWdlciB2YWx1ZSBhbmQKKyAgICAvLyB2ZXJpZnkgdGhhdCB0aGlzIHRyYW5zbGF0ZXMg
Y29ycmVjdGx5IHRvIHRoZSBXZWJJREwgZW51bSB2YWx1ZS4KKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHBhbm5pbmdNb2RlbHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uaW5nTW9kZWxzW2ldLmludGVnZXJWYWx1ZTsK
KyAgICAgICAgICAgIGlmIChwYW5uZXIucGFubmluZ01vZGVsID09PSBwYW5uaW5nTW9kZWxzW2ld
LnZhbHVlICYmIHBhbm5pbmdNb2RlbHNbaV0uaW50ZWdlclZhbHVlID09PSBpKSB7CisgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2UgPSAicGFubmluZ01vZGVsOiAiICsgcGFubmluZ01vZGVsc1tp
XS5pbnRlZ2VyVmFsdWUgKyAiIGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVl
LiI7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAicGFubmluZ01vZGVsOiAiICsg
cGFubmluZ01vZGVsc1tpXS5pbnRlZ2VyVmFsdWUgKyAiIHdhcyBub3QgY29ycmVjdGx5IHNldCB1
c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4iOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
bWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgdmFyIG1lc3NhZ2UgPSAiU2V0dGluZyBwYW5uaW5nTW9kZWwgdG8gIiArIHBhbm5pbmdNb2Rl
bHNbaV0uaW50ZWdlclZhbHVlICsgIiBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbiB1c2luZyBs
ZWdhY3kgaW50ZWdlciB2YWx1ZS4iOworICAgICAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENoZWNrIHRoYXQgdGhlIC5kaXN0YW5jZU1vZGVs
IGF0dHJpYnV0ZSBjYW4gYmUgc2V0IHRvIGFsbCBsZWdhbCB2YWx1ZXMuCisgICAgdmFyIGRpc3Rh
bmNlTW9kZWxzID0gW3t2YWx1ZTogImxpbmVhciIsIGludGVnZXJWYWx1ZTogcGFubmVyLkxJTkVB
Ul9ESVNUQU5DRX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogImludmVyc2Ui
LCBpbnRlZ2VyVmFsdWU6IHBhbm5lci5JTlZFUlNFX0RJU1RBTkNFfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAge3ZhbHVlOiAiZXhwb25lbnRpYWwiLCBpbnRlZ2VyVmFsdWU6IHBhbm5lci5F
WFBPTkVOVElBTF9ESVNUQU5DRX0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRpc3RhbmNlTW9kZWxzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9IGRpc3RhbmNlTW9kZWxz
W2ldLnZhbHVlOworICAgICAgICAgICAgaWYgKHBhbm5lci5kaXN0YW5jZU1vZGVsID09PSBkaXN0
YW5jZU1vZGVsc1tpXS52YWx1ZSkgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gImRp
c3RhbmNlTW9kZWw6ICciICsgZGlzdGFuY2VNb2RlbHNbaV0udmFsdWUgKyAiJyBpcyBzZXR0YWJs
ZS4iOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gImRpc3RhbmNlTW9kZWw6ICci
ICsgZGlzdGFuY2VNb2RlbHNbaV0udmFsdWUgKyAiJyB3YXMgbm90IGNvcnJlY3RseSBzZXQuIjsK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIlNldHRpbmcgZGlz
dGFuY2VNb2RlbCB0byAnIiArIGRpc3RhbmNlTW9kZWxzW2ldLnZhbHVlICsgIicgc2hvdWxkIG5v
dCB0aHJvdyBleGNlcHRpb24uIjsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGb3IgbGVnYWN5IHN1cHBvcnQsIHZlcmlmeSB0aGF0
IHdlIGNhbiBzZXQgdGhlIC5kaXN0YW5jZU1vZGVsIGF0dHJpYnV0ZSBhcyBhbiBpbnRlZ2VyIHZh
bHVlIGFuZAorICAgIC8vIHZlcmlmeSB0aGF0IHRoaXMgdHJhbnNsYXRlcyBjb3JyZWN0bHkgdG8g
dGhlIFdlYklETCBlbnVtIHZhbHVlLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzdGFuY2VN
b2RlbHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHBhbm5lci5k
aXN0YW5jZU1vZGVsID0gZGlzdGFuY2VNb2RlbHNbaV0uaW50ZWdlclZhbHVlOworICAgICAgICAg
ICAgaWYgKHBhbm5lci5kaXN0YW5jZU1vZGVsID09PSBkaXN0YW5jZU1vZGVsc1tpXS52YWx1ZSAm
JiBkaXN0YW5jZU1vZGVsc1tpXS5pbnRlZ2VyVmFsdWUgPT09IGkpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZSA9ICJkaXN0YW5jZU1vZGVsOiAiICsgZGlzdGFuY2VNb2RlbHNbaV0uaW50
ZWdlclZhbHVlICsgIiBpcyBzZXR0YWJsZSB1c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4iOwor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gImRpc3RhbmNlTW9kZWw6ICIgKyBkaXN0
YW5jZU1vZGVsc1tpXS5pbnRlZ2VyVmFsdWUgKyAiIHdhcyBub3QgY29ycmVjdGx5IHNldCB1c2lu
ZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4iOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQobWVz
c2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
dmFyIG1lc3NhZ2UgPSAiU2V0dGluZyBkaXN0YW5jZU1vZGVsIHRvICIgKyBkaXN0YW5jZU1vZGVs
c1tpXS5pbnRlZ2VyVmFsdWUgKyAiIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uIHVzaW5nIGxl
Z2FjeSBpbnRlZ2VyIHZhbHVlLiI7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhhdCB3ZSB0aHJvdyBhIFR5cGVFcnJv
ciBmb3IgaWxsZWdhbCAuZGlzdGFuY2VNb2RlbCB2YWx1ZXMuCisgICAgc2hvdWxkVGhyb3dUeXBl
RXJyb3IoZnVuY3Rpb24oKSB7IHBhbm5lci5kaXN0YW5jZU1vZGVsID0gInh5ejEyMzQ5amZrc2Qi
OyB9LCAiU2V0dGluZyAudHlwZSB0byBpbGxlZ2FsIHN0cmluZyB2YWx1ZSIpOworICAgIHNob3Vs
ZFRocm93VHlwZUVycm9yKGZ1bmN0aW9uKCkgeyBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9IG5ldyBG
bG9hdDMyQXJyYXkoMSk7IH0sICJTZXR0aW5nIC50eXBlIHRvIGlsbGVnYWwgdHlwZSBvZiBGbG9h
dDMyQXJyYXkiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL3Jlc291cmNlcy9iaXF1YWQtdGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1
ZGlvL3Jlc291cmNlcy9iaXF1YWQtdGVzdGluZy5qcwppbmRleCA5N2JjOWU5MjAxNmI4MDg1ZmE2
YzAxYzRlMzg1N2UxNjEzNTVjYjgxLi4wMjdhZjExYTk3NzMzNmYzOGE0Njc3MDExMzY5MjE3Y2Rl
OGE0OWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvYmlxdWFk
LXRlc3RpbmcuanMKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2JpcXVhZC10
ZXN0aW5nLmpzCkBAIC0zNjcsNiArMzY3LDE1IEBAIHZhciBmaWx0ZXJUeXBlTmFtZSA9IFsiTG93
cGFzcyBmaWx0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICJOb3RjaCBmaWx0ZXIiLAogICAg
ICAgICAgICAgICAgICAgICAgICJBbGxwYXNzIGZpbHRlciJdOwogCit2YXIgZmlsdGVyVHlwZUlu
ZGV4ID0geyJsb3dwYXNzIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgImhpZ2hwYXNzIjog
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgImJhbmRwYXNzIjogMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgImxvd3NoZWxmIjogMywKKyAgICAgICAgICAgICAgICAgICAgICAgImhpZ2hzaGVs
ZiI6IDQsCisgICAgICAgICAgICAgICAgICAgICAgICJwZWFraW5nIjogNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIm5vdGNoIjogNiwKKyAgICAgICAgICAgICAgICAgICAgICAgImFsbHBhc3Mi
OiA3fTsKKwogZnVuY3Rpb24gY3JlYXRlRmlsdGVyKGZpbHRlclR5cGUsIGZyZXEsIHEsIGdhaW4p
IHsKICAgICByZXR1cm4gZmlsdGVyQ3JlYXRvckZ1bmN0aW9uW2ZpbHRlclR5cGVdKGZyZXEsIHEs
IGdhaW4pOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2Rp
c3RhbmNlLW1vZGVsLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMv
ZGlzdGFuY2UtbW9kZWwtdGVzdGluZy5qcwppbmRleCAxMjllYjU1ZWJjN2I4MmJhZDU3YzIxOGU5
NDBjNmY2MGI5Zjc1YWM4Li45N2YyZWJhNWZlNTQxMGFjODk5MjY1NWU4OTBjYzBkYTlkNzU3N2Mx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvZGlzdGFuY2UtbW9k
ZWwtdGVzdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvZGlzdGFu
Y2UtbW9kZWwtdGVzdGluZy5qcwpAQCAtNTUsNiArNTUsNyBAQCBmdW5jdGlvbiBleHBvbmVudGlh
bERpc3RhbmNlKHBhbm5lciwgeCwgeSwgeikgewogLy8gVGhpcyBhcnJheSBtdXN0IGJlIGFycmFu
Z2VkIGluIHRoZSBudW1lcmljIG9yZGVyIG9mIHRoZSBkaXN0YW5jZQogLy8gbW9kZWwgdmFsdWVz
LgogdmFyIGRpc3RhbmNlTW9kZWxGdW5jdGlvbiA9IFtsaW5lYXJEaXN0YW5jZSwgaW52ZXJzZURp
c3RhbmNlLCBleHBvbmVudGlhbERpc3RhbmNlXTsKK3ZhciBkaXN0YW5jZU1vZGVsSW5kZXggPSB7
ImxpbmVhciI6IDAsICJpbnZlcnNlIjogMSwgImV4cG9uZW50aWFsIjogMn07CiAKIGZ1bmN0aW9u
IGNyZWF0ZUdyYXBoKGNvbnRleHQsIGRpc3RhbmNlTW9kZWwsIG5vZGVDb3VudCkgewogICAgIGJ1
ZmZlclNvdXJjZSA9IG5ldyBBcnJheShub2RlQ291bnQpOwpAQCAtODMsNyArODQsNyBAQCBmdW5j
dGlvbiBjcmVhdGVHcmFwaChjb250ZXh0LCBkaXN0YW5jZU1vZGVsLCBub2RlQ291bnQpIHsKICAg
ICAgICAgYnVmZmVyU291cmNlW2tdLmJ1ZmZlciA9IGltcHVsc2U7CiAKICAgICAgICAgcGFubmVy
W2tdID0gY29udGV4dC5jcmVhdGVQYW5uZXIoKTsKLSAgICAgICAgcGFubmVyW2tdLnBhbm5pbmdN
b2RlbCA9IHBhbm5lci5FUVVBTFBPV0VSOworICAgICAgICBwYW5uZXJba10ucGFubmluZ01vZGVs
ID0gImVxdWFscG93ZXIiOwogICAgICAgICBwYW5uZXJba10uZGlzdGFuY2VNb2RlbCA9IGRpc3Rh
bmNlTW9kZWw7CiAKICAgICAgICAgdmFyIGRpc3RhbmNlU3RlcCA9IChwYW5uZXJba10ubWF4RGlz
dGFuY2UgLSBwYW5uZXJba10ucmVmRGlzdGFuY2UpIC8gbm9kZUNvdW50OwpAQCAtMTUwLDcgKzE1
MSw5IEBAIGZ1bmN0aW9uIGNoZWNrRGlzdGFuY2VSZXN1bHQobW9kZWwsIGV4cGVjdGVkTW9kZWwp
IHsKICAgICAgICAgLy8gZGlzdGFuY2UuCiAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcmVu
ZGVyZWREYXRhLmxlbmd0aDsgKytrKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZWREYXRhW2td
ICE9IDApIHsKLSAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2VGdW5jdGlvbiA9IGRpc3RhbmNl
TW9kZWxGdW5jdGlvbltwYW5uZXJbaW1wdWxzZUNvdW50XS5kaXN0YW5jZU1vZGVsXTsKKyAgICAg
ICAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gc3RyaW5nIHRvIGluZGV4LgorICAgICAgICAgICAg
ICAgIHZhciBtb2RlbEluZGV4ID0gZGlzdGFuY2VNb2RlbEluZGV4W3Bhbm5lcltpbXB1bHNlQ291
bnRdLmRpc3RhbmNlTW9kZWxdOworICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZUZ1bmN0aW9u
ID0gZGlzdGFuY2VNb2RlbEZ1bmN0aW9uW21vZGVsSW5kZXhdOwogICAgICAgICAgICAgICAgIHZh
ciBleHBlY3RlZCA9IGRpc3RhbmNlRnVuY3Rpb24ocGFubmVyW2ltcHVsc2VDb3VudF0sIDAsIDAs
IHBvc2l0aW9uW2ltcHVsc2VDb3VudF0pOwogCiAgICAgICAgICAgICAgICAgLy8gQWRqdXN0IGZv
ciB0aGUgY2VudGVyLXBhbm5pbmcgb2YgdGhlIEVRVUFMUE9XRVIgcGFubmluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL3Bhbm5lci1tb2RlbC10ZXN0aW5nLmpz
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL3Bhbm5lci1tb2RlbC10ZXN0aW5nLmpz
CmluZGV4IDE4ODg4MDBmZTEwYzg2MGY3YzUxMjFlZjliNzFmOGZlZjUyMjNlM2EuLjU5ODU0OWVj
Y2Q4ZDkwMjVkMzg1MDczNzVmODkyZTI4YzNkN2EwYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL3Jlc291cmNlcy9wYW5uZXItbW9kZWwtdGVzdGluZy5qcworKysgYi9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvcGFubmVyLW1vZGVsLXRlc3RpbmcuanMKQEAgLTQ2LDgg
KzQ2LDggQEAgZnVuY3Rpb24gY3JlYXRlR3JhcGgoY29udGV4dCwgbm9kZUNvdW50KSB7CiAgICAg
ICAgIGJ1ZmZlclNvdXJjZVtrXS5idWZmZXIgPSBpbXB1bHNlOwogCiAgICAgICAgIHBhbm5lcltr
XSA9IGNvbnRleHQuY3JlYXRlUGFubmVyKCk7Ci0gICAgICAgIHBhbm5lcltrXS5wYW5uaW5nTW9k
ZWwgPSBwYW5uZXIuRVFVQUxQT1dFUjsKLSAgICAgICAgcGFubmVyW2tdLmRpc3RhbmNlTW9kZWwg
PSAwOyAvLyBMaW5lYXIgZGlzdGFuY2UgbW9kZWwuCisgICAgICAgIHBhbm5lcltrXS5wYW5uaW5n
TW9kZWwgPSAiZXF1YWxwb3dlciI7CisgICAgICAgIHBhbm5lcltrXS5kaXN0YW5jZU1vZGVsID0g
ImxpbmVhciI7CiAKICAgICAgICAgdmFyIGFuZ2xlID0gYW5nbGVTdGVwICogazsKICAgICAgICAg
cG9zaXRpb25ba10gPSB7YW5nbGUgOiBhbmdsZSwgeCA6IE1hdGguY29zKGFuZ2xlKSwgeiA6IE1h
dGguc2luKGFuZ2xlKX07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181126</attachid>
            <date>2013-01-02 18:21:56 -0800</date>
            <delta_ts>2013-01-04 07:07:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105977-20130102181904.patch</filename>
            <type>text/plain</type>
            <size>64100</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE5MjUyM2RkZWMzNDRi
YjAzMjQ1NGQzN2UxNTk4N2IwN2M2YTg0Yi4uOGFlMjhiYTBjMjllOTZmMjE2YzNjZTRhZDA2ZThk
MGNmZWE0NDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAxLTAyICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYklE
TC1zdHlsZSBzdHJpbmcgY29uc3RhbnRzIGluIFdlYkF1ZGlvIChwYXJ0IDIpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU5NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgRGVwcmVjYXRpb24gTm90
ZXMgZm9yIG1vcmUgZGV0YWlsOgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlv
L3Jhdy1maWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0bWwjRGVwcmVjYXRpb25Ob3Rl
cworICAgICAgICAKKyAgICAgICAgUGFubmVyTm9kZSwgQmlxdWFkRmlsdGVyTm9kZSwgT3NjaWxs
YXRvck5vZGUgY29uc3RhbnRzIG11c3Qgc3VwcG9ydCBXZWJJREwtc3R5bGUgc3RyaW5nIGNvbnN0
YW50cy4KKyAgICAgICAgTGVnYWN5IHN1cHBvcnQgaW4gdGhlIHNldHRlcnMgZm9yIHRoZSBvbGQg
aW50ZWdlciB2YWx1ZXMgc2hvdWxkIGJlIHN1cHBvcnRlZC4KKyAgICAgICAgVGhpcyBwYXRjaCBo
YW5kbGVzIHRoZSBjaGFuZ2VzIGZvciBCaXF1YWRGaWx0ZXJOb2RlIGFuZCBQYW5uZXJOb2RlLgor
CisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL3Bhbm5lcm5vZGUtYmFzaWMuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpcXVhZEZpbHRlck5vZGU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaDoKKyAgICAgICAgKEJpcXVhZEZpbHRlck5vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGU6OnBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oOgorICAgICAgICAoUGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpT
Qy5jbWFrZToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0
VHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJOb2Rl
OjpzZXRQYW5uaW5nTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYW5uZXJOb2RlOjpzZXRE
aXN0YW5jZU1vZGVsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaXF1YWRGaWx0
ZXJOb2RlQ3VzdG9tLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlQWNjZXNzb3JTZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBhbm5lck5vZGVDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYW5uZXJOb2RlOjpwYW5uaW5n
TW9kZWxBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFBhbm5lck5vZGU6OmRp
c3RhbmNlTW9kZWxBY2Nlc3NvclNldHRlcik6CisKIDIwMTMtMDEtMDIgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhdIFY4RE9NV3JhcHBlci5jcHAgaGFzIG1h
bnkgbW9yZSBpbmNsdWRlcyB0aGFuIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggYjZjODc0YjIyYTI2ZDJjNzdmZmViN2I5MjRkNDUxY2UyZjMxYzg4My4uMmFmZjA3
ODQ3Yzc4MTQzODJlNzNjYTU1YjZlMzhlNDE2ZWE3ZGNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yMjU1LDYgKzIyNTUsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTRm9udEZhY2VSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMzgzLDYg
KzIzODQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
T3NjaWxsYXRvck5vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1Bhbm5lck5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAppbmRleCBkNzUyZTJjMzkyMGM0ZTA4
ODY1OTI0ZjZlNDViOTU1MWViZmU3Y2ZlLi4yZjUxYTQ4MjkzYjYxZjI3MzEwNWRkYWU2NDljOTM2
Y2UxODcwZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTQwLDE3ICs0MCw2MiBAQCBCaXF1YWRGaWx0ZXJOb2Rl
OjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CiB9CiAKLXZvaWQgQmlx
dWFkRmlsdGVyTm9kZTo6c2V0VHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1N0cmluZyBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKIHsKLSAgICBpZiAo
dHlwZSA+IEJpcXVhZFByb2Nlc3Nvcjo6QWxscGFzcykgewotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICByZXR1cm47CisgICAgc3dpdGNoIChjb25zdF9jYXN0PEJpcXVh
ZEZpbHRlck5vZGUqPih0aGlzKS0+YmlxdWFkUHJvY2Vzc29yKCktPnR5cGUoKSkgeworICAgIGNh
c2UgQmlxdWFkUHJvY2Vzc29yOjpMb3dQYXNzOgorICAgICAgICByZXR1cm4gImxvd3Bhc3MiOwor
ICAgIGNhc2UgQmlxdWFkUHJvY2Vzc29yOjpIaWdoUGFzczoKKyAgICAgICAgcmV0dXJuICJoaWdo
cGFzcyI7CisgICAgY2FzZSBCaXF1YWRQcm9jZXNzb3I6OkJhbmRQYXNzOgorICAgICAgICByZXR1
cm4gImJhbmRwYXNzIjsKKyAgICBjYXNlIEJpcXVhZFByb2Nlc3Nvcjo6TG93U2hlbGY6CisgICAg
ICAgIHJldHVybiAibG93c2hlbGYiOworICAgIGNhc2UgQmlxdWFkUHJvY2Vzc29yOjpIaWdoU2hl
bGY6CisgICAgICAgIHJldHVybiAiaGlnaHNoZWxmIjsKKyAgICBjYXNlIEJpcXVhZFByb2Nlc3Nv
cjo6UGVha2luZzoKKyAgICAgICAgcmV0dXJuICJwZWFraW5nIjsKKyAgICBjYXNlIEJpcXVhZFBy
b2Nlc3Nvcjo6Tm90Y2g6CisgICAgICAgIHJldHVybiAibm90Y2giOworICAgIGNhc2UgQmlxdWFk
UHJvY2Vzc29yOjpBbGxwYXNzOgorICAgICAgICByZXR1cm4gImFsbHBhc3MiOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gImxvd3Bh
c3MiOwogICAgIH0KK30KKwordm9pZCBCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSAibG93cGFzcyIpCisgICAgICAgIHNldFR5
cGUoQmlxdWFkUHJvY2Vzc29yOjpMb3dQYXNzKTsKKyAgICBlbHNlIGlmICh0eXBlID09ICJoaWdo
cGFzcyIpCisgICAgICAgIHNldFR5cGUoQmlxdWFkUHJvY2Vzc29yOjpIaWdoUGFzcyk7CisgICAg
ZWxzZSBpZiAodHlwZSA9PSAiYmFuZHBhc3MiKQorICAgICAgICBzZXRUeXBlKEJpcXVhZFByb2Nl
c3Nvcjo6QmFuZFBhc3MpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gImxvd3NoZWxmIikKKyAgICAg
ICAgc2V0VHlwZShCaXF1YWRQcm9jZXNzb3I6Okxvd1NoZWxmKTsKKyAgICBlbHNlIGlmICh0eXBl
ID09ICJoaWdoc2hlbGYiKQorICAgICAgICBzZXRUeXBlKEJpcXVhZFByb2Nlc3Nvcjo6SGlnaFNo
ZWxmKTsKKyAgICBlbHNlIGlmICh0eXBlID09ICJwZWFraW5nIikKKyAgICAgICAgc2V0VHlwZShC
aXF1YWRQcm9jZXNzb3I6OlBlYWtpbmcpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gIm5vdGNoIikK
KyAgICAgICAgc2V0VHlwZShCaXF1YWRQcm9jZXNzb3I6Ok5vdGNoKTsKKyAgICBlbHNlIGlmICh0
eXBlID09ICJhbGxwYXNzIikKKyAgICAgICAgc2V0VHlwZShCaXF1YWRQcm9jZXNzb3I6OkFsbHBh
c3MpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
QmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZSh1bnNpZ25lZCB0eXBlKQoreworICAgIGlmICh0eXBl
ID4gQmlxdWFkUHJvY2Vzc29yOjpBbGxwYXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CiAgICAgYmlxdWFkUHJvY2Vzc29yKCktPnNldFR5cGUoc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vz
c29yOjpGaWx0ZXJUeXBlPih0eXBlKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLQogdm9pZCBC
aXF1YWRGaWx0ZXJOb2RlOjpnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBGbG9hdDMyQXJyYXkq
IGZyZXF1ZW5jeUh6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGbG9hdDMyQXJyYXkqIG1hZ1Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkqIHBoYXNlUmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4IGY2
Njk5YWY4MDQ2YTdmOTY5M2NjZTJmNzhlNTFlNWJjNDhkYjkwZGEuLmRkZTJhZWM3NzI2ZTQ5ZTc3
YzFhYjYzNjAwZWI0MDUyMzU1ZmMzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCkBAIC01MCw5ICs1MCwxMCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpcXVhZEZpbHRlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAogICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBzaG9y
dCB0eXBlKCkgeyByZXR1cm4gYmlxdWFkUHJvY2Vzc29yKCktPnR5cGUoKTsgfQotICAgIHZvaWQg
c2V0VHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBTdHJp
bmcgdHlwZSgpIGNvbnN0OworICAgIGJvb2wgc2V0VHlwZSh1bnNpZ25lZCk7IC8vIFJldHVybnMg
dHJ1ZSBvbiBzdWNjZXNzLgorICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IEF1ZGlvUGFyYW0qIGZyZXF1ZW5jeSgpIHsgcmV0dXJuIGJpcXVhZFByb2Nlc3NvcigpLT5wYXJh
bWV0ZXIxKCk7IH0KICAgICBBdWRpb1BhcmFtKiBxKCkgeyByZXR1cm4gYmlxdWFkUHJvY2Vzc29y
KCktPnBhcmFtZXRlcjIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwKaW5kZXggYWYyMGQwYmU4ZGY5YTY0ZGNkNDU4NDZm
ZTdiZjJhMmM2NjEyMDZmNi4uZjM3NGFmNTI1MzUzZDMyNDE4NDdjZmI4NWY2OWM5YWQ1MzliOGMy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuaWRsCkBAIC0zNiw4ICszNiw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Tk9UQ0ggPSA2OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFMTFBBU1MgPSA3OwogCi0gICAg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHR5cGUKLSAgICAgICAgc2V0dGVyIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsK
ICAgICAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBmcmVxdWVuY3k7IC8vIGlu
IEhlcnR6CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gZGV0dW5lOyAvLyBpbiBD
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
aW5kZXggOTZkNGQ4MTgxN2JhOWVkNTNmYzE0ZTNlMmMyYjEwY2IyZmZkNzExOC4uMzEyNDk5Yjkx
MGExZjQ3YTgyODcwOTE4N2RlOGJjODQ2MTExYjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkhSVEZQYW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE1
MSw3ICsxNTIsMzQgQEAgQXVkaW9MaXN0ZW5lciogUGFubmVyTm9kZTo6bGlzdGVuZXIoKQogICAg
IHJldHVybiBjb250ZXh0KCktPmxpc3RlbmVyKCk7CiB9CiAKLXZvaWQgUGFubmVyTm9kZTo6c2V0
UGFubmluZ01vZGVsKHVuc2lnbmVkIHNob3J0IG1vZGVsLCBFeGNlcHRpb25Db2RlJiBlYykKK1N0
cmluZyBQYW5uZXJOb2RlOjpwYW5uaW5nTW9kZWwoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9w
YW5uaW5nTW9kZWwpIHsKKyAgICBjYXNlIEVRVUFMUE9XRVI6CisgICAgICAgIHJldHVybiAiZXF1
YWxwb3dlciI7CisgICAgY2FzZSBIUlRGOgorICAgICAgICByZXR1cm4gIkhSVEYiOworICAgIGNh
c2UgU09VTkRGSUVMRDoKKyAgICAgICAgcmV0dXJuICJzb3VuZGZpZWxkIjsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICJIUlRGIjsK
KyAgICB9Cit9CisKK3ZvaWQgUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKGNvbnN0IFN0cmlu
ZyYgbW9kZWwpCit7CisgICAgaWYgKG1vZGVsID09ICJlcXVhbHBvd2VyIikKKyAgICAgICAgc2V0
UGFubmluZ01vZGVsKEVRVUFMUE9XRVIpOworICAgIGVsc2UgaWYgKG1vZGVsID09ICJIUlRGIikK
KyAgICAgICAgc2V0UGFubmluZ01vZGVsKEhSVEYpOworICAgIGVsc2UgaWYgKG1vZGVsID09ICJz
b3VuZGZpZWxkIikKKyAgICAgICAgc2V0UGFubmluZ01vZGVsKFNPVU5ERklFTEQpOworICAgIGVs
c2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgUGFubmVyTm9kZTo6
c2V0UGFubmluZ01vZGVsKHVuc2lnbmVkIG1vZGVsKQogewogICAgIHN3aXRjaCAobW9kZWwpIHsK
ICAgICBjYXNlIEVRVUFMUE9XRVI6CkBAIC0xNjQsMTQgKzE5Miw0MyBAQCB2b2lkIFBhbm5lck5v
ZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2RlbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU09VTkRGSUVMRDoKICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBzb3VuZCBmaWVsZCBtb2RlbC4gU2VlIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2Ny4KLSAgICAgICAgLy8gRm9yIG5vdywgZmFsbCB0
aHJvdWdoIHRvIHRocm93IGFuIGV4Y2VwdGlvbi4KLSAgICBkZWZhdWx0OgotICAgICAgICBlYyA9
IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2Fn
ZUxldmVsLCAiJ3NvdW5kZmllbGQnIHBhbm5pbmcgbW9kZWwgbm90IGltcGxlbWVudGVkLiIpOwog
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhbm5lck5vZGU6OnNldERpc3Rh
bmNlTW9kZWwodW5zaWduZWQgc2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQorU3RyaW5n
IFBhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAoreworICAgIHN3aXRjaCAoY29uc3Rf
Y2FzdDxQYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFuY2VFZmZlY3QubW9kZWwoKSkgeworICAg
IGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsTGluZWFyOgorICAgICAgICByZXR1cm4gImxpbmVh
ciI7CisgICAgY2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxJbnZlcnNlOgorICAgICAgICByZXR1
cm4gImludmVyc2UiOworICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsRXhwb25lbnRpYWw6
CisgICAgICAgIHJldHVybiAiZXhwb25lbnRpYWwiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gImludmVyc2UiOworICAgIH0KK30K
Kwordm9pZCBQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKGNvbnN0IFN0cmluZyYgbW9kZWwp
Cit7CisgICAgaWYgKG1vZGVsID09ICJsaW5lYXIiKQorICAgICAgICBzZXREaXN0YW5jZU1vZGVs
KERpc3RhbmNlRWZmZWN0OjpNb2RlbExpbmVhcik7CisgICAgZWxzZSBpZiAobW9kZWwgPT0gImlu
dmVyc2UiKQorICAgICAgICBzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlRWZmZWN0OjpNb2RlbElu
dmVyc2UpOworICAgIGVsc2UgaWYgKG1vZGVsID09ICJleHBvbmVudGlhbCIpCisgICAgICAgIHNl
dERpc3RhbmNlTW9kZWwoRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsRXhwb25lbnRpYWwpOworICAgIGVs
c2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wgUGFubmVyTm9kZTo6
c2V0RGlzdGFuY2VNb2RlbCh1bnNpZ25lZCBtb2RlbCkKIHsKICAgICBzd2l0Y2ggKG1vZGVsKSB7
CiAgICAgY2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxMaW5lYXI6CkBAIC0xODAsOSArMjM3LDEw
IEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2Rl
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwo
c3RhdGljX2Nhc3Q8RGlzdGFuY2VFZmZlY3Q6Ok1vZGVsVHlwZT4obW9kZWwpLCB0cnVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRv
dWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IGI4Y2MxZGU3ZDg2MzkyM2Q1OTk0
ZGJmODViMTcwOTE5YmUwOTlkYWEuLmM3NzY2MDQ0ZmU4NGFjMzRjYzkwMWNmNzUwODZiMDZhYTJj
MGJhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5o
CkBAIC03OSw4ICs3OSw5IEBAIHB1YmxpYzoKICAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigp
OwogCiAgICAgLy8gUGFubmluZyBtb2RlbAotICAgIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2Rl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9Ci0gICAgdm9pZCBzZXRQYW5uaW5n
TW9kZWwodW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgcGFubmlu
Z01vZGVsKCkgY29uc3Q7CisgICAgYm9vbCBzZXRQYW5uaW5nTW9kZWwodW5zaWduZWQpOyAvLyBS
ZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KKyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFBvc2l0aW9uCiAgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQpAQCAtOTUsOCArOTYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2Np
dHkgPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KIAogICAgIC8vIERpc3RhbmNlIHBhcmFtZXRl
cnMKLSAgICB1bnNpZ25lZCBzaG9ydCBkaXN0YW5jZU1vZGVsKCkgeyByZXR1cm4gbV9kaXN0YW5j
ZUVmZmVjdC5tb2RlbCgpOyB9Ci0gICAgdm9pZCBzZXREaXN0YW5jZU1vZGVsKHVuc2lnbmVkIHNo
b3J0LCBFeGNlcHRpb25Db2RlJik7CisgICAgU3RyaW5nIGRpc3RhbmNlTW9kZWwoKSBjb25zdDsK
KyAgICBib29sIHNldERpc3RhbmNlTW9kZWwodW5zaWduZWQpOyAvLyBSZXR1cm5zIHRydWUgb24g
c3VjY2Vzcy4KKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBmbG9hdCByZWZEaXN0YW5jZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX2Rpc3Rh
bmNlRWZmZWN0LnJlZkRpc3RhbmNlKCkpOyB9CiAgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShmbG9h
dCByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3Rh
bmNlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5p
ZGwKaW5kZXggNWNmMWY3YzdlYmE0ZWM1Zjk2ZmRmMDYwMjcxYjJlMTNhOGQ3MGMyNi4uYWM0Y2Rk
ZDcxMGUxMDM5ODU0ZWQ5NDc0YTNlN2E4NWNhZTc1NzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCkBAIC0zNyw4ICszNyw3IEBACiAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgRVhQT05FTlRJQUxfRElTVEFOQ0UgPSAyOwogCiAgICAgLy8g
RGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYgCi0gICAgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0IHBhbm5pbmdNb2RlbAotICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgW0N1c3RvbVNldHRlcl0gYXR0cmlidXRlIERPTVN0cmluZyBwYW5uaW5nTW9kZWw7CiAK
ICAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtIAogICAgIHZvaWQg
c2V0UG9zaXRpb24oaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7CkBAIC00Niw4
ICs0NSw3IEBACiAgICAgdm9pZCBzZXRWZWxvY2l0eShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBp
biBmbG9hdCB6KTsKIAogICAgIC8vIERpc3RhbmNlIG1vZGVsCi0gICAgYXR0cmlidXRlIHVuc2ln
bmVkIHNob3J0IGRpc3RhbmNlTW9kZWwKLSAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlzdGFuY2VNb2Rl
bDsKIAogICAgIGF0dHJpYnV0ZSBmbG9hdCByZWZEaXN0YW5jZTsKICAgICBhdHRyaWJ1dGUgZmxv
YXQgbWF4RGlzdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkZDQzYzFmN2ZkMTYwZGI0YjZjZGUwNjhj
ZTgwNDdlYzkzNjNlODlhLi5kODA5OGEwNDhhYWNkMTYwZDc3ZjRjZWYxYzNjOGIwZGZhYjgxMzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTM0MTksOCArMzQxOSwxMCBAQCBlbmFibGU/KFdFQl9BVURJTykg
ewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dXZWJBdWRpb0N1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcCBcCisgICAg
ICAgIGJpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1NjcmlwdFByb2Nlc3Nvck5vZGVDdXN0b20uY3BwIFwKICAgICAgICAgTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggZWRhYzJl
NGE5NDYwYzJhNzE2N2E5MzAxZDI4M2NmZmU3ZDE3MzlkMS4uYzM3NDkxMWVhZmJlNGM1MmI0ZTIz
ZGE5ODVkZTQ0ZDZkYjFmZWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjY4LDcgKzI2OCw5IEBA
IGlmIChFTkFCTEVfV0VCX0FVRElPKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKICAg
ICAgICAgYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMv
SlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNQYW5uZXJO
b2RlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1NjcmlwdFByb2Nlc3Nvck5vZGVD
dXN0b20uY3BwCiAgICAgKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggNGEwODE0ODdmZDBk
NmIxOTAyOTVlMjA1NjlkZTA0ZTI4MDZiNDYyYy4uNzIyOTEwMDNhYTFlMGU5N2JiZDVmM2RmMjBk
YTA5ODY1ZmFkNjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTc2LDYgKzc2LDcgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKyAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTEzOSw2ICsxNDAsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50
ZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4T3NjaWxsYXRvck5vZGVDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5j
cHAKKyAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQYW5uZXJOb2RlQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAz
Mzg3YmNiOGJkNzM3NzNkOGU0ZjAxNDVkOThhZTRiMDY4YzMyNmRlLi4yNjVkNDQ4NGUyNjc0MGNl
M2NhNzQyZTUxMGNjZWU2NmE3YjA2YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMjk5LDYgKzEy
OTksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmll
d0N1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0J1ZmZl
clNvdXJjZU5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhBdWRpb0NvbnRleHRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENTU1J1bGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCcsCkBAIC0xMzcyLDYgKzEzNzMsNyBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRl
ckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE9zY2lsbGF0
b3JOb2RlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGFu
bmVyTm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBl
cmZvcm1hbmNlRW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhNjczYTcyYjI4
MDBkN2I4NGIzMTljZDNhZjY2ZDYyYTk5OTJkNzEuLjdhMjNkMTlmZGYyZDc4OTYwN2FjMDRkNzUx
YTM3ZTgxYTVkYWU3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTY1ODksNiArNjU4OSw4IEBACiAJCUZEN0YyOTk3MTNENEMw
Q0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2
ZVNoYXBlclByb2Nlc3Nvci5oICovOyB9OwogCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyog
SlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5j
cHAgKi87IH07CiAJCUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDgyRDdG
NjEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5oICovOyB9OworCQlGRDhBQTYz
QzE2OTUxNDhFMDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEFBNjNCMTY5NTE0OEUw
MEQyRUE2OCAvKiBKU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwICovOyB9OworCQlGRDhBQTYz
RTE2OTUxNEE3MDBEMkVBNjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEFBNjNEMTY5NTE0QTcwMEQyRUE2
OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwICovOyB9OwogCQlGRDhDNDZFQjE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEM0NkU5MTU0NjA4RTcwMEE1OTEwQyAvKiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwICovOyB9OwogCQlGRDhDNDZFQzE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDhDNDZFQTE1NDYwOEU3MDBBNTkxMEMgLyogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggKi87IH07CiAJCUZEQTE1RTlEMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQTE1RTgxMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmNw
cCAqLzsgfTsKQEAgLTE0MTY1LDYgKzE0MTY3LDggQEAKIAkJRkQ3RjI5OTAxM0Q0QzBDQjAwQUQ5
NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2F2ZVNoYXBlclByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dhdmVTaGFwZXJOb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ4MkQ3RjYxM0Q0QzhCRDAwNEU0MzcyIC8qIEpT
V2F2ZVNoYXBlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXYXZl
U2hhcGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDhBQTYzQjE2OTUx
NDhFMDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEOEFBNjNEMTY5NTE0QTcwMEQyRUE2OCAvKiBK
U1Bhbm5lck5vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQ4QzQ2RTkxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDhDNDZFQTE1NDYwOEU3
MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGREExNUU4MTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjQ1LDYgKzIwNjQ5LDcgQEAK
IAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLywKIAkJ
CQlGREVBQUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0
b20uY3BwICovLAogCQkJCUZERUFBQUYwMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQ29udGV4
dEN1c3RvbS5jcHAgKi8sCisJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFk
RmlsdGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8q
IEpTQmxvYkN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0RDEwNTE5
NzFBMDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKQEAg
LTIwNzM2LDYgKzIwNzQxLDcgQEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
b2RlTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGRTZFNkMxNTAxQTNCRjAwMDRFQkM0IC8qIEpT
Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlGREJEMURGQjE2N0ZFMjdEMDA1MUExMUUg
LyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgKi8sCisJCQkJRkQ4QUE2M0QxNjk1MTRBNzAw
RDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJQTg1RjIyMDgxNDMwMzc3
RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDEyRDUx
Mjk1RDBCRDAwQUNBOTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLywK
IAkJCQk0OTk4QUVEMzEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja0N1c3RvbS5jcHAgKi8sCkBAIC0yOTEzMiw2ICsyOTEzOCw4IEBACiAJCQkJNDE5QkMy
REUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNURBOTdFQ0UxNjhFNzg3QjAwMEUzNjc2IC8qIFN5c3RlbVZlcnNpb25NYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGREJEMURGQzE2N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9y
Tm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDhBQTYzQzE2OTUxNDhFMDBEMkVB
NjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZE
OEFBNjNFMTY5NTE0QTcwMEQyRUE2OCAvKiBKU1Bhbm5lck5vZGVDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZp
bHRlck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRG
aWx0ZXJOb2RlQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWQ5YzljOTE5MGE1NjY0MTc3ZmI3ZmQy
MzdhNGVlZTY4YzdlNmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKwor
I2luY2x1ZGUgIkpTQmlxdWFkRmlsdGVyTm9kZS5oIgorCisjaW5jbHVkZSAiQmlxdWFkRmlsdGVy
Tm9kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBKU0JpcXVhZEZpbHRlck5vZGU6OnNldFR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIEJpcXVhZEZpbHRlck5vZGUqIGltcCA9IHN0YXRpY19jYXN0PEJpcXVh
ZEZpbHRlck5vZGUqPihpbXBsKCkpOworCisjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCisg
ICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgdWludDMyX3QgdHlwZSA9IHZhbHVl
LnRvVUludDMyKGV4ZWMpOworICAgICAgICBpZiAoIWltcC0+c2V0VHlwZSh0eXBlKSkKKyAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbGxlZ2FsIEJp
cXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmICh0eXBlID09ICJsb3dw
YXNzIiB8fCB0eXBlID09ICJoaWdocGFzcyIgfHwgdHlwZSA9PSAiYmFuZHBhc3MiIHx8IHR5cGUg
PT0gImxvd3NoZWxmIiB8fCB0eXBlID09ICJoaWdoc2hlbGYiIHx8IHR5cGUgPT0gInBlYWtpbmci
IHx8IHR5cGUgPT0gIm5vdGNoIiB8fCB0eXBlID09ICJhbGxwYXNzIikgeworICAgICAgICAgICAg
aW1wLT5zZXRUeXBlKHR5cGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbGxl
Z2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MTNkZTQwYTI0
N2FjNGM3OTFiMmZjYTRkZTVjM2JjMWY5M2RkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsODkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FV
RElPKQorCisjaW5jbHVkZSAiSlNQYW5uZXJOb2RlLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBQYW5uZXJOb2RlKiBpbXAgPSBzdGF0aWNfY2FzdDxQYW5uZXJOb2RlKj4o
aW1wbCgpKTsKKworI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQorICAgIGlmICh2YWx1ZS5p
c051bWJlcigpKSB7CisgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoZXhl
Yyk7CisgICAgICAgIGlmICghaW1wLT5zZXRQYW5uaW5nTW9kZWwobW9kZWwpKQorICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwgcGFubmlu
Z01vZGVsIikpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgeworICAgICAgICBTdHJpbmcgbW9kZWwgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGlmIChtb2RlbCA9PSAiZXF1YWxwb3dlciIgfHwg
bW9kZWwgPT0gIkhSVEYiIHx8IG1vZGVsID09ICJzb3VuZGZpZWxkIikgeworICAgICAgICAgICAg
aW1wLT5zZXRQYW5uaW5nTW9kZWwobW9kZWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJJbGxlZ2FsIHBhbm5pbmdNb2RlbCIpKTsKK30KKwordm9pZCBKU1Bhbm5lck5vZGU6OnNl
dERpc3RhbmNlTW9kZWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFBh
bm5lck5vZGUqIGltcCA9IHN0YXRpY19jYXN0PFBhbm5lck5vZGUqPihpbXBsKCkpOworCisjaWYg
RU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCisgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgdWludDMyX3QgbW9kZWwgPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgaWYg
KCFpbXAtPnNldERpc3RhbmNlTW9kZWwobW9kZWwpKQorICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkp
IHsKKyAgICAgICAgU3RyaW5nIG1vZGVsID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgICAgICBpZiAobW9kZWwgPT0gImxpbmVhciIgfHwgbW9kZWwgPT0gImludmVyc2Ui
IHx8IG1vZGVsID09ICJleHBvbmVudGlhbCIpIHsKKyAgICAgICAgICAgIGltcC0+c2V0RGlzdGFu
Y2VNb2RlbChtb2RlbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwg
ZGlzdGFuY2VNb2RlbCIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjhmNjMyNGM4M2NjYThjNmM1ZDhjMDMzYTgzNjg3NThhODI4NTI3OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpcXVhZEZpbHRlck5v
ZGVDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiVjhCaXF1YWRGaWx0
ZXJOb2RlLmgiCisKKyNpbmNsdWRlICJCaXF1YWRGaWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgVjhCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlQWNjZXNzb3JTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlKiBpbXAgPSBWOEJpcXVh
ZEZpbHRlck5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CisKKyNpZiBFTkFCTEUoTEVHQUNZX1dFQl9B
VURJTykgICAgCisgICAgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7CisgICAgICAgIGJvb2wgb2sg
PSBmYWxzZTsKKyAgICAgICAgdWludDMyX3QgdHlwZSA9IHRvVUludDMyKHZhbHVlLCBvayk7Cisg
ICAgICAgIGlmICghb2sgfHwgIWltcC0+c2V0VHlwZSh0eXBlKSkKKyAgICAgICAgICAgIHRocm93
RXJyb3IodjhUeXBlRXJyb3IsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIsIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYg
KHZhbHVlLT5Jc1N0cmluZygpKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gImxvd3Bhc3MiIHx8IHR5cGUgPT0gImhp
Z2hwYXNzIiB8fCB0eXBlID09ICJiYW5kcGFzcyIgfHwgdHlwZSA9PSAibG93c2hlbGYiIHx8IHR5
cGUgPT0gImhpZ2hzaGVsZiIgfHwgdHlwZSA9PSAicGVha2luZyIgfHwgdHlwZSA9PSAibm90Y2gi
IHx8IHR5cGUgPT0gImFsbHBhc3MiKSB7CisgICAgICAgICAgICBpbXAtPnNldFR5cGUodHlwZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGhyb3dF
cnJvcih2OFR5cGVFcnJvciwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIiwgaW5mby5H
ZXRJc29sYXRlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4UGFubmVyTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhQYW5uZXJOb2RlQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGU1NDlmZjRmZjhk
ZGYyZTcyNjVmMTA4Y2Q2MDEwODNkNjY1ODY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShX
RUJfQVVESU8pCisKKyNpbmNsdWRlICJWOFBhbm5lck5vZGUuaCIKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWOFBhbm5lck5vZGU6OnBhbm5pbmdN
b2RlbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgUGFubmVy
Tm9kZSogaW1wID0gVjhQYW5uZXJOb2RlOjp0b05hdGl2ZShob2xkZXIpOworCisjaWYgRU5BQkxF
KExFR0FDWV9XRUJfQVVESU8pICAgIAorICAgIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkgeworICAg
ICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdG9VSW50MzIo
dmFsdWUsIG9rKTsKKyAgICAgICAgaWYgKCFvayB8fCAhaW1wLT5zZXRQYW5uaW5nTW9kZWwobW9k
ZWwpKQorICAgICAgICAgICAgdGhyb3dFcnJvcih2OFR5cGVFcnJvciwgIklsbGVnYWwgcGFubmlu
Z01vZGVsIiwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBpZiAodmFsdWUtPklzU3RyaW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIG1vZGVs
ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgaWYgKG1vZGVsID09ICJlcXVhbHBv
d2VyIiB8fCBtb2RlbCA9PSAiSFJURiIgfHwgbW9kZWwgPT0gInNvdW5kZmllbGQiKSB7CisgICAg
ICAgICAgICBpbXAtPnNldFBhbm5pbmdNb2RlbChtb2RlbCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGhyb3dFcnJvcih2OFR5cGVFcnJvciwgIkls
bGVnYWwgcGFubmluZ01vZGVsIiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2b2lkIFY4UGFu
bmVyTm9kZTo6ZGlzdGFuY2VNb2RlbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7CisgICAgUGFubmVyTm9kZSogaW1wID0gVjhQYW5uZXJOb2RlOjp0b05hdGl2ZShob2xk
ZXIpOworCisjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pICAgIAorICAgIGlmICh2YWx1ZS0+
SXNOdW1iZXIoKSkgeworICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIHVpbnQzMl90
IG1vZGVsID0gdG9VSW50MzIodmFsdWUsIG9rKTsKKyAgICAgICAgaWYgKCFvayB8fCAhaW1wLT5z
ZXREaXN0YW5jZU1vZGVsKG1vZGVsKSkKKyAgICAgICAgICAgIHRocm93RXJyb3IodjhUeXBlRXJy
b3IsICJJbGxlZ2FsIGRpc3RhbmNlTW9kZWwiLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICh2YWx1ZS0+SXNTdHJpbmcoKSkgewor
ICAgICAgICBTdHJpbmcgbW9kZWwgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOworICAgICAgICBp
ZiAobW9kZWwgPT0gImxpbmVhciIgfHwgbW9kZWwgPT0gImludmVyc2UiIHx8IG1vZGVsID09ICJl
eHBvbmVudGlhbCIpIHsKKyAgICAgICAgICAgIGltcC0+c2V0RGlzdGFuY2VNb2RlbChtb2RlbCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGhyb3dF
cnJvcih2OFR5cGVFcnJvciwgIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBmOTQ4NDlmMWZhNDc5ZWQwM2YwNTZiYzk5MWU1MDJiMmU1NDhiZjk3
Li44MTBhNWYzMzFiOTFjMjVjZmJhOWYyNGI2YzM0MWI5Y2ZiYTk4ODFiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTMtMDEtMDIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgV2ViSURMLXN0eWxlIHN0cmluZyBjb25zdGFudHMgaW4gV2Vi
QXVkaW8gKHBhcnQgMikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9uc2UtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlvL2JpcXVhZC1nZXRGcmVxdWVuY3lSZXNwb25z
ZS5odG1sOgorICAgICAgICAqIHdlYmF1ZGlvL2JpcXVhZGZpbHRlcm5vZGUtYmFzaWMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlvL2JpcXVhZGZpbHRlcm5vZGUtYmFzaWMuaHRtbDoK
KyAgICAgICAgKiB3ZWJhdWRpby9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViYXVkaW8vcGFubmVybm9kZS1iYXNpYy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvYmlxdWFkLXRlc3RpbmcuanM6CisgICAgICAgICogd2Vi
YXVkaW8vcmVzb3VyY2VzL2Rpc3RhbmNlLW1vZGVsLXRlc3RpbmcuanM6CisgICAgICAgIChjcmVh
dGVHcmFwaCk6CisgICAgICAgICgucmV0dXJuLnJlbmRlcmVkQnVmZmVyKToKKyAgICAgICAgKGNo
ZWNrRGlzdGFuY2VSZXN1bHQpOgorICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9wYW5uZXIt
bW9kZWwtdGVzdGluZy5qczoKKyAgICAgICAgKGNyZWF0ZUdyYXBoKToKKwogMjAxMy0wMS0wMiAg
THVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgQ2hyb21pdW0gZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvcGFubmVybm9kZS1iYXNpYy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVhOTc3NGVjMjk1NDBjNDYwYzA0NjQwOTA5OGZjZDIyM2Y2MTE3Mjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDI1ICswLDAgQEAKLUJhc2ljIHRlc3QgZm9yIEF1ZGlvUGFubmVyTm9kZS4KLQot
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1QQVNTIEF1ZGlvUGFubmVyTm9kZSBoYXMgb25l
IGlucHV0LgotUEFTUyBBdWRpb1Bhbm5lck5vZGUgaGFzIG9uZSBvdXRwdXQuCi1QQVNTIHBhbm5p
bmdNb2RlbCBkZWZhdWx0IHZhbHVlIGlzIEhSVEYuCi1QQVNTIHJlZkRpc3RhbmNlIGRlZmF1bHQg
dmFsdWUgaXMgMS4KLVBBU1MgbWF4RGlzdGFuY2UgZGVmYXVsdCB2YWx1ZSBpcyAxMDAwMC4KLVBB
U1Mgcm9sbG9mZkZhY3RvciBkZWZhdWx0IHZhbHVlIGlzIDEuCi1QQVNTIGNvbmVJbm5lckFuZ2xl
IGRlZmF1bHQgdmFsdWUgaXMgMzYwLgotUEFTUyBjb25lT3V0ZXJBbmdsZSBkZWZhdWx0IHZhbHVl
IGlzIDM2MC4KLVBBU1MgY29uZU91dGVyR2FpbiBkZWZhdWx0IHZhbHVlIGlzIDAuCi1QQVNTIHBh
bm5pbmdNb2RlbCBzZXQgdG8gRVFVQUxQT1dFUiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHkuCi1Q
QVNTIHBhbm5pbmdNb2RlbCBzZXQgdG8gSFJURiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHkuCi1Q
QVNTIFNldHRpbmcgcGFubmluZ01vZGVsIHRvIFNPVU5ERklFTEQgY29ycmVjdGx5IHRocm93cyBl
eGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QgaW1wbGVtZW50ZWQuCi1QQVNTIElsbGVnYWwgcGFu
bmluZ01vZGVsIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLgotUEFTUyBkaXN0YW5jZU1vZGVs
IHNldCB0byBMSU5FQVJfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LgotUEFTUyBkaXN0YW5j
ZU1vZGVsIHNldCB0byBJTlZFUlNFX0RJU1RBTkNFIGFuZCByZWFkIGNvcnJlY3RseS4KLVBBU1Mg
ZGlzdGFuY2VNb2RlbCBzZXQgdG8gRVhQT05FTlRJQUxfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVj
dGx5LgotUEFTUyBJbGxlZ2FsIGRpc3RhbmNlTW9kZWwgY29ycmVjdGx5IHRocm93cyBleGNlcHRp
b24uCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZkNDIwN2Q0MzgwZmE3OWE1NjdmNzg5ODRjNDgy
MjQ1ODZmYjNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLQotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLQotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGZv
ciBBdWRpb1Bhbm5lck5vZGUuIik7Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0KLSAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0Nv
bnRleHQoKTsKLSAgICB2YXIgcGFubmVyID0gY29udGV4dC5jcmVhdGVQYW5uZXIoKTsKLSAgICAK
LSAgICBpZiAocGFubmVyLm51bWJlck9mSW5wdXRzID09PSAxKQotICAgICAgICB0ZXN0UGFzc2Vk
KCJBdWRpb1Bhbm5lck5vZGUgaGFzIG9uZSBpbnB1dC4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRl
c3RGYWlsZWQoIkF1ZGlvUGFubmVyTm9kZSBzaG91bGQgaGF2ZSBvbmUgaW5wdXQuIik7Ci0KLSAg
ICBpZiAocGFubmVyLm51bWJlck9mT3V0cHV0cyA9PT0gMSkKLSAgICAgICAgdGVzdFBhc3NlZCgi
QXVkaW9QYW5uZXJOb2RlIGhhcyBvbmUgb3V0cHV0LiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVz
dEZhaWxlZCgiQXVkaW9QYW5uZXJOb2RlIHNob3VsZCBoYXZlIG9uZSBvdXRwdXQuIik7Ci0KLSAg
ICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0gcGFubmVyLkhSVEYpCi0gICAgICAgIHRlc3RQ
YXNzZWQoInBhbm5pbmdNb2RlbCBkZWZhdWx0IHZhbHVlIGlzIEhSVEYuIik7Ci0gICAgZWxzZQot
ICAgICAgICB0ZXN0RmFpbGVkKCJwYW5uaW5nTW9kZWwgZGVmYXVsdCB2YWx1ZSBpcyBub3QgSFJU
Ri4iKTsKLSAKLSAgICBpZiAocGFubmVyLnJlZkRpc3RhbmNlID09PSAxKQotICAgICAgICB0ZXN0
UGFzc2VkKCJyZWZEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIGlzIDEuIik7Ci0gICAgZWxzZQotICAg
ICAgICB0ZXN0RmFpbGVkKCJyZWZEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSAxLiIp
OwotCi0gICAgaWYgKHBhbm5lci5tYXhEaXN0YW5jZSA9PT0gMTAwMDApCi0gICAgICAgIHRlc3RQ
YXNzZWQoIm1heERpc3RhbmNlIGRlZmF1bHQgdmFsdWUgaXMgMTAwMDAuIik7Ci0gICAgZWxzZQot
ICAgICAgICB0ZXN0RmFpbGVkKCJtYXhEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSAx
MDAwMC4iKTsKLQotICAgIGlmIChwYW5uZXIucm9sbG9mZkZhY3RvciA9PT0gMSkKLSAgICAgICAg
dGVzdFBhc3NlZCgicm9sbG9mZkZhY3RvciBkZWZhdWx0IHZhbHVlIGlzIDEuIik7Ci0gICAgZWxz
ZQotICAgICAgICB0ZXN0RmFpbGVkKCJyb2xsb2ZmRmFjdG9yIGRlZmF1bHQgdmFsdWUgc2hvdWxk
IGJlIDEuIik7Ci0KLSAgICBpZiAocGFubmVyLmNvbmVJbm5lckFuZ2xlID09PSAzNjApCi0gICAg
ICAgIHRlc3RQYXNzZWQoImNvbmVJbm5lckFuZ2xlIGRlZmF1bHQgdmFsdWUgaXMgMzYwLiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiY29uZUlubmVyQW5nbGUgZGVmYXVsdCB2YWx1
ZSBzaG91bGQgYmUgMzYwLiIpOwotCi0gICAgaWYgKHBhbm5lci5jb25lT3V0ZXJBbmdsZSA9PT0g
MzYwKQotICAgICAgICB0ZXN0UGFzc2VkKCJjb25lT3V0ZXJBbmdsZSBkZWZhdWx0IHZhbHVlIGlz
IDM2MC4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoImNvbmVPdXRlckFuZ2xlIGRl
ZmF1bHQgdmFsdWUgc2hvdWxkIGJlIDM2MC4iKTsKLQotICAgIGlmIChwYW5uZXIuY29uZU91dGVy
R2FpbiA9PT0gMCkKLSAgICAgICAgdGVzdFBhc3NlZCgiY29uZU91dGVyR2FpbiBkZWZhdWx0IHZh
bHVlIGlzIDAuIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCJjb25lT3V0ZXJHYWlu
IGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIDAuIik7Ci0KLSAgICAvLyBTZXQgdGhlIHBhbm5pbmcg
bW9kZWwgYW5kIHNlZSBpZiBpdCBjYW4gYmUgcmVhZCBiYWNrIGNvcnJlY3RseS4KLSAgICBwYW5u
ZXIucGFubmluZ01vZGVsID0gcGFubmVyLkVRVUFMUE9XRVI7Ci0gICAgaWYgKHBhbm5lci5wYW5u
aW5nTW9kZWwgPT09IDApCi0gICAgICAgIHRlc3RQYXNzZWQoInBhbm5pbmdNb2RlbCBzZXQgdG8g
RVFVQUxQT1dFUiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHkuIik7Ci0gICAgZWxzZQotICAgICAg
ICB0ZXN0RmFpbGVkKCJwYW5uaW5nTW9kZWwgc2V0IHRvIEVRVUFMUE9XRVIgKDApIGJ1dCByZXR1
cm5lZCAiICsgcGFubmVyLnBhbm5pbmdNb2RlbCk7Ci0gICAgCi0gICAgcGFubmVyLnBhbm5pbmdN
b2RlbCA9IHBhbm5lci5IUlRGOwotICAgIGlmIChwYW5uZXIucGFubmluZ01vZGVsID09PSAxKQot
ICAgICAgICB0ZXN0UGFzc2VkKCJwYW5uaW5nTW9kZWwgc2V0IHRvIEhSVEYgbW9kZWwgYW5kIHJl
YWQgY29ycmVjdGx5LiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgicGFubmluZ01v
ZGVsIHNldCB0byBIUlRGICgxKSBidXQgcmV0dXJuZWQgIiArIHBhbm5lci5wYW5uaW5nTW9kZWwp
OwotCi0gICAgLy8gU09VTkRGSUVMRCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaXQg
aXMgbm90Ci0gICAgLy8gY3VycmVudGx5IGltcGxlbWVudGVkLiAgKFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjcpCi0gICAgdHJ5IHsKLSAgICAgICAgcGFu
bmVyLnBhbm5pbmdNb2RlbCA9IHBhbm5lci5TT1VOREZJRUxEOwotICAgICAgICB0ZXN0RmFpbGVk
KCJTZXR0aW5nIHBhbm5pbmdNb2RlbCB0byBTT1VOREZJRUxEIHNob3VsZCB0aHJvdyBleGNlcHRp
b24gYmVjYXVzZSBpdCBpcyBub3QgaW1wbGVtZW50ZWQuIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQoIlNldHRpbmcgcGFubmluZ01vZGVsIHRvIFNPVU5ERklFTEQgY29y
cmVjdGx5IHRocm93cyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QgaW1wbGVtZW50ZWQuIik7
Ci0gICAgfQotCi0gICAgLy8gT3RoZXIgaW52YWxpZCBtb2RlbHMgc2hvdWxkIHRocm93IGFuIGV4
Y2VwdGlvbi4KLSAgICB0cnkgewotICAgICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmVy
LlNPVU5ERklFTEQgKyAxOwotICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHBhbm5pbmdNb2Rl
bCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uLiIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICB0
ZXN0UGFzc2VkKCJJbGxlZ2FsIHBhbm5pbmdNb2RlbCBjb3JyZWN0bHkgdGhyb3dzIGV4Y2VwdGlv
bi4iKTsKLSAgICB9Ci0KLSAgICBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9IHBhbm5lci5MSU5FQVJf
RElTVEFOQ0U7Ci0gICAgaWYgKHBhbm5lci5kaXN0YW5jZU1vZGVsID09PSAwKQotICAgICAgICB0
ZXN0UGFzc2VkKCJkaXN0YW5jZU1vZGVsIHNldCB0byBMSU5FQVJfRElTVEFOQ0UgYW5kIHJlYWQg
Y29ycmVjdGx5LiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiZGlzdGFuY2VNb2Rl
bCBzZXQgdG8gTElORUFSX0RJU1RBTkNFICgwKSBidXQgcmV0dXJuZWQgIiArIHBhbm5lci5kaXN0
YW5jZU1vZGVsKTsKLQotICAgIHBhbm5lci5kaXN0YW5jZU1vZGVsID0gcGFubmVyLklOVkVSU0Vf
RElTVEFOQ0U7Ci0gICAgaWYgKHBhbm5lci5kaXN0YW5jZU1vZGVsID09PSAxKQotICAgICAgICB0
ZXN0UGFzc2VkKCJkaXN0YW5jZU1vZGVsIHNldCB0byBJTlZFUlNFX0RJU1RBTkNFIGFuZCByZWFk
IGNvcnJlY3RseS4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoImRpc3RhbmNlTW9k
ZWwgc2V0IHRvIElOVkVSU0VfRElTVEFOQ0UgKDEpIGJ1dCByZXR1cm5lZCAiICsgcGFubmVyLmRp
c3RhbmNlTW9kZWwpOwotCi0gICAgcGFubmVyLmRpc3RhbmNlTW9kZWwgPSBwYW5uZXIuRVhQT05F
TlRJQUxfRElTVEFOQ0U7Ci0gICAgaWYgKHBhbm5lci5kaXN0YW5jZU1vZGVsID09PSAyKQotICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXN0YW5jZU1vZGVsIHNldCB0byBFWFBPTkVOVElBTF9ESVNUQU5D
RSBhbmQgcmVhZCBjb3JyZWN0bHkuIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCJk
aXN0YW5jZU1vZGVsIHNldCB0byBFWFBPTkVOVElBTF9ESVNUQU5DRSAoMikgYnV0IHJldHVybmVk
ICIgKyBwYW5uZXIuZGlzdGFuY2VNb2RlbCk7Ci0KLSAgICB0cnkgewotICAgICAgICBwYW5uZXIu
ZGlzdGFuY2VNb2RlbCA9IHBhbm5lci5FWFBPTkVOVElBTF9ESVNUQU5DRSArIDE7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCBzaG91bGQgdGhyb3cgZXhjZXB0aW9u
LiIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJJbGxlZ2FsIGRpc3Rh
bmNlTW9kZWwgY29ycmVjdGx5IHRocm93cyBleGNlcHRpb24uIik7Ci0gICAgfQotCi0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLXJ1blRlc3QoKTsKLXN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Ci08L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9uc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkLWdldEZyZXF1ZW5jeVJlc3BvbnNlLWV4cGVjdGVk
LnR4dAppbmRleCA5MzAxMTgyMzkwZWU1MjY4NTQxNTVjZTk0NjJhZjc5ZTU5MWU1OTRiLi44ZWU3
MzI2YzVjNjNhMzA2YTBjMDY2YjM0M2UxZmE0NzI1NmRmOTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9uc2UtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZC1nZXRGcmVxdWVuY3lSZXNwb25zZS1leHBl
Y3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1Mg
TWFnbml0dWRlIHJlc3BvbnNlIHdpdGhpbiBhY2NlcHRhYmxlIHRocmVzaG9sZC4KIFBBU1MgUGhh
c2UgcmVzcG9uc2Ugd2l0aGluIGFjY2VwdGFibGUgdGhyZXNob2xkLgotUEFTUyBQZWFraW5nIGZp
bHRlciBmcmVxdWVuY3kgcmVzcG9uc2Ugd2FzIGNvcnJlY3QuCitQQVNTIEZyZXF1ZW5jeSByZXNw
b25zZSB3YXMgY29ycmVjdC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkLWdldEZy
ZXF1ZW5jeVJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9iaXF1YWQtZ2V0RnJl
cXVlbmN5UmVzcG9uc2UuaHRtbAppbmRleCA0NzYyZGE2MjgzMDcwNzY5OTlmZDViOTIyMzQ5MDUz
NzQxOGE4NTRmLi45ZWMyMDg5YzUyODY3NWE2ZjIwYzMzYjk4NjZiMjQxODNjYmExYzE5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9uc2Uu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9iaXF1YWQtZ2V0RnJlcXVlbmN5UmVzcG9u
c2UuaHRtbApAQCAtMTA3LDcgKzEwNyw3IEBAIGZ1bmN0aW9uIGZyZXF1ZW5jeVJlc3BvbnNlUmVm
ZXJlbmNlKGZpbHRlciwgZnJlcXVlbmNpZXMpCiB7CiAgICAgdmFyIHNhbXBsZVJhdGUgPSBmaWx0
ZXIuY29udGV4dC5zYW1wbGVSYXRlOwogICAgIHZhciBub3JtYWxpemVkRnJlcSA9IG5vcm1hbGl6
ZWRGcmVxdWVuY3koZmlsdGVyLmZyZXF1ZW5jeS52YWx1ZSwgc2FtcGxlUmF0ZSk7Ci0gICAgdmFy
IGZpbHRlckNvZWZmaWNpZW50cyA9IGNyZWF0ZUZpbHRlcihmaWx0ZXIudHlwZSwgbm9ybWFsaXpl
ZEZyZXEsIGZpbHRlci5RLnZhbHVlLCBmaWx0ZXIuZ2Fpbi52YWx1ZSk7CisgICAgdmFyIGZpbHRl
ckNvZWZmaWNpZW50cyA9IGNyZWF0ZUZpbHRlcihmaWx0ZXJUeXBlSW5kZXhbZmlsdGVyLnR5cGVd
LCBub3JtYWxpemVkRnJlcSwgZmlsdGVyLlEudmFsdWUsIGZpbHRlci5nYWluLnZhbHVlKTsKIAog
ICAgIHZhciBtYWduaXR1ZGVzID0gW107CiAgICAgdmFyIHBoYXNlcyA9IFtdOwpAQCAtMjgzLDcg
KzI4Myw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGZpbHRlciA9IGNvbnRleHQuY3JlYXRl
QmlxdWFkRmlsdGVyKCk7CiAKICAgICAvLyBBcmJpdHJhcmlseSB0ZXN0IGEgcGVha2luZyBmaWx0
ZXIsIGJ1dCBhbnkga2luZCBvZiBmaWx0ZXIgY2FuIGJlIHRlc3RlZC4KLSAgICBmaWx0ZXIudHlw
ZSA9IGZpbHRlci5QRUFLSU5HOworICAgIGZpbHRlci50eXBlID0gInBlYWtpbmciOwogICAgIGZp
bHRlci5mcmVxdWVuY3kudmFsdWUgPSBmaWx0ZXJDdXRvZmY7CiAgICAgZmlsdGVyLlEudmFsdWUg
PSBmaWx0ZXJROwogICAgIGZpbHRlci5nYWluLnZhbHVlID0gZmlsdGVyR2FpbjsKQEAgLTI5Niw5
ICsyOTYsOSBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB2YXIgc3VjY2VzcyA9IGNvbXBhcmVS
ZXNwb25zZXMoZmlsdGVyLCBmcmVxdWVuY2llcywgbWFnUmVzcG9uc2UsIHBoYXNlUmVzcG9uc2Up
OwogCiAgICAgaWYgKHN1Y2Nlc3MpIHsKLSAgICAgICAgdGVzdFBhc3NlZChmaWx0ZXJUeXBlTmFt
ZVtmaWx0ZXIudHlwZV0gKyAiIGZyZXF1ZW5jeSByZXNwb25zZSB3YXMgY29ycmVjdC4iKTsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiRnJlcXVlbmN5IHJlc3BvbnNlIHdhcyBjb3JyZWN0LiIpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoZmlsdGVyVHlwZU5hbWVbZmlsdGVyLnR5cGVd
ICsgIiBmcmVxdWVuY3kgcmVzcG9uc2Ugd2FzIGluY29ycmVjdC4iKTsKKyAgICAgICAgdGVzdEZh
aWxlZCgiRnJlcXVlbmN5IHJlc3BvbnNlIHdhcyBpbmNvcnJlY3QuIik7CiAgICAgfQogCiAgICAg
ZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9iaXF1YWRm
aWx0ZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVh
ZGZpbHRlcm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IDkyNTFmMDA1ZWU0NTE1NjU3NmIx
OGJjMDliNzJjMGJlOGRlYjMxZTIuLmEzZTFjYWU2MDgxZTlkODQ3OTQwNDI3NTg0YzVlYjE0Y2Ew
ODU0MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZGZpbHRlcm5vZGUt
YmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVhZGZpbHRl
cm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0yLDIxICsyLDMxIEBAIEJhc2ljIHRlc3RzIGZv
ciBCaXF1YWRGaWx0ZXJOb2RlLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVBBU1Mg
QmlxdWFkRmlsdGVyTm9kZSBoYXMgb25lIGl1dHB1dC4KK1BBU1MgQmlxdWFkRmlsdGVyTm9kZSBo
YXMgb25lIGlucHV0LgogUEFTUyBCaXF1YWRGaWx0ZXJOb2RlIGhhcyBvbmUgb3V0cHV0LgogUEFT
UyBCaXF1YWQgZmlsdGVyIGRlZmF1bHRzIHRvIGxvdy1wYXNzIGZpbHRlci4KIFBBU1MgVGhlIGRl
ZmF1bHQgdmFsdWUgb2YgZnJlcXVlbmN5IGlzIDM1MC4KIFBBU1MgVGhlIGRlZmF1bHQgdmFsdWUg
b2YgUSBpcyAxLgogUEFTUyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBnYWluIGlzIDAuCi1QQVNTIEJp
cXVhZCBmaWx0ZXIgdHlwZSAwIGlzIHNldHRhYmxlLgotUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUg
MSBpcyBzZXR0YWJsZS4KLVBBU1MgQmlxdWFkIGZpbHRlciB0eXBlIDIgaXMgc2V0dGFibGUuCi1Q
QVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAzIGlzIHNldHRhYmxlLgotUEFTUyBCaXF1YWQgZmlsdGVy
IHR5cGUgNCBpcyBzZXR0YWJsZS4KLVBBU1MgQmlxdWFkIGZpbHRlciB0eXBlIDUgaXMgc2V0dGFi
bGUuCi1QQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSA2IGlzIHNldHRhYmxlLgotUEFTUyBCaXF1YWQg
ZmlsdGVyIHR5cGUgNyBpcyBzZXR0YWJsZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlICdsb3dw
YXNzJyBpcyBzZXR0YWJsZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlICdoaWdocGFzcycgaXMg
c2V0dGFibGUuCitQQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAnYmFuZHBhc3MnIGlzIHNldHRhYmxl
LgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgJ2xvd3NoZWxmJyBpcyBzZXR0YWJsZS4KK1BBU1Mg
QmlxdWFkIGZpbHRlciB0eXBlICdoaWdoc2hlbGYnIGlzIHNldHRhYmxlLgorUEFTUyBCaXF1YWQg
ZmlsdGVyIHR5cGUgJ3BlYWtpbmcnIGlzIHNldHRhYmxlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5
cGUgJ25vdGNoJyBpcyBzZXR0YWJsZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlICdhbGxwYXNz
JyBpcyBzZXR0YWJsZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlIDAgaXMgc2V0dGFibGUgdXNp
bmcgbGVnYWN5IGludGVnZXIgdmFsdWUuCitQQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSAxIGlzIHNl
dHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5
cGUgMiBpcyBzZXR0YWJsZSB1c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgQmlxdWFk
IGZpbHRlciB0eXBlIDMgaXMgc2V0dGFibGUgdXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuCitQ
QVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSA0IGlzIHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2Vy
IHZhbHVlLgorUEFTUyBCaXF1YWQgZmlsdGVyIHR5cGUgNSBpcyBzZXR0YWJsZSB1c2luZyBsZWdh
Y3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgQmlxdWFkIGZpbHRlciB0eXBlIDYgaXMgc2V0dGFibGUg
dXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuCitQQVNTIEJpcXVhZCBmaWx0ZXIgdHlwZSA3IGlz
IHNldHRhYmxlIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVlLgogUEFTUyBJbGxlZ2FsIGZpbHRl
ciB0eXBlIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLgorUEFTUyBTZXR0aW5nIC50eXBlIHRv
IGlsbGVnYWwgc3RyaW5nIHZhbHVlIHRocmV3IFR5cGVFcnJvci4KK1BBU1MgU2V0dGluZyAudHlw
ZSB0byBpbGxlZ2FsIHR5cGUgb2YgRmxvYXQzMkFycmF5IHRocmV3IFR5cGVFcnJvci4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNpYy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYmlxdWFkZmlsdGVybm9kZS1iYXNpYy5odG1sCmluZGV4IDM2N2ZjMDgz
ODFmZWJkYjM1YWJmNzRlYzVmMTU3NzBkZTk3OWViNWYuLjk3NTFkZDZjNWJiOTMyMjU5NTc0ZjNk
ODBlZmJmNzJmODM1ZjAwNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2JpcXVh
ZGZpbHRlcm5vZGUtYmFzaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9iaXF1YWRm
aWx0ZXJub2RlLWJhc2ljLmh0bWwKQEAgLTI2LDE2ICsyNiwxNiBAQCBmdW5jdGlvbiBydW5UZXN0
KCkgewogICAgIHZhciBmaWx0ZXIgPSBjb250ZXh0LmNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAg
CiAgICAgaWYgKGZpbHRlci5udW1iZXJPZklucHV0cyA9PT0gMSkgCi0gICAgICAgIHRlc3RQYXNz
ZWQoIkJpcXVhZEZpbHRlck5vZGUgaGFzIG9uZSBpdXRwdXQuIik7CisgICAgICAgIHRlc3RQYXNz
ZWQoIkJpcXVhZEZpbHRlck5vZGUgaGFzIG9uZSBpbnB1dC4iKTsKICAgICBlbHNlCi0gICAgICAg
IHRlc3RGYWlsZWQoIkJpcXVhZEZpbHRlck5vZGUgc2hvdWxkIGhhdmUgb25lIGl1dHB1dC4iKTsK
KyAgICAgICAgdGVzdEZhaWxlZCgiQmlxdWFkRmlsdGVyTm9kZSBzaG91bGQgaGF2ZSBvbmUgaW5w
dXQuIik7CiAgICAgCiAgICAgaWYgKGZpbHRlci5udW1iZXJPZk91dHB1dHMgPT09IDEpIAogICAg
ICAgICB0ZXN0UGFzc2VkKCJCaXF1YWRGaWx0ZXJOb2RlIGhhcyBvbmUgb3V0cHV0LiIpOwogICAg
IGVsc2UKICAgICAgICAgdGVzdEZhaWxlZCgiQmlxdWFkRmlsdGVyTm9kZSBzaG91bGQgaGF2ZSBv
bmUgb3V0cHV0LiIpOwogICAgIAotICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gZmlsdGVyLkxPV1BB
U1MpCisgICAgaWYgKGZpbHRlci50eXBlID09PSAibG93cGFzcyIpCiAgICAgICAgIHRlc3RQYXNz
ZWQoIkJpcXVhZCBmaWx0ZXIgZGVmYXVsdHMgdG8gbG93LXBhc3MgZmlsdGVyLiIpOwogICAgIGVs
c2UKICAgICAgICAgdGVzdEZhaWxlZCgiQmlxdWFkIGZpbHRlciBzaG91bGQgZGVmYXVsdCB0byBs
b3ctcGFzcyBmaWx0ZXIuIik7CkBAIC01NiwyMyArNTYsMjMgQEAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKICAgICAgICAgdGVzdEZhaWxlZCgiVGhlIGRlZmF1bHQgdmFsdWUgb2YgZ2FpbiBzaG91bGQg
YmUgMC4iKTsKIAogICAgIC8vIENoZWNrIHRoYXQgYWxsIGxlZ2FsIGZpbHRlciB0eXBlcyBjYW4g
YmUgc2V0LgotICAgIHZhciBmaWx0ZXJUeXBlQXJyYXkgPSBbZmlsdGVyLkxPV1BBU1MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuSElHSFBBU1MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWx0ZXIuQkFORFBBU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWx0ZXIuTE9XU0hFTEYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuSElHSFNI
RUxGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLlBFQUtJTkcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuTk9UQ0gsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXIuQUxMUEFTU107CisgICAgdmFyIGZpbHRlclR5cGVBcnJheSA9IFt7dHlwZTog
Imxvd3Bhc3MiLCBpbnRlZ2VyVHlwZTogZmlsdGVyLkxPV1BBU1N9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3R5cGU6ICJoaWdocGFzcyIsIGludGVnZXJUeXBlOiBmaWx0ZXIuSElHSFBB
U1N9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5cGU6ICJiYW5kcGFzcyIsIGludGVn
ZXJUeXBlOiBmaWx0ZXIuQkFORFBBU1N9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5
cGU6ICJsb3dzaGVsZiIsIGludGVnZXJUeXBlOiBmaWx0ZXIuTE9XU0hFTEZ9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAge3R5cGU6ICJoaWdoc2hlbGYiLCBpbnRlZ2VyVHlwZTogZmlsdGVy
LkhJR0hTSEVMRn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogInBlYWtpbmci
LCBpbnRlZ2VyVHlwZTogZmlsdGVyLlBFQUtJTkd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAge3R5cGU6ICJub3RjaCIsIGludGVnZXJUeXBlOiBmaWx0ZXIuTk9UQ0h9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAge3R5cGU6ICJhbGxwYXNzIiwgaW50ZWdlclR5cGU6IGZpbHRlci5B
TExQQVNTfV07CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbHRlclR5cGVBcnJheS5sZW5n
dGg7ICsraSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgZmlsdGVyLnR5cGUgPSBmaWx0
ZXJUeXBlQXJyYXlbaV07Ci0gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IGZpbHRlclR5
cGVBcnJheVtpXSAmJiBmaWx0ZXJUeXBlQXJyYXlbaV0gPT09IGkpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZSA9ICJCaXF1YWQgZmlsdGVyIHR5cGUgIiArIGkgKyAiIGlzIHNldHRhYmxl
LiI7CisgICAgICAgICAgICBmaWx0ZXIudHlwZSA9IGZpbHRlclR5cGVBcnJheVtpXS50eXBlOwor
ICAgICAgICAgICAgaWYgKGZpbHRlci50eXBlID09PSBmaWx0ZXJUeXBlQXJyYXlbaV0udHlwZSkg
eworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIkJpcXVhZCBmaWx0ZXIgdHlwZSAnIiAr
IGZpbHRlclR5cGVBcnJheVtpXS50eXBlICsgIicgaXMgc2V0dGFibGUuIjsKICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB2YXIgbWVzc2FnZSA9ICJCaXF1YWQgZmlsdGVyIHR5cGUgIiArIGkgKyAiIHdhcyBu
b3QgY29ycmVjdGx5IHNldC4iOworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIkJpcXVh
ZCBmaWx0ZXIgdHlwZSAnIiArIGZpbHRlclR5cGVBcnJheVtpXS50eXBlICsgIicgd2FzIG5vdCBj
b3JyZWN0bHkgc2V0LiI7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBjYXRjaChlKSB7CkBAIC04MSw2ICs4MSwyNCBAQCBmdW5j
dGlvbiBydW5UZXN0KCkgewogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRm9yIGxlZ2FjeSBz
dXBwb3J0LCB2ZXJpZnkgdGhhdCB3ZSBjYW4gc2V0IHRoZSB0eXBlIGF0dHJpYnV0ZSBhcyBhbiBp
bnRlZ2VyIHZhbHVlIGFuZAorICAgIC8vIHZlcmlmeSB0aGF0IHRoaXMgdHJhbnNsYXRlcyBjb3Jy
ZWN0bHkgdG8gdGhlIFdlYklETCBlbnVtIHZhbHVlLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZmlsdGVyVHlwZUFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmaWx0ZXIudHlwZSA9IGZpbHRlclR5cGVBcnJheVtpXS5pbnRlZ2VyVHlwZTsKKyAgICAgICAg
ICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gZmlsdGVyVHlwZUFycmF5W2ldLnR5cGUgJiYgZmlsdGVy
VHlwZUFycmF5W2ldLmludGVnZXJUeXBlID09PSBpKSB7CisgICAgICAgICAgICAgICAgdmFyIG1l
c3NhZ2UgPSAiQmlxdWFkIGZpbHRlciB0eXBlICIgKyBpICsgIiBpcyBzZXR0YWJsZSB1c2luZyBs
ZWdhY3kgaW50ZWdlciB2YWx1ZS4iOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobWVzc2Fn
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
IkJpcXVhZCBmaWx0ZXIgdHlwZSAiICsgaSArICIgd2FzIG5vdCBjb3JyZWN0bHkgc2V0IHVzaW5n
IGxlZ2FjeSBpbnRlZ2VyIHZhbHVlLiI7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChtZXNz
YWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB2
YXIgbWVzc2FnZSA9ICJCaXF1YWQgZmlsdGVyIHR5cGUgIiArIGkgKyAiIHNob3VsZCBub3QgdGhy
b3cgZXhjZXB0aW9uIHVzaW5nIGxlZ2FjeSBpbnRlZ2VyIHZhbHVlLiI7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gQ2hlY2sgdGhh
dCBpbGxlZ2FsIGZpbHRlciB0eXBlIHRocm93cy4KICAgICB0cnkgewogICAgICAgICBmaWx0ZXIu
dHlwZSA9IGZpbHRlci5BTExQQVNTICsgMTsKQEAgLTg5LDYgKzEwNywxMCBAQCBmdW5jdGlvbiBy
dW5UZXN0KCkgewogICAgICAgICB0ZXN0UGFzc2VkKCJJbGxlZ2FsIGZpbHRlciB0eXBlIGNvcnJl
Y3RseSB0aHJvd3MgZXhjZXB0aW9uLiIpOwogICAgIH0KIAorICAgIC8vIENoZWNrIHNwZWNpZmlj
YWxseSB0aGF0IHdlIHRocm93IGEgVHlwZUVycm9yLgorICAgIHNob3VsZFRocm93VHlwZUVycm9y
KGZ1bmN0aW9uKCkgeyBmaWx0ZXIudHlwZSA9ICJ4eXoxMjM0OWpma3NkIjsgfSwgIlNldHRpbmcg
LnR5cGUgdG8gaWxsZWdhbCBzdHJpbmcgdmFsdWUiKTsKKyAgICBzaG91bGRUaHJvd1R5cGVFcnJv
cihmdW5jdGlvbigpIHsgZmlsdGVyLnR5cGUgPSBuZXcgRmxvYXQzMkFycmF5KDEpOyB9LCAiU2V0
dGluZyAudHlwZSB0byBpbGxlZ2FsIHR5cGUgb2YgRmxvYXQzMkFycmF5Iik7CisKICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcGFubmVy
bm9kZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9wYW5uZXJub2Rl
LWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTFmNTE3MTk1OTc1ZjUxMzNiOTBiMjFk
YzBmYzk1NzJjZTE3NmMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
cGFubmVybm9kZS1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMCBAQAorQmFzaWMgdGVz
dHMgZm9yIFBhbm5lck5vZGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBQ
YW5uZXJOb2RlIGhhcyBvbmUgaW5wdXQuCitQQVNTIFBhbm5lck5vZGUgaGFzIG9uZSBvdXRwdXQu
CitQQVNTIHJlZkRpc3RhbmNlIGRlZmF1bHQgdmFsdWUgaXMgMS4KK1BBU1MgbWF4RGlzdGFuY2Ug
ZGVmYXVsdCB2YWx1ZSBpcyAxMDAwMC4KK1BBU1Mgcm9sbG9mZkZhY3RvciBkZWZhdWx0IHZhbHVl
IGlzIDEuCitQQVNTIGNvbmVJbm5lckFuZ2xlIGRlZmF1bHQgdmFsdWUgaXMgMzYwLgorUEFTUyBj
b25lT3V0ZXJBbmdsZSBkZWZhdWx0IHZhbHVlIGlzIDM2MC4KK1BBU1MgY29uZU91dGVyR2FpbiBk
ZWZhdWx0IHZhbHVlIGlzIDAuCitQQVNTIFBhbm5lck5vZGUgZGVmYXVsdHMgdG8gJ0hSVEYnIHBh
bm5pbmdNb2RlbC4KK1BBU1MgUGFubmVyTm9kZSBkZWZhdWx0cyB0byAnaW52ZXJzZScgZGlzdGFu
Y2VNb2RlbC4KK1BBU1MgcGFubmluZ01vZGVsOiAnZXF1YWxwb3dlcicgaXMgc2V0dGFibGUuCitQ
QVNTIHBhbm5pbmdNb2RlbDogJ0hSVEYnIGlzIHNldHRhYmxlLgorUEFTUyBwYW5uaW5nTW9kZWw6
IDAgaXMgc2V0dGFibGUgdXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuCitQQVNTIHBhbm5pbmdN
b2RlbDogMSBpcyBzZXR0YWJsZSB1c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgZGlz
dGFuY2VNb2RlbDogJ2xpbmVhcicgaXMgc2V0dGFibGUuCitQQVNTIGRpc3RhbmNlTW9kZWw6ICdp
bnZlcnNlJyBpcyBzZXR0YWJsZS4KK1BBU1MgZGlzdGFuY2VNb2RlbDogJ2V4cG9uZW50aWFsJyBp
cyBzZXR0YWJsZS4KK1BBU1MgZGlzdGFuY2VNb2RlbDogMCBpcyBzZXR0YWJsZSB1c2luZyBsZWdh
Y3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgZGlzdGFuY2VNb2RlbDogMSBpcyBzZXR0YWJsZSB1c2lu
ZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgZGlzdGFuY2VNb2RlbDogMiBpcyBzZXR0YWJs
ZSB1c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4KK1BBU1MgU2V0dGluZyAudHlwZSB0byBpbGxl
Z2FsIHN0cmluZyB2YWx1ZSB0aHJldyBUeXBlRXJyb3IuCitQQVNTIFNldHRpbmcgLnR5cGUgdG8g
aWxsZWdhbCB0eXBlIG9mIEZsb2F0MzJBcnJheSB0aHJldyBUeXBlRXJyb3IuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vcGFubmVybm9kZS1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vcGFubmVybm9kZS1iYXNpYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ODg5OWQxYjYxZWRiN2Qw
MjFjNTg0OGM2NDFiNWNkMDRiM2Y1ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9wYW5uZXJub2RlLWJhc2ljLmh0bWwKQEAgLTAsMCArMSwxNzIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlv
LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIkJhc2ljIHRlc3RzIGZvciBQYW5uZXJOb2RlLiIpOworCit2YXIgY29udGV4dCA9
IDA7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKyAgICB2YXIg
cGFubmVyID0gY29udGV4dC5jcmVhdGVQYW5uZXIoKTsKKyAgIAorICAgIGlmIChwYW5uZXIubnVt
YmVyT2ZJbnB1dHMgPT09IDEpIAorICAgICAgICB0ZXN0UGFzc2VkKCJQYW5uZXJOb2RlIGhhcyBv
bmUgaW5wdXQuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJQYW5uZXJOb2RlIHNo
b3VsZCBoYXZlIG9uZSBpbnB1dC4iKTsKKyAgICAKKyAgICBpZiAocGFubmVyLm51bWJlck9mT3V0
cHV0cyA9PT0gMSkgCisgICAgICAgIHRlc3RQYXNzZWQoIlBhbm5lck5vZGUgaGFzIG9uZSBvdXRw
dXQuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJQYW5uZXJOb2RlIHNob3VsZCBo
YXZlIG9uZSBvdXRwdXQuIik7CisKKyAgICBpZiAocGFubmVyLnJlZkRpc3RhbmNlID09PSAxKQor
ICAgICAgICB0ZXN0UGFzc2VkKCJyZWZEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIGlzIDEuIik7Cisg
ICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJyZWZEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIHNo
b3VsZCBiZSAxLiIpOworICAgIAorICAgIGlmIChwYW5uZXIubWF4RGlzdGFuY2UgPT09IDEwMDAw
KQorICAgICAgICB0ZXN0UGFzc2VkKCJtYXhEaXN0YW5jZSBkZWZhdWx0IHZhbHVlIGlzIDEwMDAw
LiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgibWF4RGlzdGFuY2UgZGVmYXVsdCB2
YWx1ZSBzaG91bGQgYmUgMTAwMDAuIik7CisgICAgCisgICAgaWYgKHBhbm5lci5yb2xsb2ZmRmFj
dG9yID09PSAxKQorICAgICAgICB0ZXN0UGFzc2VkKCJyb2xsb2ZmRmFjdG9yIGRlZmF1bHQgdmFs
dWUgaXMgMS4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoInJvbGxvZmZGYWN0b3Ig
ZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgMS4iKTsKKyAgICAKKyAgICBpZiAocGFubmVyLmNvbmVJ
bm5lckFuZ2xlID09PSAzNjApCisgICAgICAgIHRlc3RQYXNzZWQoImNvbmVJbm5lckFuZ2xlIGRl
ZmF1bHQgdmFsdWUgaXMgMzYwLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiY29u
ZUlubmVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgMzYwLiIpOworICAgIAorICAgIGlm
IChwYW5uZXIuY29uZU91dGVyQW5nbGUgPT09IDM2MCkKKyAgICAgICAgdGVzdFBhc3NlZCgiY29u
ZU91dGVyQW5nbGUgZGVmYXVsdCB2YWx1ZSBpcyAzNjAuIik7CisgICAgZWxzZQorICAgICAgICB0
ZXN0RmFpbGVkKCJjb25lT3V0ZXJBbmdsZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSAzNjAuIik7
CisgICAgCisgICAgaWYgKHBhbm5lci5jb25lT3V0ZXJHYWluID09PSAwKQorICAgICAgICB0ZXN0
UGFzc2VkKCJjb25lT3V0ZXJHYWluIGRlZmF1bHQgdmFsdWUgaXMgMC4iKTsKKyAgICBlbHNlCisg
ICAgICAgIHRlc3RGYWlsZWQoImNvbmVPdXRlckdhaW4gZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUg
MC4iKTsKKworICAgIGlmIChwYW5uZXIucGFubmluZ01vZGVsID09PSAiSFJURiIpCisgICAgICAg
IHRlc3RQYXNzZWQoIlBhbm5lck5vZGUgZGVmYXVsdHMgdG8gJ0hSVEYnIHBhbm5pbmdNb2RlbC4i
KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIlBhbm5lck5vZGUgc2hvdWxkIGRlZmF1
bHQgdG8gJ0hSVEYnIHBhbm5pbmdNb2RlbC4iKTsKKyAgICAKKyAgICBpZiAocGFubmVyLmRpc3Rh
bmNlTW9kZWwgPT09ICJpbnZlcnNlIikKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFubmVyTm9kZSBk
ZWZhdWx0cyB0byAnaW52ZXJzZScgZGlzdGFuY2VNb2RlbC4iKTsKKyAgICBlbHNlCisgICAgICAg
IHRlc3RGYWlsZWQoIlBhbm5lck5vZGUgc2hvdWxkIGRlZmF1bHQgdG8gJ2ludmVyc2UnIGRpc3Rh
bmNlTW9kZWwuIik7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSAucGFubmluZ01vZGVsIGF0dHJp
YnV0ZSBjYW4gYmUgc2V0IHRvIGFsbCBsZWdhbCB2YWx1ZXMuCisgICAgdmFyIHBhbm5pbmdNb2Rl
bHMgPSBbe3ZhbHVlOiAiZXF1YWxwb3dlciIsIGludGVnZXJWYWx1ZTogcGFubmVyLkVRVUFMUE9X
RVJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogIkhSVEYiLCBpbnRlZ2VyVmFs
dWU6IHBhbm5lci5IUlRGfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZW5h
YmxlICJzb3VuZGZpZWxkIiBvbmNlIGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQ6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2NworICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHt2YWx1ZTogInNvdW5kZmllbGQiLCBpbnRlZ2VyVmFsdWU6IHBhbm5lci5TT1VOREZJ
RUxEfQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcGFubmluZ01vZGVscy5sZW5ndGg7ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgcGFubmVyLnBhbm5pbmdNb2RlbCA9IHBhbm5pbmdNb2RlbHNbaV0udmFsdWU7CisgICAgICAg
ICAgICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0gcGFubmluZ01vZGVsc1tpXS52YWx1ZSkg
eworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gInBhbm5pbmdNb2RlbDogJyIgKyBwYW5u
aW5nTW9kZWxzW2ldLnZhbHVlICsgIicgaXMgc2V0dGFibGUuIjsKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZSA9ICJwYW5uaW5nTW9kZWw6ICciICsgcGFubmluZ01vZGVsc1tpXS52YWx1
ZSArICInIHdhcyBub3QgY29ycmVjdGx5IHNldC4iOworICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQobWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSAiU2V0dGluZyBwYW5uaW5nTW9kZWwgdG8gJyIgKyBwYW5uaW5n
TW9kZWxzW2ldLnZhbHVlICsgIicgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24uIjsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBG
b3IgbGVnYWN5IHN1cHBvcnQsIHZlcmlmeSB0aGF0IHdlIGNhbiBzZXQgdGhlIC5wYW5uaW5nTW9k
ZWwgYXR0cmlidXRlIGFzIGFuIGludGVnZXIgdmFsdWUgYW5kCisgICAgLy8gdmVyaWZ5IHRoYXQg
dGhpcyB0cmFuc2xhdGVzIGNvcnJlY3RseSB0byB0aGUgV2ViSURMIGVudW0gdmFsdWUuCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwYW5uaW5nTW9kZWxzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmluZ01vZGVsc1tp
XS5pbnRlZ2VyVmFsdWU7CisgICAgICAgICAgICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0g
cGFubmluZ01vZGVsc1tpXS52YWx1ZSAmJiBwYW5uaW5nTW9kZWxzW2ldLmludGVnZXJWYWx1ZSA9
PT0gaSkgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gInBhbm5pbmdNb2RlbDogIiAr
IHBhbm5pbmdNb2RlbHNbaV0uaW50ZWdlclZhbHVlICsgIiBpcyBzZXR0YWJsZSB1c2luZyBsZWdh
Y3kgaW50ZWdlciB2YWx1ZS4iOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gInBh
bm5pbmdNb2RlbDogIiArIHBhbm5pbmdNb2RlbHNbaV0uaW50ZWdlclZhbHVlICsgIiB3YXMgbm90
IGNvcnJlY3RseSBzZXQgdXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuIjsKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIlNldHRpbmcgcGFubmluZ01vZGVsIHRv
ICIgKyBwYW5uaW5nTW9kZWxzW2ldLmludGVnZXJWYWx1ZSArICIgc2hvdWxkIG5vdCB0aHJvdyBl
eGNlcHRpb24gdXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuIjsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGF0IHRo
ZSAuZGlzdGFuY2VNb2RlbCBhdHRyaWJ1dGUgY2FuIGJlIHNldCB0byBhbGwgbGVnYWwgdmFsdWVz
LgorICAgIHZhciBkaXN0YW5jZU1vZGVscyA9IFt7dmFsdWU6ICJsaW5lYXIiLCBpbnRlZ2VyVmFs
dWU6IHBhbm5lci5MSU5FQVJfRElTVEFOQ0V9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7
dmFsdWU6ICJpbnZlcnNlIiwgaW50ZWdlclZhbHVlOiBwYW5uZXIuSU5WRVJTRV9ESVNUQU5DRX0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogImV4cG9uZW50aWFsIiwgaW50ZWdl
clZhbHVlOiBwYW5uZXIuRVhQT05FTlRJQUxfRElTVEFOQ0V9CisgICAgICAgICAgICAgICAgICAg
ICAgICBdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXN0YW5jZU1vZGVscy5sZW5ndGg7
ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcGFubmVyLmRpc3RhbmNlTW9kZWwg
PSBkaXN0YW5jZU1vZGVsc1tpXS52YWx1ZTsKKyAgICAgICAgICAgIGlmIChwYW5uZXIuZGlzdGFu
Y2VNb2RlbCA9PT0gZGlzdGFuY2VNb2RlbHNbaV0udmFsdWUpIHsKKyAgICAgICAgICAgICAgICB2
YXIgbWVzc2FnZSA9ICJkaXN0YW5jZU1vZGVsOiAnIiArIGRpc3RhbmNlTW9kZWxzW2ldLnZhbHVl
ICsgIicgaXMgc2V0dGFibGUuIjsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2Up
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9ICJk
aXN0YW5jZU1vZGVsOiAnIiArIGRpc3RhbmNlTW9kZWxzW2ldLnZhbHVlICsgIicgd2FzIG5vdCBj
b3JyZWN0bHkgc2V0LiI7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB2YXIgbWVzc2Fn
ZSA9ICJTZXR0aW5nIGRpc3RhbmNlTW9kZWwgdG8gJyIgKyBkaXN0YW5jZU1vZGVsc1tpXS52YWx1
ZSArICInIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uLiI7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRm9yIGxlZ2FjeSBzdXBw
b3J0LCB2ZXJpZnkgdGhhdCB3ZSBjYW4gc2V0IHRoZSAuZGlzdGFuY2VNb2RlbCBhdHRyaWJ1dGUg
YXMgYW4gaW50ZWdlciB2YWx1ZSBhbmQKKyAgICAvLyB2ZXJpZnkgdGhhdCB0aGlzIHRyYW5zbGF0
ZXMgY29ycmVjdGx5IHRvIHRoZSBXZWJJREwgZW51bSB2YWx1ZS4KKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRpc3RhbmNlTW9kZWxzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9IGRpc3RhbmNlTW9kZWxzW2ldLmludGVnZXJW
YWx1ZTsKKyAgICAgICAgICAgIGlmIChwYW5uZXIuZGlzdGFuY2VNb2RlbCA9PT0gZGlzdGFuY2VN
b2RlbHNbaV0udmFsdWUgJiYgZGlzdGFuY2VNb2RlbHNbaV0uaW50ZWdlclZhbHVlID09PSBpKSB7
CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAiZGlzdGFuY2VNb2RlbDogIiArIGRpc3Rh
bmNlTW9kZWxzW2ldLmludGVnZXJWYWx1ZSArICIgaXMgc2V0dGFibGUgdXNpbmcgbGVnYWN5IGlu
dGVnZXIgdmFsdWUuIjsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9ICJkaXN0YW5j
ZU1vZGVsOiAiICsgZGlzdGFuY2VNb2RlbHNbaV0uaW50ZWdlclZhbHVlICsgIiB3YXMgbm90IGNv
cnJlY3RseSBzZXQgdXNpbmcgbGVnYWN5IGludGVnZXIgdmFsdWUuIjsKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIlNldHRpbmcgZGlzdGFuY2VNb2RlbCB0byAi
ICsgZGlzdGFuY2VNb2RlbHNbaV0uaW50ZWdlclZhbHVlICsgIiBzaG91bGQgbm90IHRocm93IGV4
Y2VwdGlvbiB1c2luZyBsZWdhY3kgaW50ZWdlciB2YWx1ZS4iOworICAgICAgICAgICAgdGVzdEZh
aWxlZChtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENoZWNrIHRoYXQgd2Ug
dGhyb3cgYSBUeXBlRXJyb3IgZm9yIGlsbGVnYWwgLmRpc3RhbmNlTW9kZWwgdmFsdWVzLgorICAg
IHNob3VsZFRocm93VHlwZUVycm9yKGZ1bmN0aW9uKCkgeyBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9
ICJ4eXoxMjM0OWpma3NkIjsgfSwgIlNldHRpbmcgLnR5cGUgdG8gaWxsZWdhbCBzdHJpbmcgdmFs
dWUiKTsKKyAgICBzaG91bGRUaHJvd1R5cGVFcnJvcihmdW5jdGlvbigpIHsgcGFubmVyLmRpc3Rh
bmNlTW9kZWwgPSBuZXcgRmxvYXQzMkFycmF5KDEpOyB9LCAiU2V0dGluZyAudHlwZSB0byBpbGxl
Z2FsIHR5cGUgb2YgRmxvYXQzMkFycmF5Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
cnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvYmlxdWFkLXRlc3RpbmcuanMgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvYmlxdWFkLXRlc3RpbmcuanMKaW5kZXggOTdi
YzllOTIwMTZiODA4NWZhNmMwMWM0ZTM4NTdlMTYxMzU1Y2I4MS4uMDI3YWYxMWE5NzczMzZmMzhh
NDY3NzAxMTM2OTIxN2NkZThhNDlkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
cmVzb3VyY2VzL2JpcXVhZC10ZXN0aW5nLmpzCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jl
c291cmNlcy9iaXF1YWQtdGVzdGluZy5qcwpAQCAtMzY3LDYgKzM2NywxNSBAQCB2YXIgZmlsdGVy
VHlwZU5hbWUgPSBbIkxvd3Bhc3MgZmlsdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAiTm90
Y2ggZmlsdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAiQWxscGFzcyBmaWx0ZXIiXTsKIAor
dmFyIGZpbHRlclR5cGVJbmRleCA9IHsibG93cGFzcyI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICJoaWdocGFzcyI6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICJiYW5kcGFzcyI6IDIs
CisgICAgICAgICAgICAgICAgICAgICAgICJsb3dzaGVsZiI6IDMsCisgICAgICAgICAgICAgICAg
ICAgICAgICJoaWdoc2hlbGYiOiA0LAorICAgICAgICAgICAgICAgICAgICAgICAicGVha2luZyI6
IDUsCisgICAgICAgICAgICAgICAgICAgICAgICJub3RjaCI6IDYsCisgICAgICAgICAgICAgICAg
ICAgICAgICJhbGxwYXNzIjogN307CisKIGZ1bmN0aW9uIGNyZWF0ZUZpbHRlcihmaWx0ZXJUeXBl
LCBmcmVxLCBxLCBnYWluKSB7CiAgICAgcmV0dXJuIGZpbHRlckNyZWF0b3JGdW5jdGlvbltmaWx0
ZXJUeXBlXShmcmVxLCBxLCBnYWluKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL3Jlc291cmNlcy9kaXN0YW5jZS1tb2RlbC10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vcmVzb3VyY2VzL2Rpc3RhbmNlLW1vZGVsLXRlc3RpbmcuanMKaW5kZXggMTI5ZWI1NWVi
YzdiODJiYWQ1N2MyMThlOTQwYzZmNjBiOWY3NWFjOC4uOTdmMmViYTVmZTU0MTBhYzg5OTI2NTVl
ODkwY2MwZGE5ZDc1NzdjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3Vy
Y2VzL2Rpc3RhbmNlLW1vZGVsLXRlc3RpbmcuanMKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
cmVzb3VyY2VzL2Rpc3RhbmNlLW1vZGVsLXRlc3RpbmcuanMKQEAgLTU1LDYgKzU1LDcgQEAgZnVu
Y3Rpb24gZXhwb25lbnRpYWxEaXN0YW5jZShwYW5uZXIsIHgsIHksIHopIHsKIC8vIFRoaXMgYXJy
YXkgbXVzdCBiZSBhcnJhbmdlZCBpbiB0aGUgbnVtZXJpYyBvcmRlciBvZiB0aGUgZGlzdGFuY2UK
IC8vIG1vZGVsIHZhbHVlcy4KIHZhciBkaXN0YW5jZU1vZGVsRnVuY3Rpb24gPSBbbGluZWFyRGlz
dGFuY2UsIGludmVyc2VEaXN0YW5jZSwgZXhwb25lbnRpYWxEaXN0YW5jZV07Cit2YXIgZGlzdGFu
Y2VNb2RlbEluZGV4ID0geyJsaW5lYXIiOiAwLCAiaW52ZXJzZSI6IDEsICJleHBvbmVudGlhbCI6
IDJ9OwogCiBmdW5jdGlvbiBjcmVhdGVHcmFwaChjb250ZXh0LCBkaXN0YW5jZU1vZGVsLCBub2Rl
Q291bnQpIHsKICAgICBidWZmZXJTb3VyY2UgPSBuZXcgQXJyYXkobm9kZUNvdW50KTsKQEAgLTgz
LDcgKzg0LDcgQEAgZnVuY3Rpb24gY3JlYXRlR3JhcGgoY29udGV4dCwgZGlzdGFuY2VNb2RlbCwg
bm9kZUNvdW50KSB7CiAgICAgICAgIGJ1ZmZlclNvdXJjZVtrXS5idWZmZXIgPSBpbXB1bHNlOwog
CiAgICAgICAgIHBhbm5lcltrXSA9IGNvbnRleHQuY3JlYXRlUGFubmVyKCk7Ci0gICAgICAgIHBh
bm5lcltrXS5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuRVFVQUxQT1dFUjsKKyAgICAgICAgcGFubmVy
W2tdLnBhbm5pbmdNb2RlbCA9ICJlcXVhbHBvd2VyIjsKICAgICAgICAgcGFubmVyW2tdLmRpc3Rh
bmNlTW9kZWwgPSBkaXN0YW5jZU1vZGVsOwogCiAgICAgICAgIHZhciBkaXN0YW5jZVN0ZXAgPSAo
cGFubmVyW2tdLm1heERpc3RhbmNlIC0gcGFubmVyW2tdLnJlZkRpc3RhbmNlKSAvIG5vZGVDb3Vu
dDsKQEAgLTE1MCw3ICsxNTEsOSBAQCBmdW5jdGlvbiBjaGVja0Rpc3RhbmNlUmVzdWx0KG1vZGVs
LCBleHBlY3RlZE1vZGVsKSB7CiAgICAgICAgIC8vIGRpc3RhbmNlLgogICAgICAgICBmb3IgKHZh
ciBrID0gMDsgayA8IHJlbmRlcmVkRGF0YS5sZW5ndGg7ICsraykgewogICAgICAgICAgICAgaWYg
KHJlbmRlcmVkRGF0YVtrXSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlRnVu
Y3Rpb24gPSBkaXN0YW5jZU1vZGVsRnVuY3Rpb25bcGFubmVyW2ltcHVsc2VDb3VudF0uZGlzdGFu
Y2VNb2RlbF07CisgICAgICAgICAgICAgICAgLy8gQ29udmVydCBmcm9tIHN0cmluZyB0byBpbmRl
eC4KKyAgICAgICAgICAgICAgICB2YXIgbW9kZWxJbmRleCA9IGRpc3RhbmNlTW9kZWxJbmRleFtw
YW5uZXJbaW1wdWxzZUNvdW50XS5kaXN0YW5jZU1vZGVsXTsKKyAgICAgICAgICAgICAgICB2YXIg
ZGlzdGFuY2VGdW5jdGlvbiA9IGRpc3RhbmNlTW9kZWxGdW5jdGlvblttb2RlbEluZGV4XTsKICAg
ICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWQgPSBkaXN0YW5jZUZ1bmN0aW9uKHBhbm5lcltpbXB1
bHNlQ291bnRdLCAwLCAwLCBwb3NpdGlvbltpbXB1bHNlQ291bnRdKTsKIAogICAgICAgICAgICAg
ICAgIC8vIEFkanVzdCBmb3IgdGhlIGNlbnRlci1wYW5uaW5nIG9mIHRoZSBFUVVBTFBPV0VSIHBh
bm5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9wYW5uZXIt
bW9kZWwtdGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9wYW5uZXIt
bW9kZWwtdGVzdGluZy5qcwppbmRleCAxODg4ODAwZmUxMGM4NjBmN2M1MTIxZWY5YjcxZjhmZWY1
MjIzZTNhLi41OTg1NDllY2NkOGQ5MDI1ZDM4NTA3Mzc1Zjg5MmUyOGMzZDdhMGI2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvcGFubmVyLW1vZGVsLXRlc3Rpbmcu
anMKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL3Bhbm5lci1tb2RlbC10ZXN0
aW5nLmpzCkBAIC00Niw4ICs0Niw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUdyYXBoKGNvbnRleHQsIG5v
ZGVDb3VudCkgewogICAgICAgICBidWZmZXJTb3VyY2Vba10uYnVmZmVyID0gaW1wdWxzZTsKIAog
ICAgICAgICBwYW5uZXJba10gPSBjb250ZXh0LmNyZWF0ZVBhbm5lcigpOwotICAgICAgICBwYW5u
ZXJba10ucGFubmluZ01vZGVsID0gcGFubmVyLkVRVUFMUE9XRVI7Ci0gICAgICAgIHBhbm5lcltr
XS5kaXN0YW5jZU1vZGVsID0gMDsgLy8gTGluZWFyIGRpc3RhbmNlIG1vZGVsLgorICAgICAgICBw
YW5uZXJba10ucGFubmluZ01vZGVsID0gImVxdWFscG93ZXIiOworICAgICAgICBwYW5uZXJba10u
ZGlzdGFuY2VNb2RlbCA9ICJsaW5lYXIiOwogCiAgICAgICAgIHZhciBhbmdsZSA9IGFuZ2xlU3Rl
cCAqIGs7CiAgICAgICAgIHBvc2l0aW9uW2tdID0ge2FuZ2xlIDogYW5nbGUsIHggOiBNYXRoLmNv
cyhhbmdsZSksIHogOiBNYXRoLnNpbihhbmdsZSl9Owo=
</data>
<flag name="review"
          id="198629"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
      

    </bug>

</bugzilla>