<?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>165023</bug_id>
          
          <creation_ts>2016-11-21 21:56:49 -0800</creation_ts>
          <short_desc>Make normal case fast in the input element limitString function</short_desc>
          <delta_ts>2016-11-22 10:26:29 -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>Forms</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253337</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-21 21:56:49 -0800</bug_when>
    <thetext>Make normal case fast in the input element limitString function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253339</commentid>
    <comment_count>1</comment_count>
      <attachid>295326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-21 22:13:21 -0800</bug_when>
    <thetext>Created attachment 295326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253346</commentid>
    <comment_count>2</comment_count>
      <attachid>295326</attachid>
    <who name="">mitz</who>
    <bug_when>2016-11-21 22:36:09 -0800</bug_when>
    <thetext>Comment on attachment 295326
Patch

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

&gt; Source/WTF/ChangeLog:27
&gt; +        class and not repeat UAX16 in the names of the modes. Initial data members

UAX14

&gt; Source/WebCore/html/TextFieldInputType.cpp:389
&gt; +    auto firstBadCharacterIndex = string.find([] (UChar character) {

Maybe if we knew why we’re doing this we’d use an adjective other than “bad” here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253385</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-22 09:16:15 -0800</bug_when>
    <thetext>Committed r208963: &lt;http://trac.webkit.org/changeset/208963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253396</commentid>
    <comment_count>4</comment_count>
      <attachid>295326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-22 10:26:29 -0800</bug_when>
    <thetext>Comment on attachment 295326
Patch

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

&gt;&gt; Source/WebCore/html/TextFieldInputType.cpp:389
&gt;&gt; +    auto firstBadCharacterIndex = string.find([] (UChar character) {
&gt; 
&gt; Maybe if we knew why we’re doing this we’d use an adjective other than “bad” here.

I renamed to firstNonTabControlCharacterIndex.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295326</attachid>
            <date>2016-11-21 22:13:21 -0800</date>
            <delta_ts>2016-11-21 22:36:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165023-20161121221308.patch</filename>
            <type>text/plain</type>
            <size>47706</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcyY2Q0NzgyMTFiZWJiMjMxM2QzZmI5
ZDNmYzczMDFmMjczOTRkNTYuLjlmNGQzNTY0NzU5MTQxNGE0YmI2YTYxYjIzMjA3M2M1YzNhODY0
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTYtMTEtMjEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugbm9ybWFsIGNhc2UgZmFzdCBpbiB0aGUgaW5wdXQg
ZWxlbWVudCBsaW1pdFN0cmluZyBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
aDogUmVtb3ZlZCBtYW55IHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICBTaW1wbGlmaWVkIHRo
ZSBjbGFzcyBhIGJpdCwgcmVtb3Zpbmcgc29tZSBleHRyYSBkZWZpbml0aW9ucy4KKyAgICAgICAg
KFdURjo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKTogVXNlIE5ldmVyRGVzdHJv
eWVkIGluc3RlYWQgb2YgbmV3LgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6
Om1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKTogUmVpbXBsZW1lbnRlZCBpbgorICAgICAgICBh
IHNpbXBsZXIgd2F5IHdpdGhvdXQgdXNpbmcgU3RyaW5nQnVpbGRlci4gQWxzbyB1cGRhdGVkIGZv
ciBjaGFuZ2UgdG8KKyAgICAgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlLgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnB1dCk6IFVzZSB1bmNoZWNrZWRBcHBlbmQgc2luY2Ug
dGhlIGNvZGUgaXMKKyAgICAgICAgY2FyZWZ1bCB0byBvbmx5IHVzZSB0aGUgaW5saW5lIGNhcGFj
aXR5IGluIHRoZSB2ZWN0b3IuCisKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5jcHA6IE1vdmVkIHNvbWUgaW5jbHVkZXMgaW4gaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAg
ICAgIChXVEY6Om1hcExpbmVJdGVyYXRvck1vZGVUb1J1bGVzKTogVXBkYXRlZCBmb3IgY2hhbmdl
IHRvIExpbmVCcmVha0l0ZXJhdG9yTW9kZS4KKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChXVEY6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOiBBZGRl
ZCBhIGZhc3QgcGF0aCBmb3IgYWxsIDgtYml0IHN0cmluZ3M7IGRvbid0CisgICAgICAgIHVzZSBJ
Q1UgZm9yIHRoYXQgY2FzZSwgZXZlbiBpZiB0aGVyZSBpcyBhIENSIGNoYXJhY3RlciBpbiBpdC4K
KyAgICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6IEFkZGVkIGEg
ZmFzdCBwYXRoIGZvciBzdHJpbmdzIHRoYXQgYXJlCisgICAgICAgIHNob3J0IGVub3VnaCB0byBl
bnRpcmVseSBmaXQgd2l0aG91dCBldmVuIGxvb2tpbmcgYXQgdGhlIGNoYXJhY3RlcnM7IHRoYXQn
cyBhCisgICAgICAgIGNhc2Ugd2UgbGlrZWx5IGhpdCBhbGwgdGhlIHRpbWUuIEFsc28gYWRkZWQg
YSBmYXN0IHBhdGggZm9yIGFsbCA4LWJpdCBzdHJpbmdzLgorCisgICAgICAgICogd3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaDogQ2hhbmdlZCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgdG8gYmUg
YW4gZW51bQorICAgICAgICBjbGFzcyBhbmQgbm90IHJlcGVhdCBVQVgxNiBpbiB0aGUgbmFtZXMg
b2YgdGhlIG1vZGVzLiBJbml0aWFsIGRhdGEgbWVtYmVycworICAgICAgICBpbiB0aGUgY2xhc3Mg
ZGVmaW5pdGlvbiByYXRoZXIgdGhhbiB0aGUgY29uc3RydWN0b3JzLgorCiAyMDE2LTExLTE4ICBK
ZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcnVudGltZSBm
bGFnIHRvIGVuYWJsZSBwb2ludGVyIGxvY2suIEVuYWJsZSBwb2ludGVyIGxvY2sgZmVhdHVyZSBm
b3IgbWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMwNGQ0ZTg5NWM3MmZlYzE1YzBmNzVkNWY2OWU5YmE0ZDYw
YWEwZTUuLjk5OTg5ZTVkYmE5MTk5ZTE3OWIyYThlYTVhYzhlZDY2ZDk0YzJkZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0xMS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBub3JtYWwgY2FzZSBmYXN0IGluIHRoZSBpbnB1dCBlbGVt
ZW50IGxpbWl0U3RyaW5nIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjUwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIHJ1bm5pbmcgU3BlZWRvbWV0ZXIsIHRoZSBsaW1pdExlbmd0
aCBmdW5jdGlvbiB3YXMgc2hvd2luZyB1cCBhcyBob3QuCisgICAgICAgIEZpeGVkIGEgY291cGxl
IG9idmlvdXMgcHJvYmxlbXMgd2l0aCB0aGF0IGZ1bmN0aW9uJ3MgcGVyZm9ybWFuY2UuCisKKyAg
ICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0FTQ0lJTGluZUJyZWFrKTogRGVsZXRlZC4gVGhlIGlzSFRNTExpbmVCcmVhayBmdW5jdGlvbiBk
b2VzCisgICAgICAgIHRoZSBzYW1lIHRoaW5nLCBidXQgZmFzdGVyLgorICAgICAgICAoV2ViQ29y
ZTo6bGltaXRMZW5ndGgpOiBBZGRlZCBhIEZJWE1FIGNvbW1lbnQgZXhwbGFpbmluZyB0aGF0IHRo
ZSBmdW5jdGlvbgorICAgICAgICBpc24ndCByZWFsbHkgYSBnb29kIGlkZWEuIERvbid0IGNhbGwg
dGhyb3VnaCB0byBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzCisgICAgICAgIGF0IGFs
bCBmb3IgOC1iaXQgc3RyaW5ncyBzaW5jZSB3ZSBkb24ndCBhbGxvdyBDUiBvciBMRiBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmcKKyAgICAgICAgYW55d2F5LCBzbyB0aGVyZSBhcmUgbm8gZ3JhcGhl
bWUgY2x1c3RlcnMgbW9yZSB0aGFuIGEgc2luZ2xlIGNvZGUgdW5pdC4gUmVtb3ZlZAorICAgICAg
ICBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbGVuZ3RoIGlzIHRoZSBzdHJpbmcncyBsZW5ndGggdGhh
dCBTdHJpbmc6OmxlZnQgYWxyZWFkeSBkb2VzLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKTogVXNlIGlzSFRNTExpbmVCcmVhayBpbnN0ZWFkIG9m
CisgICAgICAgIGlzQVNDSUlMaW5lQnJlYWsuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KTogRGl0dG8uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDogVXNlIGF1dG8gYSBsb3QgbW9yZSBy
YXRoZXIgdGhhbiB3cml0aW5nIG91dAorICAgICAgICBSZXRhaW5QdHIuCisgICAgICAgIChXZWJD
b3JlOjp0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbSk6IFJlbW92ZWQgdW5uZWVkZWQg
c3BlY2lhbCBjYXNlIGZvcgorICAgICAgICBlbXB0eSBzdHJpbmdzLiBSZW1vdmVkIHVubmVlZGVk
IHN0cmluZyB3aXRoIHRoZSBlbGxpcHNpcyBjaGFyYWN0ZXIgaW4gaXQsIHNpbmNlCisgICAgICAg
IHRoZSBtYWtlU3RyaW5nIGZ1bmN0aW9uIGFscmVhZHkga25vd3MgaG93IHRvIGFwcGVuZCBhIGNo
YXJhY3RlciB0byBhIHN0cmluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcExpbmVCcmVha1RvSXRlcmF0b3JNb2RlKTogVXBkYXRl
ZCBmb3IgY2hhbmdlIHRvIExpbmVCcmVha0l0ZXJhdG9yTW9kZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRleHRGcmFnbWVudEl0ZXJhdG9yOjpuZXh0QnJlYWth
YmxlUG9zaXRpb24pOiBEaXR0by4KKwogMjAxNi0xMS0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8
YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgRGlzYWJsZSAjbGluZSBtYXJrZXJzIGluIGJp
c29uIG91dHB1dCBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaAppbmRleCBkNzY2MDdkMmE5M2Q1ZjhiMTA0NDcwZWQ4N2M0NGQ5Y2Nm
MDg5MzE5Li4xNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZhYTIzNzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTIzLDYz
ICsyMyw0OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVV9oCi0jZGVmaW5lIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgotI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAogY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JQb29sIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShMaW5lQnJlYWtJdGVyYXRvclBvb2wpOwogcHVibGljOgotICAgIExpbmVC
cmVha0l0ZXJhdG9yUG9vbCgpIHsgfQorICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpID0gZGVm
YXVsdDsKIAogICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQog
ICAgIHsKLSAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0
b3JQb29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9y
UG9vbD47Ci0gICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4+IHBvb2w7Cisg
ICAgICAgIHJldHVybiAqcG9vbC5nZXQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgU3RyaW5nIG1h
a2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1ha2VMb2Nh
bGVXaXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUgbW9kZSkKICAgICB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgbG9jYWxlV2l0
aEtleXdvcmQ7Ci0gICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZChsb2NhbGUpOwotICAg
ICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJAYnJlYWs9Iik7CiAgICAgICAg
IHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgotICAgICAgICAg
ICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgibG9vc2UiKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsOgot
ICAgICAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgibm9ybWFsIik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgx
NFN0cmljdDoKLSAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoInN0
cmljdCIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0
b3JNb2RlOjpEZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKKyAgICAgICAgY2Fz
ZSBMaW5lQnJlYWtJdGVyYXRvck1vZGU6Okxvb3NlOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcobG9jYWxlLCAiQGJyZWFrPWxvb3NlIik7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRl
cmF0b3JNb2RlOjpOb3JtYWw6CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhsb2NhbGUs
ICJAYnJlYWs9bm9ybWFsIik7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpT
dHJpY3Q6CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhsb2NhbGUsICJAYnJlYWs9c3Ry
aWN0Iik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGxvY2FsZVdpdGhLZXl3b3JkLnRvU3Ry
aW5nKCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbG9j
YWxlOwogICAgIH0KIAogICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKICAg
ICB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7
Ci0gICAgICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQotICAgICAg
ICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbG9jYWxlOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9j
YWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUsIG1vZGUpOworICAgICAgICBhdXRvIGxvY2FsZVdp
dGhPcHRpb25hbEJyZWFrS2V5d29yZCA9IG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGxvY2Fs
ZSwgbW9kZSk7CiAKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gMDsKKyAg
ICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gbnVsbHB0cjsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvb2wuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlm
IChtX3Bvb2xbaV0uZmlyc3QgPT0gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkKSB7CiAg
ICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBtX3Bvb2xbaV0uc2Vjb25kOwpAQCAtOTEsMzcgKzc2
LDMxIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFpdGVyYXRvcikgewogICAgICAgICAgICAgaXRl
cmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3
b3JkLCBtb2RlLCBpc0NKSyk7CiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAKICAgICAgICAgQVNTRVJUKCFtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRv
cikpOwotICAgICAgICBtX3ZlbmRlZEl0ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhP
cHRpb25hbEJyZWFrS2V5d29yZCk7CisgICAgICAgIG1fdmVuZGVkSXRlcmF0b3JzLmFkZChpdGVy
YXRvciwgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkKTsKICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yOwogICAgIH0KIAogICAgIHZvaWQgcHV0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9BUkcoaXRlcmF0b3IsIG1fdmVuZGVkSXRlcmF0b3Jz
LmNvbnRhaW5zKGl0ZXJhdG9yKSk7Ci0KKyAgICAgICAgQVNTRVJUKG1fdmVuZGVkSXRlcmF0b3Jz
LmNvbnRhaW5zKGl0ZXJhdG9yKSk7CiAgICAgICAgIGlmIChtX3Bvb2wuc2l6ZSgpID09IGNhcGFj
aXR5KSB7CiAgICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKG1fcG9vbFswXS5zZWNv
bmQpOwogICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKICAgICAgICAgfQotCi0gICAgICAg
IG1fcG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMudGFrZShpdGVyYXRvciksIGl0
ZXJhdG9yKSk7CisgICAgICAgIG1fcG9vbC51bmNoZWNrZWRBcHBlbmQoeyBtX3ZlbmRlZEl0ZXJh
dG9ycy50YWtlKGl0ZXJhdG9yKSwgaXRlcmF0b3IgfSk7CiAgICAgfQogCiBwcml2YXRlOgotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGNhcGFjaXR5ID0gNDsKIAotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEF0b21pY1N0cmlu
ZywgVGV4dEJyZWFrSXRlcmF0b3IqPiBFbnRyeTsKLSAgICB0eXBlZGVmIFZlY3RvcjxFbnRyeSwg
Y2FwYWNpdHk+IFBvb2w7Ci0gICAgUG9vbCBtX3Bvb2w7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxB
dG9taWNTdHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yKj4sIGNhcGFjaXR5PiBtX3Bvb2w7CiAgICAg
SGFzaE1hcDxUZXh0QnJlYWtJdGVyYXRvciosIEF0b21pY1N0cmluZz4gbV92ZW5kZWRJdGVyYXRv
cnM7CiAKICAgICBmcmllbmQgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBv
b2w+OjpvcGVyYXRvciBMaW5lQnJlYWtJdGVyYXRvclBvb2wqKCk7CiB9OwogCiB9Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAppbmRleCBmYzcwYTc3
N2UzN2Q0ODNhYzY4MWE1M2EyZGRkODZjZGNlYjA2ZGUyLi5hOTg1Nzc3YzY2ODhlMWEwZmYzMmJk
NDlhNjMyMmNjYjdiZWUwNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIzLDExICsy
MywxMyBAQAogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJMaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVLmgiCiAjaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgogI2luY2x1ZGUgIlVU
ZXh0UHJvdmlkZXJVVEYxNi5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxtdXRleD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8dW5pY29kZS91YnJr
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAvLyBGSVhNRTogVGhp
cyBuZWVkcyBhIGJldHRlciBuYW1lCiAjZGVmaW5lIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAo
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTEwMCkpCkBAIC03MzQsMTYgKzczNiwxNiBAQCBzdGF0aWMgU3RyaW5n
IG1hcExpbmVJdGVyYXRvck1vZGVUb1J1bGVzKExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBi
b29sIGlzQ0pLKQogICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRQcm9sb2d1ZSk7CiAgICAg
cnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNEFzc2lnbm1lbnRzQmVmb3JlKTsKICAgICBzd2l0Y2gg
KG1vZGUpIHsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0OgorICAgIGNhc2Ug
TGluZUJyZWFrSXRlcmF0b3JNb2RlOjpEZWZhdWx0OgogICAgICAgICBydWxlc0J1aWxkZXIuYXBw
ZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbURlZmF1bHRDSksgOiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tRGVmYXVsdE5vbkNKSyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKKyAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9y
TW9kZTo6TG9vc2U6CiAgICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTG9vc2VDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTG9vc2VOb25D
SkspOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
Tm9ybWFsOgorICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpOb3JtYWw6CiAgICAgICAg
IHJ1bGVzQnVpbGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFs
Q0pLIDogdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbE5vbkNKSyk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRTdHJpY3Q6CisgICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGU6OlN0cmljdDoKICAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNzgzLDcg
Kzc4NSw3IEBAIFRleHRCcmVha0l0ZXJhdG9yKiBvcGVuTGluZUJyZWFrSXRlcmF0b3IoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0CiAgICAgVUJyZWFrSXRlcmF0b3IqIHVi
cmtJdGVyOwogICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBi
b29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOwotICAgIGlmIChtb2RlID09IExp
bmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJh
dG9yTW9kZTo6RGVmYXVsdCkKICAgICAgICAgdWJya0l0ZXIgPSB1YnJrX29wZW4oVUJSS19MSU5F
LCBsb2NhbGVJc0VtcHR5ID8gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkgOiBsb2NhbGUuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgMCwgMCwgJm9wZW5TdGF0dXMpOwogICAgIGVsc2UgewogICAg
ICAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKQEAgLTkwMiw0MCArOTA0LDU2IEBAIHVuc2ln
bmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgaWYgKCFzdHJp
bmdMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBF
eHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENSIExGCi0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSAmJiAhc3RyaW5nLmNvbnRhaW5zKCdccicpKQotICAgICAgICByZXR1cm4gc3RyaW5nTGVuZ3Ro
OworICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBpcyBD
UkxGLgorICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgYXV0byogY2hhcmFjdGVy
cyA9IHN0cmluZy5jaGFyYWN0ZXJzOCgpOworICAgICAgICB1bnNpZ25lZCBudW1DUkxGID0gMDsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHN0cmluZ0xlbmd0aDsgKytpKQorICAg
ICAgICAgICAgbnVtQ1JMRiArPSBjaGFyYWN0ZXJzW2kgLSAxXSA9PSAnXHInICYmIGNoYXJhY3Rl
cnNbaV0gPT0gJ1xuJzsKKyAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aCAtIG51bUNSTEY7Cisg
ICAgfQogCi0gICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChzdHJpbmcpOwot
ICAgIGlmICghaXQpCisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdGVyYXRv
ciB7IHN0cmluZyB9OworICAgIGlmICghaXRlcmF0b3IpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisgICAgfQogCi0gICAgdW5z
aWduZWQgbnVtID0gMDsKLSAgICB3aGlsZSAodGV4dEJyZWFrTmV4dChpdCkgIT0gVGV4dEJyZWFr
RG9uZSkKLSAgICAgICAgKytudW07Ci0gICAgcmV0dXJuIG51bTsKKyAgICB1bnNpZ25lZCBudW1H
cmFwaGVtZUNsdXN0ZXJzID0gMDsKKyAgICB3aGlsZSAodGV4dEJyZWFrTmV4dChpdGVyYXRvcikg
IT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgKytudW1HcmFwaGVtZUNsdXN0ZXJzOworICAgIHJl
dHVybiBudW1HcmFwaGVtZUNsdXN0ZXJzOwogfQogCi11bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHMsIHVuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMpCit1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmlu
Z1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVtZUNsdXN0ZXJzKQogewotICAgIHVuc2ln
bmVkIHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwogCi0gICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJl
dHVybiAwOworICAgIGlmIChzdHJpbmdMZW5ndGggPD0gbnVtR3JhcGhlbWVDbHVzdGVycykKKyAg
ICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKIAotICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0
ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBpcyBDUiBMRgotICAgIGlmIChzLmlzOEJpdCgpICYmICFz
LmNvbnRhaW5zKCdccicpKQotICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBu
dW1HcmFwaGVtZUNsdXN0ZXJzKTsKKyAgICAvLyBUaGUgb25seSBMYXRpbi0xIEV4dGVuZGVkIEdy
YXBoZW1lIENsdXN0ZXIgaXMgQ1JMRi4KKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7CisgICAg
ICAgIGF1dG8qIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAgICAgdW5z
aWduZWQgaSwgajsKKyAgICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1HcmFwaGVtZUNs
dXN0ZXJzICYmIGogKyAxIDwgc3RyaW5nTGVuZ3RoOyArK2ksICsraikKKyAgICAgICAgICAgIGog
Kz0gY2hhcmFjdGVyc1tqXSA9PSAnXHInICYmIGNoYXJhY3RlcnNbaiArIDFdID09ICdcbic7Cisg
ICAgICAgIHJldHVybiBqICsgKGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzICYmIGogPCBzdHJpbmdM
ZW5ndGgpOworICAgIH0KIAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQo
cyk7Ci0gICAgaWYgKCFpdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwg
bnVtR3JhcGhlbWVDbHVzdGVycyk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
ciBpdGVyYXRvciB7IHN0cmluZyB9OworICAgIGlmICghaXRlcmF0b3IpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisgICAgfQog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdyYXBoZW1lQ2x1c3RlcnM7ICsraSkg
ewotICAgICAgICBpZiAodGV4dEJyZWFrTmV4dChpdCkgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAg
ICAgaWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRCcmVha0RvbmUpIHsKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xl
bmd0aDsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gdGV4dEJyZWFrQ3VycmVudChpdCk7
CisgICAgcmV0dXJuIHRleHRCcmVha0N1cnJlbnQoaXRlcmF0b3IpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBkNjk4
NzcxN2M5ZmY2YTRjMjUyZGRhM2VmYmUyNTIzYTIxMTU1MzVmLi44YWZiNTU4MDIwMTAwMmJiZDJl
ZGQ1NzU2NWJjMzQxYjFhMDA2YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBMYXJzIEtu
b2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0xOSwxMCArMTksOCBAQAogICoKICAqLwogCi0jaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9y
X2gKLSNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzEsMTIgKzI5LDcgQEAgY2xhc3MgVGV4dEJyZWFr
SXRlcmF0b3I7CiAKIC8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkg
dW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNx
dWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCi1lbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7Ci0g
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCi0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTRMb29zZSwKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKLSAgICBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKLX07CitlbnVtIGNsYXNzIExpbmVCcmVh
a0l0ZXJhdG9yTW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmljdCB9OwogCiAvLyBU
aGlzIGlzIHNpbWlsYXIgdG8gY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGluIG1vc3QgY2FzZXMs
IGJ1dCBpcyBzdWJqZWN0IHRvCiAvLyBwbGF0Zm9ybSBVSSBjb252ZW50aW9ucy4gT25lIG5vdGFi
bGUgZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQKQEAgLTYyLDMyICs1NSwyNCBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVy
YXRvciosIGludCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJl
YWtJdGVyYXRvciosIGludCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dvcmRUZXh0QnJl
YWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKIAotY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsK
K2NvbnN0ZXhwciBpbnQgVGV4dEJyZWFrRG9uZSA9IC0xOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogY2xhc3MgTGF6eUxpbmVC
cmVha0l0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAg
ICAgICA6IG1faXRlcmF0b3IobnVsbHB0cikKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4
dChudWxscHRyKQotICAgICAgICAsIG1fbW9kZShMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkK
LSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCgwKQotICAgICAgICAsIG1faXND
SksoZmFsc2UpCiAgICAgewogICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOwogICAgIH0KIAot
ICAgIExhenlMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlID0gQXRvbWljU3RyaW5nKCksIExpbmVCcmVha0l0ZXJhdG9yTW9k
ZSBtb2RlID0gTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpCisgICAgZXhwbGljaXQgTGF6eUxp
bmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUgPSBM
aW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1bHQpCiAgICAgICAgIDogbV9zdHJpbmdWaWV3KHN0
cmluZ1ZpZXcpCiAgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQotICAgICAgICAsIG1faXRlcmF0
b3IobnVsbHB0cikKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQogICAg
ICAgICAsIG1fbW9kZShtb2RlKQotICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3Ro
KDApCisgICAgICAgICwgbV9pc0NKSyhpc0NKS0xvY2FsZShsb2NhbGUpKQogICAgIHsKICAgICAg
ICAgcmVzZXRQcmlvckNvbnRleHQoKTsKLSAgICAgICAgbV9pc0NKSyA9IGlzQ0pLTG9jYWxlKGxv
Y2FsZSk7CiAgICAgfQogCiAgICAgfkxhenlMaW5lQnJlYWtJdGVyYXRvcigpCkBAIC05Nyw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZ1ZpZXc7IH0KLSAgICBib29sIGlzTG9vc2VDSktNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NKSyAmJiBtX21vZGUgPT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFY
MTRMb29zZTsgfQorICAgIGJvb2wgaXNMb29zZUNKS01vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
Q0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGU6Okxvb3NlOyB9CiAKICAgICBV
Q2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKICAgICB7CkBAIC0xNzYsMTUgKzE2MSwxNSBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmlv
ckNvbnRleHRDYXBhY2l0eSA9IDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBwcmlv
ckNvbnRleHRDYXBhY2l0eSA9IDI7CiAgICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7CiAgICAg
QXRvbWljU3RyaW5nIG1fbG9jYWxlOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9y
OwotICAgIGNvbnN0IFVDaGFyKiBtX2NhY2hlZFByaW9yQ29udGV4dDsKLSAgICBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUgbV9tb2RlOwotICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVu
Z3RoOworICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yIHsgbnVsbHB0ciB9OworICAg
IGNvbnN0IFVDaGFyKiBtX2NhY2hlZFByaW9yQ29udGV4dCB7IG51bGxwdHIgfTsKKyAgICBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbV9tb2RlIHsgTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpEZWZhdWx0
IH07CisgICAgdW5zaWduZWQgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGggeyAwIH07CiAgICAg
VUNoYXIgbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHldOwotICAgIGJvb2wgbV9p
c0NKSzsKKyAgICBib29sIG1faXNDSksgeyBmYWxzZSB9OwogfTsKIAogLy8gSXRlcmF0ZXMgb3Zl
ciAiZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCkBA
IC0yMTAsMTcgKzE5NSwxNSBAQCBwcml2YXRlOgogLy8gb2YgYSBub24tY29tYmluaW5nIGNoYXJh
Y3RlciBhbmQgZm9sbG93aW5nIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGlzCiAvLyBjb3VudGVkIGFz
IDEgZ3JhcGhlbWUgY2x1c3Rlci4KIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1HcmFw
aGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcpOworCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyB3aGljaCB3aWxsIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bwogLy8gdGhlIHNwZWNp
ZmllZCBncmFwaGVtZSBjbHVzdGVyIGxlbmd0aC4KLVdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25l
ZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNp
Z25lZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhl
bWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25lZCk7CiAKIH0KIAotdXNpbmcgV1RGOjpMaW5l
QnJlYWtJdGVyYXRvck1vZGU7Ci11c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
OwogdXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OkxpbmVCcmVh
a0l0ZXJhdG9yTW9kZTsKIHVzaW5nIFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cjsKIHVzaW5nIFdURjo6VGV4dEJyZWFrRG9uZTsKIHVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0
b3I7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CmluZGV4IGViMmEzYzVmYzU3NzY3YWEwMDU0NjNjZTJjYjJhMGIzYTZlOTJhMjEuLmNhMjM5N2My
NjIzN2JlMmUzN2UwMzY1NDNiNjFhOTg2Mzc5ZTY2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJGcmFt
ZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJO
b2RlUmVuZGVyU3R5bGUuaCIKQEAgLTM3OCwyMiArMzc5LDIzIEBAIGJvb2wgVGV4dEZpZWxkSW5w
dXRUeXBlOjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIGlzQVNDSUlMaW5lQnJlYWsoVUNoYXIgYykKLXsKLSAgICByZXR1cm4g
YyA9PSAnXHInIHx8IGMgPT0gJ1xuJzsKLX0KLQotc3RhdGljIFN0cmluZyBsaW1pdExlbmd0aChj
b25zdCBTdHJpbmcmIHN0cmluZywgaW50IG1heExlbmd0aCkKLXsKLSAgICB1bnNpZ25lZCBuZXdM
ZW5ndGggPSBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKHN0cmluZywgbWF4TGVuZ3Ro
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmV3TGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgVUNoYXIgY3VycmVudCA9IHN0cmluZ1tpXTsKLSAgICAgICAgaWYgKGN1cnJlbnQg
PCAnICcgJiYgY3VycmVudCAhPSAnXHQnKSB7Ci0gICAgICAgICAgICBuZXdMZW5ndGggPSBpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5ld0xlbmd0
aCA8IHN0cmluZy5sZW5ndGgoKSA/IHN0cmluZy5sZWZ0KG5ld0xlbmd0aCkgOiBzdHJpbmc7Cisv
LyBGSVhNRTogVGhlIG5hbWUgb2YgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IG1ha2UgY2xlYXIgdGhl
IHR3byBqb2JzIGl0IGRvZXM6CisvLyAxKSBMaW1pdHMgdGhlIHN0cmluZyB0byBhIHBhcnRpY3Vs
YXIgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLgorLy8gMikgVHJ1bmNhdGVzIHRoZSBzdHJp
bmcgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciB3aGljaCBpcyBhIGNvbnRyb2wgY2hhcmFjdGVyIG90
aGVyIHRoYW4gdGFiLgorLy8gRklYTUU6IFRleHRGaWVsZElucHV0VHlwZTo6c2FuaXRpemVWYWx1
ZSBkb2Vzbid0IG5lZWQgYSBsaW1pdCBvbiBncmFwaGVtZSBjbHVzdGVycy4gQSBsaW1pdCBvbiBj
b2RlIHVuaXRzIHdvdWxkIGRvLgorLy8gRklYTUU6IFdoZXJlIGRvZXMgdGhlICJ0cnVuY2F0ZSBh
dCBmaXJzdCBjb250cm9sIGNoYXJhY3RlciIgcnVsZSBjb21lIGZyb20/CitzdGF0aWMgU3RyaW5n
IGxpbWl0TGVuZ3RoKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBtYXhMZW5ndGgpCit7
CisgICAgYXV0byBmaXJzdEJhZENoYXJhY3RlckluZGV4ID0gc3RyaW5nLmZpbmQoW10gKFVDaGFy
IGNoYXJhY3RlcikgeworICAgICAgICByZXR1cm4gY2hhcmFjdGVyIDwgJyAnICYmIGNoYXJhY3Rl
ciAhPSAnXHQnOworICAgIH0pOworICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyB7IHN0cmluZyB9
OworICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IGZpcnN0QmFkQ2hhcmFjdGVySW5kZXggPT0gbm90
Rm91bmQgPyBzdHJpbmdWaWV3Lmxlbmd0aCgpIDogZmlyc3RCYWRDaGFyYWN0ZXJJbmRleDsKKyAg
ICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKKyAgICAgICAgbmV3TGVuZ3RoID0gc3RkOjptaW4o
bmV3TGVuZ3RoLCBtYXhMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbmV3TGVuZ3RoID0gbnVt
Q2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhzdHJpbmdWaWV3LnN1YnN0cmluZygwLCBuZXdM
ZW5ndGgpLCBtYXhMZW5ndGgpOworICAgIHJldHVybiBzdHJpbmcubGVmdChuZXdMZW5ndGgpOwog
fQogCiBzdGF0aWMgU3RyaW5nIGF1dG9GaWxsQnV0dG9uVHlwZVRvQWNjZXNzaWJpbGl0eUxhYmVs
KEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUpCkBAIC00NDEsNyArNDQzLDcg
QEAgc3RhdGljIGJvb2wgaXNBdXRvRmlsbEJ1dHRvblR5cGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0cmlidXRlLCBBdXRvRmlsbEIKIAogU3RyaW5nIFRleHRGaWVsZElucHV0VHlwZTo6
c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGxpbWl0TGVuZ3RoKHByb3Bvc2VkVmFsdWUucmVtb3ZlQ2hhcmFjdGVycyhpc0FTQ0lJ
TGluZUJyZWFrKSwgSFRNTElucHV0RWxlbWVudDo6bWF4RWZmZWN0aXZlTGVuZ3RoKTsKKyAgICBy
ZXR1cm4gbGltaXRMZW5ndGgocHJvcG9zZWRWYWx1ZS5yZW1vdmVDaGFyYWN0ZXJzKGlzSFRNTExp
bmVCcmVhayksIEhUTUxJbnB1dEVsZW1lbnQ6Om1heEVmZmVjdGl2ZUxlbmd0aCk7CiB9CiAKIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZv
cmVUZXh0SW5zZXJ0ZWRFdmVudCYgZXZlbnQpCkBAIC00NzcsMTMgKzQ3OSwxMiBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQmCiAgICAgLy8gVHJ1bmNhdGUgdGhlIGluc2VydGVkIHRleHQgdG8gYXZv
aWQgdmlvbGF0aW5nIHRoZSBtYXhMZW5ndGggYW5kIG90aGVyIGNvbnN0cmFpbnRzLgogICAgIFN0
cmluZyBldmVudFRleHQgPSBldmVudC50ZXh0KCk7CiAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9
IGV2ZW50VGV4dC5sZW5ndGgoKTsKLSAgICB3aGlsZSAodGV4dExlbmd0aCA+IDAgJiYgaXNBU0NJ
SUxpbmVCcmVhayhldmVudFRleHRbdGV4dExlbmd0aCAtIDFdKSkKKyAgICB3aGlsZSAodGV4dExl
bmd0aCA+IDAgJiYgaXNIVE1MTGluZUJyZWFrKGV2ZW50VGV4dFt0ZXh0TGVuZ3RoIC0gMV0pKQog
ICAgICAgICB0ZXh0TGVuZ3RoLS07CiAgICAgZXZlbnRUZXh0LnRydW5jYXRlKHRleHRMZW5ndGgp
OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKCJcclxuIiwgIiAiKTsKICAgICBldmVudFRleHQucmVw
bGFjZSgnXHInLCAnICcpOwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKCdcbicsICcgJyk7Ci0KICAg
ICBldmVudC5zZXRUZXh0KGxpbWl0TGVuZ3RoKGV2ZW50VGV4dCwgYXBwZW5kYWJsZUxlbmd0aCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmlu
ZGV4IDNkN2Y3NWY4NTllMjEyNDcxMTM3M2FhMTJkN2VlNmZhNDhkZmJlNWMuLmY3NTEzYTQ3Mjdi
YWNmZGE1MzY2NDNlMjlkODBjNDA4ZDUwYzgzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBTdHJpbmcg
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3Jt
YXQtbm9ubGl0ZXJhbCIKICNlbmRpZgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9y
bWF0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOworICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9y
bWF0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwogI2lmIENPTVBJTEVSKENM
QU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCkBAIC03MywxOSArNzMs
MTcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwg
Li4uKQogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisKIHN0YXRpYyBTdHJpbmcgdHJ1
bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oY29uc3QgU3RyaW5nJiBvcmlnaW5hbCkKIHsK
LSAgICBpZiAob3JpZ2luYWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gb3JpZ2luYWw7Ci0K
LSAgICAvLyBUcnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0J3MgdG9vIGxvbmcuIFRoaXMgaXMgaW4g
Y29uc2lzdGVuY3kgd2l0aCBBcHBLaXQuCisgICAgLy8gVHJ1bmNhdGUgdGhlIHN0cmluZyBpZiBp
dCdzIHRvbyBsb25nLiBUaGlzIG51bWJlciBpcyByb3VnaGx5IHRoZSBzYW1lIGFzIHRoZSBvbmUg
dXNlZCBieSBBcHBLaXQuCiAgICAgdW5zaWduZWQgbWF4TnVtYmVyT2ZHcmFwaGVtZUNsdXN0ZXJz
SW5Mb29rdXBNZW51SXRlbSA9IDI0OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGVsbGlwc2lzKCZob3Jpem9udGFsRWxsaXBzaXMsIDEpOwogCiAgICAgU3RyaW5nIHRyaW1tZWQg
PSBvcmlnaW5hbC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYXJh
Y3RlcnMgPSBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKHRyaW1tZWQsIG1heE51bWJl
ck9mR3JhcGhlbWVDbHVzdGVyc0luTG9va3VwTWVudUl0ZW0pOwotICAgIHJldHVybiBudW1iZXJP
ZkNoYXJhY3RlcnMgPT0gdHJpbW1lZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiB0cmltbWVkLmxlZnQo
bnVtYmVyT2ZDaGFyYWN0ZXJzKSArIGVsbGlwc2lzLmdldCgpOworICAgIHJldHVybiBudW1iZXJP
ZkNoYXJhY3RlcnMgPT0gdHJpbW1lZC5sZW5ndGgoKSA/IHRyaW1tZWQgOiBtYWtlU3RyaW5nKHRy
aW1tZWQubGVmdChudW1iZXJPZkNoYXJhY3RlcnMpLCBob3Jpem9udGFsRWxsaXBzaXMpOwogfQor
CiAjZW5kaWYKIAogU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKQpAQCAtMTM1LDEzICsxMzMs
MTYgQEAgU3RyaW5nIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisKIFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkKIHsKICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7CiB9CisK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklO
RygiT3BlbiBMaW5rIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBpbiBOZXcgV2luZG93IGNvbnRleHQg
bWVudSBpdGVtIik7CkBAIC0yMzcsNyArMjM4LDcgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1NlYXJjaEluU3BvdGxpZ2h0KCkKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIo
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2Vh
cmNoUHJvdmlkZXJOYW1lID0gYWRvcHRDRih3a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNw
bGF5TmFtZSgpKTsKKyAgICBhdXRvIHNlYXJjaFByb3ZpZGVyTmFtZSA9IGFkb3B0Q0Yod2tDb3B5
RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKSk7CiAgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0
aCBzZWFyY2ggcHJvdmlkZXIgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGlu
c2VydGVkIiksIHNlYXJjaFByb3ZpZGVyTmFtZS5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCBHb29nbGUiLCAiU2VhcmNoIHdpdGggR29vZ2xlIGNv
bnRleHQgbWVudSBpdGVtIik7CkBAIC0yNDcsNyArMjQ4LDcgQEAgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1NlYXJjaFdlYigpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7CiAjaWYgVVNFKENGKQotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmlu
Z0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpOworICAg
IGF1dG8gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVt
KHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNv
bnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdl
dCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVj
dGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQi
KS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVt
KHNlbGVjdGVkU3RyaW5nKSk7CkBAIC0zMjQsNiArMzI1LDcgQEAgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ091dGxpbmUoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKQogewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTdHls
ZXMuLi4iLCAiU3R5bGVzIGNvbnRleHQgbWVudSBpdGVtIik7CkBAIC0zNDgsNiArMzUwLDcgQEAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZygpCiB7CiAgICAgcmV0dXJuIFdF
Ql9VSV9TVFJJTkcoIlN0b3AgU3BlYWtpbmciLCAiU3RvcCBzcGVha2luZyBjb250ZXh0IG1lbnUg
aXRlbSIpOwogfQorCiAjZW5kaWYKIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdE
aXJlY3Rpb25NZW51KCkKQEAgLTU0NCw2ICs1NDcsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSW5zcGVjdEVsZW1lbnQoKQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCiAj
aWYgIVBMQVRGT1JNKElPUykKKwogU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4
dCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIk5vIHJlY2VudCBzZWFyY2hlcyIsICJM
YWJlbCBmb3Igb25seSBpdGVtIGluIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24g
dGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9y
bWVkIik7CkBAIC01NTgsNiArNTYyLDcgQEAgU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNl
YXJjaGVzVGV4dCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkNsZWFyIFJlY2VudCBT
ZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVz
IG1lbnUncyBjb250ZW50cyIpOwogfQorCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogU3Ry
aW5nIEFYV2ViQXJlYVRleHQoKQpAQCAtODgwLDYgKzg4NSw3IEBAIFN0cmluZyBrZXlnZW5LZXlj
aGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQorCiBTdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6ZV90IGNvdW50KQogewog
ICAgIHN3aXRjaCAoY291bnQpIHsKQEAgLTkxMSwyMSArOTE3LDIyIEBAIFN0cmluZyBmaWxlQnV0
dG9uTm9NZWRpYUZpbGVzU2VsZWN0ZWRMYWJlbCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoIm5vIG1lZGlhIHNlbGVjdGVkIChtdWx0aXBsZSkiLCAiVGV4dCB0byBkaXNwbGF5IGluIGZp
bGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyBmb3IgbWVkaWEgZmlsZXMgd2hlbiBubyBtZWRp
YSBmaWxlcyBhcmUgc2VsZWN0ZWQgYW5kIHRoZSBidXR0b24gYWxsb3dzIG11bHRpcGxlIGZpbGVz
IHRvIGJlIHNlbGVjdGVkIik7CiB9CisKICNlbmRpZgogCiBTdHJpbmcgaW1hZ2VUaXRsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShDRikK
LSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5
Q3VycmVudCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJSZWY+IGZvcm1hdHRl
ciA9IGFkb3B0Q0YoQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdldCgpLCBrQ0ZO
dW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGUpKTsKKyAgICBhdXRvIGxvY2FsZSA9IGFkb3B0Q0Yo
Q0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICBhdXRvIGZvcm1hdHRlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdldCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJE
ZWNpbWFsU3R5bGUpKTsKIAogICAgIGludCB3aWR0aEludCA9IHNpemUud2lkdGgoKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHdpZHRoID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmd2lkdGhJbnQpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHdpZHRoU3RyaW5nID0gYWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhO
dW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCB3aWR0aC5nZXQoKSkpOworICAgIGF1dG8gd2lkdGgg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZ3aWR0aEludCkp
OworICAgIGF1dG8gd2lkdGhTdHJpbmcgPSBhZG9wdENGKENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRl
U3RyaW5nV2l0aE51bWJlcigwLCBmb3JtYXR0ZXIuZ2V0KCksIHdpZHRoLmdldCgpKSk7CiAKICAg
ICBpbnQgaGVpZ2h0SW50ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJS
ZWY+IGhlaWdodCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwg
JmhlaWdodEludCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaGVpZ2h0U3RyaW5nID0g
YWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0
dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKKyAgICBhdXRvIGhlaWdodCA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodEludCkpOworICAgIGF1dG8g
aGVpZ2h0U3RyaW5nID0gYWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhO
dW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAogICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3
aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBz
eW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0
cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKICNlbHNlCkBAIC0xMTI2LDcgKzExMzMs
NyBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5n
dGgpCiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBT
dHJpbmcmIG1pbmltdW0pCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGKQogICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVmFsdWUgbXVzdCBi
ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBp
bnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0i
KSwgbWluaW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKG1pbmltdW0pOwpAQCAtMTEzNiw3ICsxMTQzLDcgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIAogU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtYXhpbXVtKQog
ewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRikKICAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3
aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWF4aW11bSk7CkBAIC0x
MTYwLDYgKzExNjcsNyBAQCBTdHJpbmcgY2xpY2tUb0V4aXRGdWxsU2NyZWVuVGV4dCgpCiB9CiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKIFN0cmluZyB0ZXh0VHJhY2tTdWJ0aXRsZXNUZXh0
KCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiU3VidGl0bGVzIiwgIk1lbnUgc2VjdGlv
biBoZWFkaW5nIGZvciBzdWJ0aXRsZXMiKTsKQEAgLTExODUsNyArMTE5MywxMCBAQCBTdHJpbmcg
YXVkaW9UcmFja05vTGFiZWxUZXh0KCkKICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlVu
a25vd24iLCAiVW5rbm93biAoYXVkaW8gdHJhY2spIiwgIk1lbnUgaXRlbSBsYWJlbCBmb3IgYW4g
YXVkaW8gdHJhY2sgdGhhdCBoYXMgbm8gb3RoZXIgbmFtZSIpOwogfQogCi0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKFdJTikKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBVU0UoQ0YpCisKIFN0cmluZyB0ZXh0VHJhY2tDb3VudHJ5QW5kTGFuZ3VhZ2VNZW51SXRl
bVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBjb3VudHJ5LCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlKQogewogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJUAgKCVALSVAKSIsICJUZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgY291bnRyeSBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHN1YnRpdGxlLCBp
biB0aGUgZm9ybSBvZiAnVGl0bGUgKExhbmd1YWdlLUNvdW50cnkpJyIpLCB0aXRsZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBsYW5ndWFnZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3VudHJ5
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTIyMCw3ICsxMjMxLDYgQEAgU3RyaW5nIGF1
ZGlvRGVzY3JpcHRpb25UcmFja1N1ZmZpeFRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAIEFEIiwgIlRl
eHQgdHJhY2sgY29udGFpbnMgQXVkaW8gRGVzY3JpcHRpb25zIiksIHRpdGxlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogfQotI2VuZGlmCiAKICNlbmRpZgogCkBAIC0xMjQwLDYgKzEyNTAsNyBA
QCBTdHJpbmcgdXNlQmxvY2tlZFBsdWdJbkNvbnRleHRNZW51VGl0bGUoKQogfQogCiAjaWYgRU5B
QkxFKFNVQlRMRV9DUllQVE8pCisKIFN0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkxh
YmVsKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lKQogewogICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgV2ViQ3J5cHRvIE1hc3Rl
ciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtl
eSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CkBAIC0xMjQ5LDkgKzEyNjAsMTEgQEAgU3RyaW5nIHdlYkNyeXB0b01hc3Rlcktl
eUtleWNoYWluQ29tbWVudCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlVzZWQgdG8g
ZW5jcnlwdCBXZWJDcnlwdG8ga2V5cyBpbiBwZXJzaXN0ZW50IHN0b3JhZ2UsIHN1Y2ggYXMgSW5k
ZXhlZERCIiwgIkRlc2NyaXB0aW9uIG9mIFdlYkNyeXB0byBtYXN0ZXIga2V5cyBpbiBLZXljaGFp
biIpOwogfQorCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKKwogU3RyaW5nIGluc2VydExp
c3RUeXBlTm9uZSgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIk5vbmUiLCAiT3B0aW9u
IGluIHNlZ21lbnRlZCBjb250cm9sIGZvciBjaG9vc2luZyBsaXN0IHR5cGUgaW4gdGV4dCBlZGl0
aW5nIik7CkBAIC0xMjgxLDYgKzEyOTQsNyBAQCBTdHJpbmcgZXhpdEZ1bGxTY3JlZW5CdXR0b25B
Y2Nlc3NpYmlsaXR5VGl0bGUoKQogewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJFeGl0IEZ1
bGxzY3JlZW4iLCAiQnV0dG9uIGZvciBleGl0aW5nIGZ1bGxzY3JlZW4gd2hlbiBpbiBmdWxsc2Ny
ZWVuIG1lZGlhIHBsYXliYWNrIik7CiB9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAppbmRleCA0NGExYzUyMDM5YjVkNDdmZmNkMmExYTdlMTZjNTU4MDE5MDFmZDA5Li5jZTE1NmVj
OGY5OGY5MGM2ODFlNzA2YjU4ODgyNWM0Y2JiZGJmNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCkBAIC03MDUsMTUgKzcwNSwxNiBAQCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUgbWFwTGluZUJyZWFrVG9JdGVyYXRvck1vZGUoTGluZUJyZWFrIGxpbmVCcmVhaykKICAg
ICBzd2l0Y2ggKGxpbmVCcmVhaykgewogICAgIGNhc2UgTGluZUJyZWFrQXV0bzoKICAgICBjYXNl
IExpbmVCcmVha0FmdGVyV2hpdGVTcGFjZToKLSAgICAgICAgcmV0dXJuIExpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0OworICAgICAgICByZXR1cm4gTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpEZWZh
dWx0OwogICAgIGNhc2UgTGluZUJyZWFrTG9vc2U6Ci0gICAgICAgIHJldHVybiBMaW5lQnJlYWtJ
dGVyYXRvck1vZGVVQVgxNExvb3NlOworICAgICAgICByZXR1cm4gTGluZUJyZWFrSXRlcmF0b3JN
b2RlOjpMb29zZTsKICAgICBjYXNlIExpbmVCcmVha05vcm1hbDoKLSAgICAgICAgcmV0dXJuIExp
bmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsOworICAgICAgICByZXR1cm4gTGluZUJyZWFr
SXRlcmF0b3JNb2RlOjpOb3JtYWw7CiAgICAgY2FzZSBMaW5lQnJlYWtTdHJpY3Q6Ci0gICAgICAg
IHJldHVybiBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDsKKyAgICAgICAgcmV0dXJu
IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6U3RyaWN0OwogICAgIH0KLSAgICByZXR1cm4gTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTQ7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdDsKIH0KIAogdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCmluZGV4IGNiYTc1YmMzOTE1OWFkMjM4Y2JhNTEwYWE0
MzRmYTA0NDA4MTZlOTAuLmYyNmEzMzc2Y2M0Nzg4NGMwM2I5MjkxODIyOWQzZTQ4ZjNiMzRmNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4
dEZyYWdtZW50SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAg
dW5zaWduZWQgVGV4dEZyYWdtZW50SXRlcmF0b3I6Om5leHRCcmVha2FibGVQb3NpdGlvbihjb25z
dCBGbG93Q29udGVudHM6OlNlZ21lbnQKICAgICAgICAgVUNoYXIgbGFzdENoYXJhY3RlciA9IHRl
eHRMZW5ndGggPiAwID8gY3VycmVudFRleHRbdGV4dExlbmd0aCAtIDFdIDogMDsKICAgICAgICAg
VUNoYXIgc2Vjb25kVG9MYXN0Q2hhcmFjdGVyID0gdGV4dExlbmd0aCA+IDEgPyBjdXJyZW50VGV4
dFt0ZXh0TGVuZ3RoIC0gMl0gOiAwOwogICAgICAgICBtX2xpbmVCcmVha0l0ZXJhdG9yLnNldFBy
aW9yQ29udGV4dChsYXN0Q2hhcmFjdGVyLCBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOwotICAgICAg
ICBtX2xpbmVCcmVha0l0ZXJhdG9yLnJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKHNlZ21l
bnQudGV4dCwgbV9zdHlsZS5sb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KTsKKyAg
ICAgICAgbV9saW5lQnJlYWtJdGVyYXRvci5yZXNldFN0cmluZ0FuZFJlbGVhc2VJdGVyYXRvcihz
ZWdtZW50LnRleHQsIG1fc3R5bGUubG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1
bHQpOwogICAgIH0KICAgICBjb25zdCBhdXRvKiBjaGFyYWN0ZXJzID0gc2VnbWVudC50ZXh0LmNo
YXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4oKTsKICAgICB1bnNpZ25lZCBzZWdtZW50TGVuZ3RoID0g
c2VnbWVudC5lbmQgLSBzZWdtZW50LnN0YXJ0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJhM2ZjMThjY2E5M2IxYWMxZTQ0OTY0ZmY2NGM2NzFk
MDQ4OTUwOWUuLmY0NDI3ZmZkNmE0MTc1NjRlZGY4Y2ZkZjViYTk1OTQxZjZkMDMyZDggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNi0xMS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBub3JtYWwgY2FzZSBmYXN0IGluIHRoZSBpbnB1dCBlbGVtZW50IGxpbWl0U3RyaW5n
IGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjUwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFRleHRCcmVha0l0ZXJhdG9y
LmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VGV4dEJyZWFrSXRlcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgQ29udGFpbnMgc29tZSB0ZXN0
cyBmb3IgdGhlIG51bUdyYXBoZW1lQ2x1c3RlcnMgYW5kCisgICAgICAgIG51bUNoYXJhY3RlcnNJ
bkdyYXBoZW1lQ2x1c3RlcnMgZnVuY3Rpb25zIHRoYXQgSSB1c2VkIHRvIG1ha2Ugc3VyZQorICAg
ICAgICB0aGF0IHRoZSBuZXcgZmFzdCBwYXRocyBJIGFkZGVkIHdvcmsgY29ycmVjdGx5LgorCiAy
MDE2LTExLTIxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gYnVpbGQgZmFpbHMgYWZ0ZXIgdXBkYXRlIHRvIGNtYWtlIDMu
NwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggMDUzYzg2ZDY5NDNhMmIyOTUyNjdj
NTM5ZTllNDQzNjk1YzM5NTc1ZC4uNmJlZDhkZjFlNTllNzUyMmI1MTM0ODllY2NmMzU4MjUyMGI4
NzQ4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC04MCw2ICs4MCw3IEBAIHNl
dChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvU3Ry
aW5nSW1wbC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvU3RyaW5nT3Bl
cmF0b3JzLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9TdHJpbmdWaWV3
LmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UZXh0QnJlYWtJdGVyYXRv
ci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGltZS5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9WYXJpYW50LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzNGQ1MzlhZGQ4NGI3OGVlNDRjN2E4YTU1NmZiOGY5OTMyMjkxNzEyLi4yMTdmYTUzYTM3
Njc0NWQ1MTA4YWExZTliYTQyY2E4M2I2ODRjNmE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDIwLDYgKzQyMCw3IEBACiAJCTgzN0EzNUYxMUQ5QTFFN0QwMDY2M0M1NyAvKiBEb3dubG9h
ZFJlcXVlc3RCbG9iVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3QTM1RjAxRDlBMUU2NDAwNjYzQzU3IC8qIERvd25sb2FkUmVx
dWVzdEJsb2JVUkwuaHRtbCAqLzsgfTsKIAkJODNDRjFDMzAxQzRGMUI4QjAwNjg4NDQ3IC8qIFN0
cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzQ0YxQzJDMUM0RjE5QUUwMDY4ODQ0NyAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87
IH07CiAJCTkzMEFENDAyMTUwNjk4RDAwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBBRDQw
MTE1MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwgKi87IH07CisJCTkzMjlBQTI5
MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFFMDAzQUJEMDcg
LyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcxMDQ3MDA1REZG
QUYgLyogZm9jdXMtaW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlu
cHV0cy5odG1sICovOyB9OwogCQk5MzYxMDAyOTE0REM5NUE3MDA2MTM3OUQgLyogbG90cy1vZi1p
ZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM2MTAwMjgxNERDOTU3QjAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1s
ICovOyB9OwogCQk5MzYyNUQyNzFDRDk3NDFDMDA2REMxRjEgLyogbGFyZ2UtdmlkZW8td2l0aG91
dC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNjI1RDI2MUNEOTczQUYwMDZEQzFGMSAvKiBsYXJnZS12aWRlby13aXRob3V0
LWF1ZGlvLmh0bWwgKi87IH07CkBAIC0xMDQ3LDYgKzEwNDgsNyBAQAogCQk4QUEyOEMxOTE2RDJG
QTdCMDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExvYWRQYWdlT25DcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBUZXN0V2ViS2l0QVBJ
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzBBRDQwMTE1MDY5OEIz
MDA2Nzk3MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibG90cy1vZi10ZXh0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzI5
QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90
SGFuZGxlS2V5RG93bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aWROb3RIYW5kbGVLZXlEb3duLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1
NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlucHV0cy5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImZvY3VzLWlucHV0cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM2MTAwMjgxNERDOTU3QjAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtaWZyYW1lcy5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NTIsNiArMTg1NCw3IEBACiAJCQkJN0M3NEQ0
MkQxODgyMjhGMzAwRTVFRDU3IC8qIFN0cmluZ1ZpZXcuY3BwICovLAogCQkJCTU1OTdGODM0MUQ5
NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLywKIAkJCQkwQkNE
ODU2OTE0ODVDOThCMDBFQTIwMDMgLyogU2V0Rm9yU2NvcGUuY3BwICovLAorCQkJCTkzMjlBQTI4
MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCiAJCQkJMEYyQzIw
QjcxRENENTQ0ODAwNTQyRDlFIC8qIFRpbWUuY3BwICovLAogCQkJCTVDNUU2MzNEMUQwQjY3OTQw
MDg1QTAyNSAvKiBVbmlxdWVSZWYuY3BwICovLAogCQkJCTdDRDBENUFBMUQ1NTM0REUwMDBDQzlF
MSAvKiBWYXJpYW50LmNwcCAqLywKQEAgLTIzMjcsNiArMjMzMCw3IEBACiAJCQkJN0M4M0RFRDIx
RDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
RDQxRDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFRTAxRDBBNTkwQzAwRkVCQ0YzIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTMyOUFBMjkxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAv
KiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUU4MUQwQTU5MEMwMEZFQkNG
MyAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxRDFEMEE1OTBD
MDBGRUJDRjMgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1RleHRCcmVha0l0ZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY4
NGUzZDczYWVkN2U3YjdhY2E3ZTc4NWYxMTgzNjJlNjQ0MjQzCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0w
LDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgU3RyaW5nIG1ha2VVVEYxNihzdGQ6OnZlY3RvcjxVQ2hhcj4gaW5wdXQp
Cit7CisgICAgcmV0dXJuIHsgaW5wdXQuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5w
dXQuc2l6ZSgpKSB9OworfQorCitURVNUKFdURiwgVGV4dEJyZWFrSXRlcmF0b3JOdW1HcmFwaGVt
ZUNsdXN0ZXJzKQoreworICAgIEVYUEVDVF9FUSgwVSwgbnVtR3JhcGhlbWVDbHVzdGVycyhTdHJp
bmdWaWV3IHsgfSkpOworICAgIEVYUEVDVF9FUSgwVSwgbnVtR3JhcGhlbWVDbHVzdGVycyhTdHJp
bmdWaWV3IHsgIiIgfSkpOworICAgIEVYUEVDVF9FUSgwVSwgbnVtR3JhcGhlbWVDbHVzdGVycyht
YWtlVVRGMTYoeyB9KSkpOworCisgICAgRVhQRUNUX0VRKDFVLCBudW1HcmFwaGVtZUNsdXN0ZXJz
KFN0cmluZ1ZpZXcgeyAiYSIgfSkpOworICAgIEVYUEVDVF9FUSgxVSwgbnVtR3JhcGhlbWVDbHVz
dGVycyhtYWtlVVRGMTYoeyAnYScgfSkpKTsKKyAgICBFWFBFQ1RfRVEoMVUsIG51bUdyYXBoZW1l
Q2x1c3RlcnMoU3RyaW5nVmlldyB7ICJcclxuIiB9KSk7CisgICAgRVhQRUNUX0VRKDFVLCBudW1H
cmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXG4iIH0pKTsKKyAgICBFWFBFQ1RfRVEoMVUs
IG51bUdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyB7ICJcciIgfSkpOworICAgIEVYUEVDVF9F
USgxVSwgbnVtR3JhcGhlbWVDbHVzdGVycyhtYWtlVVRGMTYoeyAnXHInLCAnXG4nIH0pKSk7Cisg
ICAgRVhQRUNUX0VRKDFVLCBudW1HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdcbicgfSkp
KTsKKyAgICBFWFBFQ1RfRVEoMVUsIG51bUdyYXBoZW1lQ2x1c3RlcnMobWFrZVVURjE2KHsgJ1xy
JyB9KSkpOworCisgICAgRVhQRUNUX0VRKDJVLCBudW1HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1Zp
ZXcgeyAiXG5cciIgfSkpOworICAgIEVYUEVDVF9FUSgyVSwgbnVtR3JhcGhlbWVDbHVzdGVycyht
YWtlVVRGMTYoeyAnXG4nLCAnXHInIH0pKSk7CisKKyAgICBFWFBFQ1RfRVEoMlUsIG51bUdyYXBo
ZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyB7ICJcclxuXHIiIH0pKTsKKyAgICBFWFBFQ1RfRVEoMlUs
IG51bUdyYXBoZW1lQ2x1c3RlcnMobWFrZVVURjE2KHsgJ1xyJywgJ1xuJywgJ1xyJyB9KSkpOwor
CisgICAgRVhQRUNUX0VRKDFVLCBudW1HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdnJywg
MHgzMDggfSkpKTsKKyAgICBFWFBFQ1RfRVEoMVUsIG51bUdyYXBoZW1lQ2x1c3RlcnMobWFrZVVU
RjE2KHsgMHgxMTAwLCAweDExNjEsIDB4MTFBOCB9KSkpOworICAgIEVYUEVDVF9FUSgxVSwgbnVt
R3JhcGhlbWVDbHVzdGVycyhtYWtlVVRGMTYoeyAweDBCQTgsIDB4MEJCRiB9KSkpOworCisgICAg
RVhQRUNUX0VRKDJVLCBudW1HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7IDB4MzA4LCAnZycg
fSkpKTsKKworICAgIEVYUEVDVF9FUSgzVSwgbnVtR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3
IHsgIlxyXG5iYyIgfSkpOworICAgIEVYUEVDVF9FUSgzVSwgbnVtR3JhcGhlbWVDbHVzdGVycyht
YWtlVVRGMTYoeyAnZycsIDB4MzA4LCAnYicsICdjJyB9KSkpOworfQorCitURVNUKFdURiwgVGV4
dEJyZWFrSXRlcmF0b3JOdW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKQoreworICAgIEVY
UEVDVF9FUSgwVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsg
fSwgMCkpOworICAgIEVYUEVDVF9FUSgwVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVy
cyhTdHJpbmdWaWV3IHsgfSwgMSkpOworCisgICAgRVhQRUNUX0VRKDBVLCBudW1DaGFyYWN0ZXJz
SW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiIiB9LCAwKSk7CisgICAgRVhQRUNUX0VR
KDBVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiIiB9LCAx
KSk7CisKKyAgICBFWFBFQ1RfRVEoMFUsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMo
bWFrZVVURjE2KHsgfSksIDApKTsKKyAgICBFWFBFQ1RfRVEoMFUsIG51bUNoYXJhY3RlcnNJbkdy
YXBoZW1lQ2x1c3RlcnMobWFrZVVURjE2KHsgfSksIDEpKTsKKworICAgIEVYUEVDVF9FUSgxVSwg
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgImEiIH0sIDEpKTsK
KyAgICBFWFBFQ1RfRVEoMVUsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMobWFrZVVU
RjE2KHsgJ2EnIH0pLCAxKSk7CisgICAgRVhQRUNUX0VRKDFVLCBudW1DaGFyYWN0ZXJzSW5HcmFw
aGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXG4iIH0sIDEpKTsKKyAgICBFWFBFQ1RfRVEoMVUs
IG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyB7ICJcciIgfSwgMSkp
OworICAgIEVYUEVDVF9FUSgxVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhtYWtl
VVRGMTYoeyAnXG4nIH0pLCAxKSk7CisgICAgRVhQRUNUX0VRKDFVLCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdccicgfSksIDEpKTsKKworICAgIEVYUEVDVF9F
USgwVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgImFiYyIg
fSwgMCkpOworICAgIEVYUEVDVF9FUSgxVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVy
cyhTdHJpbmdWaWV3IHsgImFiYyIgfSwgMSkpOworICAgIEVYUEVDVF9FUSgyVSwgbnVtQ2hhcmFj
dGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgImFiYyIgfSwgMikpOworICAgIEVY
UEVDVF9FUSgzVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsg
ImFiYyIgfSwgMykpOworICAgIEVYUEVDVF9FUSgzVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVD
bHVzdGVycyhTdHJpbmdWaWV3IHsgImFiYyIgfSwgNCkpOworCisgICAgRVhQRUNUX0VRKDBVLCBu
dW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdhJywgJ2InLCAnYycg
fSksIDApKTsKKyAgICBFWFBFQ1RfRVEoMVUsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3Rl
cnMobWFrZVVURjE2KHsgJ2EnLCAnYicsICdjJyB9KSwgMSkpOworICAgIEVYUEVDVF9FUSgyVSwg
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhtYWtlVVRGMTYoeyAnYScsICdiJywgJ2Mn
IH0pLCAyKSk7CisgICAgRVhQRUNUX0VRKDNVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0
ZXJzKG1ha2VVVEYxNih7ICdhJywgJ2InLCAnYycgfSksIDMpKTsKKyAgICBFWFBFQ1RfRVEoM1Us
IG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMobWFrZVVURjE2KHsgJ2EnLCAnYicsICdj
JyB9KSwgNCkpOworCisgICAgRVhQRUNUX0VRKDBVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNs
dXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXHJcbiIgfSwgMCkpOworICAgIEVYUEVDVF9FUSgyVSwgbnVt
Q2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgIlxyXG4iIH0sIDEpKTsK
KyAgICBFWFBFQ1RfRVEoMlUsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5n
VmlldyB7ICJcclxuIiB9LCAyKSk7CisgICAgRVhQRUNUX0VRKDJVLCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXHJcbiIgfSwgMykpOworCisgICAgRVhQRUNU
X0VRKDBVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdccics
ICdcbicgfSksIDApKTsKKyAgICBFWFBFQ1RfRVEoMlUsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1l
Q2x1c3RlcnMobWFrZVVURjE2KHsgJ1xyJywgJ1xuJyB9KSwgMSkpOworICAgIEVYUEVDVF9FUSgy
VSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhtYWtlVVRGMTYoeyAnXHInLCAnXG4n
IH0pLCAyKSk7CisgICAgRVhQRUNUX0VRKDJVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0
ZXJzKG1ha2VVVEYxNih7ICdccicsICdcbicgfSksIDMpKTsKKworICAgIEVYUEVDVF9FUSgwVSwg
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgIlxuXHIiIH0sIDAp
KTsKKyAgICBFWFBFQ1RfRVEoMVUsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoU3Ry
aW5nVmlldyB7ICJcblxyIiB9LCAxKSk7CisgICAgRVhQRUNUX0VRKDJVLCBudW1DaGFyYWN0ZXJz
SW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXG5cciIgfSwgMikpOworCisgICAgRVhQ
RUNUX0VRKDFVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdc
bicsICdccicgfSksIDEpKTsKKyAgICBFWFBFQ1RfRVEoMlUsIG51bUNoYXJhY3RlcnNJbkdyYXBo
ZW1lQ2x1c3RlcnMobWFrZVVURjE2KHsgJ1xuJywgJ1xyJyB9KSwgMikpOworCisgICAgRVhQRUNU
X0VRKDBVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXHJc
blxyIiB9LCAwKSk7CisgICAgRVhQRUNUX0VRKDJVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNs
dXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXHJcblxyIiB9LCAxKSk7CisgICAgRVhQRUNUX0VRKDNVLCBu
dW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgeyAiXHJcblxyIiB9LCAy
KSk7CisgICAgRVhQRUNUX0VRKDNVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0
cmluZ1ZpZXcgeyAiXHJcblxyIiB9LCAzKSk7CisKKyAgICBFWFBFQ1RfRVEoMFUsIG51bUNoYXJh
Y3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMobWFrZVVURjE2KHsgJ1xyJywgJ1xuJywgJ1xyJyB9KSwg
MCkpOworICAgIEVYUEVDVF9FUSgyVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyht
YWtlVVRGMTYoeyAnXHInLCAnXG4nLCAnXHInIH0pLCAxKSk7CisgICAgRVhQRUNUX0VRKDNVLCBu
dW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdccicsICdcbicsICdc
cicgfSksIDIpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1
c3RlcnMobWFrZVVURjE2KHsgJ1xyJywgJ1xuJywgJ1xyJyB9KSwgMykpOworCisgICAgRVhQRUNU
X0VRKDJVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdnJywg
MHgzMDggfSksIDEpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1l
Q2x1c3RlcnMobWFrZVVURjE2KHsgMHgxMTAwLCAweDExNjEsIDB4MTFBOCB9KSwgMSkpOworICAg
IEVYUEVDVF9FUSgyVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhtYWtlVVRGMTYo
eyAweDBCQTgsIDB4MEJCRiB9KSwgMSkpOworCisgICAgRVhQRUNUX0VRKDFVLCBudW1DaGFyYWN0
ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7IDB4MzA4LCAnZycgfSksIDEpKTsKKwor
ICAgIEVYUEVDVF9FUSgwVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdW
aWV3IHsgIlxyXG5iYyIgfSwgMCkpOworICAgIEVYUEVDVF9FUSgyVSwgbnVtQ2hhcmFjdGVyc0lu
R3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgIlxyXG5iYyIgfSwgMSkpOworICAgIEVYUEVD
VF9FUSgzVSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgIlxy
XG5iYyIgfSwgMikpOworICAgIEVYUEVDVF9FUSg0VSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVD
bHVzdGVycyhTdHJpbmdWaWV3IHsgIlxyXG5iYyIgfSwgMykpOworICAgIEVYUEVDVF9FUSg0VSwg
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3IHsgIlxyXG5iYyIgfSwg
NCkpOworICAgIEVYUEVDVF9FUSg0VSwgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhT
dHJpbmdWaWV3IHsgIlxyXG5iYyIgfSwgNSkpOworCisgICAgRVhQRUNUX0VRKDBVLCBudW1DaGFy
YWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdnJywgMHgzMDgsICdiJywgJ2Mn
IH0pLCAwKSk7CisgICAgRVhQRUNUX0VRKDJVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0
ZXJzKG1ha2VVVEYxNih7ICdnJywgMHgzMDgsICdiJywgJ2MnIH0pLCAxKSk7CisgICAgRVhQRUNU
X0VRKDNVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdnJywg
MHgzMDgsICdiJywgJ2MnIH0pLCAyKSk7CisgICAgRVhQRUNUX0VRKDRVLCBudW1DaGFyYWN0ZXJz
SW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdnJywgMHgzMDgsICdiJywgJ2MnIH0pLCAz
KSk7CisgICAgRVhQRUNUX0VRKDRVLCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1h
a2VVVEYxNih7ICdnJywgMHgzMDgsICdiJywgJ2MnIH0pLCA0KSk7CisgICAgRVhQRUNUX0VRKDRV
LCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKG1ha2VVVEYxNih7ICdnJywgMHgzMDgs
ICdiJywgJ2MnIH0pLCA1KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="317944"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>