<?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>46410</bug_id>
          
          <creation_ts>2010-09-23 14:58:34 -0700</creation_ts>
          <short_desc>Stack overflow when converting an Error object to string</short_desc>
          <delta_ts>2011-01-19 17:54:11 -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>JavaScriptCore</component>
          <version>528+ (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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42959</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>283985</commentid>
    <comment_count>0</comment_count>
      <attachid>68598</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-23 14:58:34 -0700</bug_when>
    <thetext>Created attachment 68598
test case (will crash)

If an Error object has itself as one of its properties, we crash in toString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284051</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-09-23 15:51:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/8471921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287107</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-29 13:56:45 -0700</bug_when>
    <thetext>It seems like this may be a generic problem with native methods, particularly any toString implementation which displays contents.

For example: do we handle the case where an Array has itself as a member?  Or do we check for array cycles during insertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287125</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-09-29 14:28:45 -0700</bug_when>
    <thetext>&gt; For example: do we handle the case where an Array has itself as a member?

Yes.

&gt;  Or do we check for array cycles during insertion?

No.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287129</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-29 14:36:53 -0700</bug_when>
    <thetext>I should also note: I do not believe that this stack overflow need be marked as a security bug.  But it&apos;s possible I don&apos;t understand the full consequences of a stack overflow bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287193</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-29 16:07:46 -0700</bug_when>
    <thetext>Yes, this bug is not marked as a security one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287211</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-29 16:43:05 -0700</bug_when>
    <thetext>My mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331165</commentid>
    <comment_count>7</comment_count>
      <attachid>78305</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-07 23:03:19 -0800</bug_when>
    <thetext>Created attachment 78305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336277</commentid>
    <comment_count>8</comment_count>
      <attachid>79377</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-18 18:31:29 -0800</bug_when>
    <thetext>Created attachment 79377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336284</commentid>
    <comment_count>9</comment_count>
      <attachid>79377</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-18 18:37:58 -0800</bug_when>
    <thetext>Comment on attachment 79377
Patch

Probably even better to deploy StackBounds::recursionCheck instead of continuing to use our legacy system of fixed recursion constants. But I will not make the perfect the enemy of the good!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336997</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-19 17:54:11 -0800</bug_when>
    <thetext>Committed r76185: &lt;http://trac.webkit.org/changeset/76185&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>68598</attachid>
            <date>2010-09-23 14:58:34 -0700</date>
            <delta_ts>2010-09-23 14:58:34 -0700</delta_ts>
            <desc>test case (will crash)</desc>
            <filename>recursive-error.html</filename>
            <type>text/html</type>
            <size>340</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KdmFyIGUgPSBuZXcgRXJyb3I7CmUubmFtZSA9IGU7CmUubWVzc2FnZSA9IGU7CmFs
ZXJ0KGUubmFtZSk7CmFsZXJ0KGUubWVzc2FnZSk7CgovKgovLyBOb3RlIHRoYXQgRmlyZWZveCBh
bHNvIGtlZXBzIGEgbGl2ZSBvYmplY3QgaW4gbmFtZS9tZXNzYWdlLCBidXQgZG9lc24ndCBjcmFz
aC4KdmFyIG8gPSB7fTsKby50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gIjEiOyB9CnZh
ciBlID0gbmV3IEVycm9yOwplLm5hbWUgPSBvOwplLm1lc3NhZ2UgPSBvOwoKby50b1N0cmluZyA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gIjIiOyB9CmFsZXJ0KGUubmFtZSkKKi8KPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78305</attachid>
            <date>2011-01-07 23:03:19 -0800</date>
            <delta_ts>2011-01-18 18:31:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46410-20110107230317.patch</filename>
            <type>text/plain</type>
            <size>21982</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzUzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTEtMDEtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YWNrIG92ZXJmbG93IHdoZW4g
Y29udmVydGluZyBhbiBFcnJvciBvYmplY3QgdG8gc3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQxMAorCisgICAgICAgICogQW5kcm9pZC5t
azogQWRkZWQgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgYW5kCisgICAgICAgIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuaC4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogRGl0dG8uCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5
cGk6IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6IFVzZSBTdHJpbmdSZWN1cnNp
b25DaGVja2VyIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIG9sZGVyIGhhbmQtd3JpdHRlbiBjb2Rl
IHRvIGRvIHRoZSBzYW1lIHRoaW5nLgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6IERp
dHRvLgorCisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOiBVc2UgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6IFJlbmFtZWQgYXJyYXlWaXNpdGVk
RWxlbWVudHMgdG8KKyAgICAgICAgc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy4K
KworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOiBVc2UgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci4KKwor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oOiBBZGRlZC4KKwogMjAxMS0w
MS0wNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5t
awkocmV2aXNpb24gNzUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawko
d29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJ
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgXAogCXJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cCBcCiAJcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIFwKKwlydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwIFwKIAlydW50aW1lL1N0cnVjdHVyZS5jcHAgXAogCXJ1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwIFwKIAlydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3NTMwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYg
KzE2MSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIu
Y3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5jcHAKICAgICBydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM5Nyw2ICszOTcsOCBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA3NTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNiArMzMzLDggQEAK
ICAgICAgICAgICAgICdydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCcsCiAgICAg
ICAgICAgICAncnVudGltZS9TdHJpbmdQcm90b3R5cGUuaCcsCisgICAgICAgICAgICAncnVudGlt
ZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCcsCisgICAgICAgICAgICAncnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvU3RydWN0dXJlLmNw
cCcsCiAgICAgICAgICAgICAncnVudGltZS9TdHJ1Y3R1cmUuaCcsCiAgICAgICAgICAgICAncnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAnLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJvCShyZXZpc2lvbiA3NTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwIFwKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAg
XAorICAgIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uY3BwIFwKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAgXAogICAgIHJ1
bnRpbWUvVGltZW91dENoZWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA3NTMwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMwLDYgKzEy
MzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTdHJpbmdSZWN1
cnNpb25DaGVja2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3RydWN0dXJlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzUzMDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4Niw3IEBACiAJCTkzMkY1QkVBMDgyMkExQzcw
MDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZF
NkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzMwM0ZFQTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMzMDQwMkMw
RTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwM0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21h
bGxTdHJpbmdzLmNwcCAqLzsgfTsKKwkJOTMzNDVBQTQxMkQ4M0EwMDAwMzAyQkUzIC8qIFN0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMzNDVBODcxMkQ4MzhDNDAwMzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXIuY3BwICovOyB9OwogCQk5MzNGNUNEQzEyNjkyMjlCMDA0OTE5MUUgLyogTnVsbFB0ci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRjVDREIx
MjY5MjI2OTAwNDkxOTFFIC8qIE51bGxQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzcwMTM0ODBDQTk3RTBFMDBGQTE0RDMgLyogcGNyZV91
Y3Bfc2VhcmNoZnVuY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM3MDEzNDcwQ0E5N0UwRTAwRkExNEQzIC8qIHBjcmVfdWNwX3NlYXJjaGZ1bmNz
LmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby1zaWduLWNvbXBhcmUi
OyB9OyB9OwogCQk5Mzg1NEE5QTEyQzkzRDNCMDBEQUFGNzcgLyogTnVsbFB0ci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzg1NEE5OTEyQzkzRDNC
MDBEQUFGNzcgLyogTnVsbFB0ci5jcHAgKi87IH07CkBAIC05MDksNiArOTEwLDggQEAKIAkJOTMy
RjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0ganNjOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk5MzMwM0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYWxsU3RyaW5ncy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzAzRkVBMEU2QTcyQzAwMDc4NkU2QSAvKiBTbWFs
bFN0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hbGxTdHJpbmdz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMzQ1QTg3MTJEODM4QzQwMDMwMkJF
MyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5MzM0NUE4ODEyRDgzOEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9u
Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0EzNDlBMDM4QUU3
QzYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IH07CiAJCTkzM0EzNDlEMDM4QUU4MEYwMDg2MzVDRSAvKiBJZGVudGlm
aWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJOTMzRjVDREIxMjY5MjI2OTAwNDkxOTFFIC8qIE51bGxQdHIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVsbFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY2Nyw4ICsxNjcwLDYgQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8q
IHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CURERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLywKLQkJ
CQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICov
LAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlC
Q0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUx
RjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMTcyMiw2ICsxNzIzLDggQEAK
IAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICov
LAogCQkJCUY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAg
Ki8sCiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmgg
Ki8sCisJCQkJRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
ICovLAorCQkJCURERjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tD
Ri5jcHAgKi8sCiAJCQkJRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAq
LywKIAkJCQlEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLywKIAkJCQlC
QzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKQEAgLTE4NDcs
NiArMTg1MCw4IEBACiAJCQkJQkMxOEMzQzQwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ09iamVj
dFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmggKi8sCiAJCQkJQkMxOEMzQzUwRTE2RUUzMzAw
QjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMxOEMzQzYwRTE2RUUzMzAw
QjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oICovLAorCQkJCTkzMzQ1QTg3MTJEODM4QzQwMDMw
MkJFMyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCAqLywKKwkJCQk5MzM0NUE4ODEyRDgz
OEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oICovLAogCQkJCUJDREUzQUIw
MEU2QzgyQ0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuY3BwICovLAogCQkJCUJDREUzQUIxMEU2Qzgy
Q0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCAqLywKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0
QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovLApAQCAtMjg0NSw2ICsyODUwLDcgQEAKIAkJCQk4
NjhCRkExNzExN0NGMTk5MDBCOTA4QjEgLyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2RDA4RDUzMTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzODU0QTlBMTJDOTNEM0IwMERBQUY3NyAvKiBOdWxsUHRyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTkzMzQ1QUE0MTJEODNBMDAwMDMwMkJFMyAvKiBTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gNzUzMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3
LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBv
cC5jb20pCiAgKgpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRl
ICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTE2OCwx
NSArMTY5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU0FycmF5KiB0aGlzT2Jq
ID0gYXNBcnJheSh0aGlzVmFsdWUpOwogICAgIAotICAgIEhhc2hTZXQ8SlNPYmplY3QqPiYgYXJy
YXlWaXNpdGVkRWxlbWVudHMgPSBleGVjLT5nbG9iYWxEYXRhKCkuYXJyYXlWaXNpdGVkRWxlbWVu
dHM7Ci0gICAgaWYgKGFycmF5VmlzaXRlZEVsZW1lbnRzLnNpemUoKSA+PSBNYXhTbWFsbFRocmVh
ZFJlZW50cnlEZXB0aCkgewotICAgICAgICBpZiAoYXJyYXlWaXNpdGVkRWxlbWVudHMuc2l6ZSgp
ID49IGV4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCi0gICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7Ci0g
ICAgfQotCi0gICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFhcnJheVZpc2l0ZWRFbGVtZW50cy5h
ZGQodGhpc09iaikuc2Vjb25kOwotICAgIGlmIChhbHJlYWR5VmlzaXRlZCkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKGV4ZWMpKTsgLy8gcmV0dXJuIGFuIGVt
cHR5IHN0cmluZywgYXZvaWRpbmcgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgIFN0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqKTsKKyAgICBpZiAoRW5jb2RlZEpTVmFs
dWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gZWFybHlSZXR1cm5WYWx1ZTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVj
KTsKICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBsZW5ndGggPyBsZW5ndGggLSAxIDogMDsKQEAg
LTIwOSw3ICsyMDQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBhcnJheVZpc2l0ZWRFbGVtZW50cy5yZW1vdmUodGhpc09iaik7CiAgICAgaWYg
KCF0b3RhbFNpemUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmlu
ZyhleGVjKSk7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CkBAIC0yMzQsMTUgKzIyOCw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBhc0FycmF5
KHRoaXNWYWx1ZSk7CiAKLSAgICBIYXNoU2V0PEpTT2JqZWN0Kj4mIGFycmF5VmlzaXRlZEVsZW1l
bnRzID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmFycmF5VmlzaXRlZEVsZW1lbnRzOwotICAgIGlmIChh
cnJheVZpc2l0ZWRFbGVtZW50cy5zaXplKCkgPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGgp
IHsKLSAgICAgICAgaWYgKGFycmF5VmlzaXRlZEVsZW1lbnRzLnNpemUoKSA+PSBleGVjLT5nbG9i
YWxEYXRhKCkubWF4UmVlbnRyeURlcHRoKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwotICAgIH0KLQotICAgIGJv
b2wgYWxyZWFkeVZpc2l0ZWQgPSAhYXJyYXlWaXNpdGVkRWxlbWVudHMuYWRkKHRoaXNPYmopLnNl
Y29uZDsKLSAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNFbXB0eVN0cmluZyhleGVjKSk7IC8vIHJldHVybiBhbiBlbXB0eSBzdHJpbmcsIGF2
b2RpbmcgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hl
Y2tlcihleGVjLCB0aGlzT2JqKTsKKyAgICBpZiAoRW5jb2RlZEpTVmFsdWUgZWFybHlSZXR1cm5W
YWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQorICAgICAgICByZXR1cm4gZWFybHlS
ZXR1cm5WYWx1ZTsKIAogICAgIEpTU3RyaW5nQnVpbGRlciBzdHJCdWZmZXI7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpLnRvVUludDMyKGV4ZWMpOwpAQCAtMjY0LDcgKzI1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgIHN0ckJ1ZmZlci5hcHBlbmQoc3Ry
KTsKICAgICAgICAgfQogICAgIH0KLSAgICBhcnJheVZpc2l0ZWRFbGVtZW50cy5yZW1vdmUodGhp
c09iaik7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0ckJ1ZmZlci5idWlsZChleGVj
KSk7CiB9CiAKQEAgLTI3MiwxNSArMjYwLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRgogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKIAotICAgIEhhc2hTZXQ8SlNPYmplY3QqPiYgYXJy
YXlWaXNpdGVkRWxlbWVudHMgPSBleGVjLT5nbG9iYWxEYXRhKCkuYXJyYXlWaXNpdGVkRWxlbWVu
dHM7Ci0gICAgaWYgKGFycmF5VmlzaXRlZEVsZW1lbnRzLnNpemUoKSA+PSBNYXhTbWFsbFRocmVh
ZFJlZW50cnlEZXB0aCkgewotICAgICAgICBpZiAoYXJyYXlWaXNpdGVkRWxlbWVudHMuc2l6ZSgp
ID49IGV4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCi0gICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7Ci0g
ICAgfQotCi0gICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFhcnJheVZpc2l0ZWRFbGVtZW50cy5h
ZGQodGhpc09iaikuc2Vjb25kOwotICAgIGlmIChhbHJlYWR5VmlzaXRlZCkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKGV4ZWMpKTsgLy8gcmV0dXJuIGFuIGVt
cHR5IHN0cmluZywgYXZvZGluZyBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgU3RyaW5nUmVjdXJz
aW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmopOworICAgIGlmIChFbmNvZGVkSlNWYWx1
ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCisgICAgICAg
IHJldHVybiBlYXJseVJldHVyblZhbHVlOwogCiAgICAgSlNTdHJpbmdCdWlsZGVyIHN0ckJ1ZmZl
cjsKIApAQCAtMzM1LDcgKzMxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0YKICAgICAgICAgaWYgKCFlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgICAgICBzdHJCdWZmZXIuYXBwZW5kKGVsZW1lbnQudG9TdHJpbmcoZXhlYykpOwogICAgIH0K
LSAgICBhcnJheVZpc2l0ZWRFbGVtZW50cy5yZW1vdmUodGhpc09iaik7CisKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHN0ckJ1ZmZlci5idWlsZChleGVjKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDc1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMSBAQCBFcnJvclByb3RvdHlwZTo6
RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVy
cm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKKworICAg
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqKTsKKyAgICBpZiAo
RW5jb2RlZEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1
ZSgpKQorICAgICAgICByZXR1cm4gZWFybHlSZXR1cm5WYWx1ZTsKKwogICAgIEpTVmFsdWUgbmFt
ZSA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSk7CiAgICAg
SlNWYWx1ZSBtZXNzYWdlID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5tZXNzYWdlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgJKHJldmlzaW9uIDc1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGhlYWQ7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0OwogCi0gICAgICAgIEhhc2hTZXQ8SlNP
YmplY3QqPiBhcnJheVZpc2l0ZWRFbGVtZW50czsKKyAgICAgICAgSGFzaFNldDxKU09iamVjdCo+
IHN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHM7CiAKICAgICAgICAgU3RyaW5naWZp
ZXIqIGZpcnN0U3RyaW5naWZpZXJUb01hcms7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNzUzMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKKyNpbmNsdWRlICJT
dHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTExLDE1ICsxMTIsMjEgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKICAgICB9CiAKKyAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpOworCisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2Vy
KGV4ZWMsIHRoaXNPYmplY3QpOworICAgIGlmIChFbmNvZGVkSlNWYWx1ZSBlYXJseVJldHVyblZh
bHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCisgICAgICAgIHJldHVybiBlYXJseVJl
dHVyblZhbHVlOworCiAgICAgY2hhciBwb3N0Zml4WzVdID0geyAnLycsIDAsIDAsIDAsIDAgfTsK
ICAgICBpbnQgaW5kZXggPSAxOwotICAgIGlmIChhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5n
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdsb2JhbCkudG9Cb29sZWFuKGV4ZWMpKQor
ICAgIGlmICh0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdsb2Jh
bCkudG9Cb29sZWFuKGV4ZWMpKQogICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ2cnOwotICAg
IGlmIChhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmlnbm9yZUNhc2UpLnRvQm9vbGVhbihleGVjKSkKKyAgICBpZiAodGhpc09iamVjdC0+
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pZ25vcmVDYXNlKS50b0Jvb2xlYW4oZXhl
YykpCiAgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnaSc7Ci0gICAgaWYgKGFzUmVnRXhwT2Jq
ZWN0KHRoaXNWYWx1ZSktPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubXVsdGlsaW5l
KS50b0Jvb2xlYW4oZXhlYykpCisgICAgaWYgKHRoaXNPYmplY3QtPmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubXVsdGlsaW5lKS50b0Jvb2xlYW4oZXhlYykpCiAgICAgICAgIHBvc3Rm
aXhbaW5kZXhdID0gJ20nOwotICAgIFVTdHJpbmcgc291cmNlID0gYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zb3VyY2UpLnRvU3RyaW5n
KGV4ZWMpOworICAgIFVTdHJpbmcgc291cmNlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5zb3VyY2UpLnRvU3RyaW5nKGV4ZWMpOwogICAgIC8vIElmIHNvdXJj
ZSBpcyBlbXB0eSwgdXNlICIvKD86KS8iIHRvIGF2b2lkIGNvbGxpZGluZyB3aXRoIGNvbW1lbnQg
c3ludGF4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICIvIiwgc291cmNlLmxlbmd0aCgpID8gc291cmNlIDogVVN0cmluZygiKD86KSIpLCBw
b3N0Zml4KSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdS
ZWN1cnNpb25DaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXIuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworRW5jb2RlZEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9u
Q2hlY2tlcjo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IoKQoreworICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IobV9leGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OmVtcHR5U3RyaW5nKCkKK3sKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcobV9leGVjKSk7Cit9CisKK30K
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1
cnNpb25DaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKwor
I2lmbmRlZiBTdHJpbmdSZWN1cnNpb25DaGVja2VyX2gKKyNkZWZpbmUgU3RyaW5nUmVjdXJzaW9u
Q2hlY2tlcl9oCisKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcik7CisKK3B1YmxpYzoKKyAgICBTdHJpbmdSZWN1cnNp
b25DaGVja2VyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0KTsKKyAgICB+U3RyaW5n
UmVjdXJzaW9uQ2hlY2tlcigpOworCisgICAgRW5jb2RlZEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1
ZSgpIGNvbnN0OyAvLyAwIGlmIGV2ZXJ5dGhpbmcgaXMgT0ssIHZhbHVlIHRvIHJldHVybiBmb3Ig
ZmFpbHVyZSBjYXNlcworCitwcml2YXRlOgorICAgIEVuY29kZWRKU1ZhbHVlIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKCk7CisgICAgRW5jb2RlZEpTVmFsdWUgZW1wdHlTdHJpbmcoKTsKKyAgICBF
bmNvZGVkSlNWYWx1ZSBwZXJmb3JtQ2hlY2soKTsKKworICAgIEV4ZWNTdGF0ZSogbV9leGVjOwor
ICAgIEpTT2JqZWN0KiBtX3RoaXNPYmplY3Q7CisgICAgRW5jb2RlZEpTVmFsdWUgbV9lYXJseVJl
dHVyblZhbHVlOworfTsKKworaW5saW5lIEVuY29kZWRKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXI6OnBlcmZvcm1DaGVjaygpCit7CisgICAgaW50IHNpemUgPSBtX2V4ZWMtPmdsb2JhbERh
dGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLnNpemUoKTsKKyAgICBpZiAo
c2l6ZSA+PSBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCAmJiBzaXplID49IG1fZXhlYy0+Z2xv
YmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKKyAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKCk7CisgICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4ZWMtPmdsb2JhbERh
dGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZChtX3RoaXNPYmplY3Qp
LnNlY29uZDsKKyAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOyAvLyBSZXR1cm4gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lv
bi4KKyAgICByZXR1cm4gMDsgLy8gSW5kaWNhdGUgc3VjY2Vzcy4KK30KKworaW5saW5lIFN0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXI6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjdCkKKyAgICA6IG1fZXhlYyhleGVjKQorICAgICwgbV90aGlz
T2JqZWN0KHRoaXNPYmplY3QpCisgICAgLCBtX2Vhcmx5UmV0dXJuVmFsdWUocGVyZm9ybUNoZWNr
KCkpCit7Cit9CisKK2lubGluZSBFbmNvZGVkSlNWYWx1ZSBTdHJpbmdSZWN1cnNpb25DaGVja2Vy
OjplYXJseVJldHVyblZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lYXJseVJldHVyblZh
bHVlOworfQorCitpbmxpbmUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6flN0cmluZ1JlY3Vyc2lv
bkNoZWNrZXIoKQoreworICAgIEFTU0VSVChtX2V4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1
cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmNvbnRhaW5zKG1fdGhpc09iamVjdCkpOworICAgIG1f
ZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHMucmVt
b3ZlKG1fdGhpc09iamVjdCk7Cit9CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79377</attachid>
            <date>2011-01-18 18:31:29 -0800</date>
            <delta_ts>2011-01-18 18:37:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46410-20110118183127.patch</filename>
            <type>text/plain</type>
            <size>24774</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzYwMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTEtMDEtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YWNrIG92ZXJmbG93IHdoZW4g
Y29udmVydGluZyBhbiBFcnJvciBvYmplY3QgdG8gc3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQxMAorCisgICAgICAgICogQW5kcm9pZC5t
azogQWRkZWQgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgYW5kCisgICAgICAgIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuaC4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogRGl0dG8uCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5
cGk6IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6IFVzZSBTdHJpbmdSZWN1cnNp
b25DaGVja2VyIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIG9sZGVyIGhhbmQtd3JpdHRlbiBjb2Rl
IHRvIGRvIHRoZSBzYW1lIHRoaW5nLgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6IERp
dHRvLgorCisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOiBVc2UgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6IFJlbmFtZWQgYXJyYXlWaXNpdGVk
RWxlbWVudHMgdG8KKyAgICAgICAgc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy4K
KworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOiBVc2UgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci4KKwor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oOiBBZGRlZC4KKwogMjAxMS0w
MS0xNyAgSmFycmVkIE5pY2hvbGxzICA8amFycmVkQHNlbmNoYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQu
bWsJKHJldmlzaW9uIDc2MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gXAog
CXJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIFwKIAlydW50aW1lL1N0cmluZ09iamVjdC5j
cHAgXAogCXJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBcCisJcnVudGltZS9TdHJpbmdSZWN1
cnNpb25DaGVja2VyLmNwcCBcCiAJcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKIAlydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcCBcCiAJcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzYwMzYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2
ICsxNjMsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCiAgICAgcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2Vy
LmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc2MDM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNiArNDA0LDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gNzYwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMzNyw4IEBA
CiAgICAgICAgICAgICAncnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZC5oJywKICAgICAgICAgICAgICdydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAnLAogICAg
ICAgICAgICAgJ3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgnLAorICAgICAgICAgICAgJ3J1bnRp
bWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAnLAorICAgICAgICAgICAgJ3J1bnRpbWUvU3Ry
aW5nUmVjdXJzaW9uQ2hlY2tlci5oJywKICAgICAgICAgICAgICdydW50aW1lL1N0cnVjdHVyZS5j
cHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvU3RydWN0dXJlLmgnLAogICAgICAgICAgICAgJ3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwJywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gNzYwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgXAogICAgIHJ1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IFwKKyAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKICAgICBy
dW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gNzYwMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI0Niw2ICsx
MjQ2LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxydW50aW1lXFN0cnVjdHVyZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc2MDM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw2ICsyOTQsNyBAQAogCQk5MzJGNUJFQTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJOTMzMDQwMDQwRTZBNzQ5NDAwNzg2
RTZBIC8qIFNtYWxsU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMzA0MDJD
MEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8qIFNt
YWxsU3RyaW5ncy5jcHAgKi87IH07CisJCTkzMzVGMjREMTJFNjc2NUIwMDJCNTU1MyAvKiBTdHJp
bmdSZWN1cnNpb25DaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzMzQ1QTg3MTJEODM4QzQwMDMwMkJFMyAvKiBTdHJpbmdSZWN1cnNpb25D
aGVja2VyLmNwcCAqLzsgfTsKIAkJOTMzRjVDREMxMjY5MjI5QjAwNDkxOTFFIC8qIE51bGxQdHIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0Y1Q0RC
MTI2OTIyNjkwMDQ5MTkxRSAvKiBOdWxsUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM3MDEzNDgwQ0E5N0UwRTAwRkExNEQzIC8qIHBjcmVf
dWNwX3NlYXJjaGZ1bmNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNzAxMzQ3MENBOTdFMEUwMEZBMTREMyAvKiBwY3JlX3VjcF9zZWFyY2hmdW5j
cy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tc2lnbi1jb21wYXJl
IjsgfTsgfTsKIAkJOTM4NTRBOUExMkM5M0QzQjAwREFBRjc3IC8qIE51bGxQdHIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4NTRBOTkxMkM5M0Qz
QjAwREFBRjc3IC8qIE51bGxQdHIuY3BwICovOyB9OwpAQCAtOTI1LDYgKzkyNiw4IEBACiAJCTkz
MkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGpzYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFsbFN0cmluZ3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMwM0ZFQTBFNkE3MkMwMDA3ODZFNkEgLyogU21h
bGxTdHJpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsU3RyaW5n
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzM0NUE4NzEyRDgzOEM0MDAzMDJC
RTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTMzNDVBODgxMkQ4MzhDNDAwMzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lv
bkNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUmVjdXJz
aW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNBMzQ5QTAzOEFF
N0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB9OwogCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogSWRlbnRp
Zmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElkZW50aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IH07CiAJCTkzM0Y1Q0RCMTI2OTIyNjkwMDQ5MTkxRSAvKiBOdWxsUHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bGxQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE4NjcsNiArMTg3MCw4IEBACiAJCQkJQkMxOEMzQzQwRTE2RUUzMzAwQjM0NDYw
IC8qIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmggKi8sCiAJCQkJQkMx
OEMzQzUwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMx
OEMzQzYwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oICovLAorCQkJCTkzMzQ1
QTg3MTJEODM4QzQwMDMwMkJFMyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCAqLywKKwkJ
CQk5MzM0NUE4ODEyRDgzOEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oICov
LAogCQkJCUJDREUzQUIwMEU2QzgyQ0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuY3BwICovLAogCQkJ
CUJDREUzQUIxMEU2QzgyQ0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCAqLywKIAkJCQk3RTRFRTcw
RTBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovLApAQCAtMjg3Myw2ICsy
ODc4LDcgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJT
eW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzMzVGMjREMTJFNjc2NUIwMDJC
NTU1MyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
cmV2aXNpb24gNzYwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQ
ZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KQEAgLTE2OCwxNSArMTY5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
ICAgICBKU0FycmF5KiB0aGlzT2JqID0gYXNBcnJheSh0aGlzVmFsdWUpOwogICAgIAotICAgIEhh
c2hTZXQ8SlNPYmplY3QqPiYgYXJyYXlWaXNpdGVkRWxlbWVudHMgPSBleGVjLT5nbG9iYWxEYXRh
KCkuYXJyYXlWaXNpdGVkRWxlbWVudHM7Ci0gICAgaWYgKGFycmF5VmlzaXRlZEVsZW1lbnRzLnNp
emUoKSA+PSBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCkgewotICAgICAgICBpZiAoYXJyYXlW
aXNpdGVkRWxlbWVudHMuc2l6ZSgpID49IGV4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVw
dGgpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihleGVjKSk7Ci0gICAgfQotCi0gICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFh
cnJheVZpc2l0ZWRFbGVtZW50cy5hZGQodGhpc09iaikuc2Vjb25kOwotICAgIGlmIChhbHJlYWR5
VmlzaXRlZCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKGV4
ZWMpKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0cmluZywgYXZvaWRpbmcgaW5maW5pdGUgcmVjdXJz
aW9uLgorICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqKTsK
KyAgICBpZiAoRW5jb2RlZEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlS
ZXR1cm5WYWx1ZSgpKQorICAgICAgICByZXR1cm4gZWFybHlSZXR1cm5WYWx1ZTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBsZW5ndGgg
PyBsZW5ndGggLSAxIDogMDsKQEAgLTIwOSw3ICsyMDQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBhcnJheVZpc2l0ZWRFbGVtZW50cy5yZW1v
dmUodGhpc09iaik7CiAgICAgaWYgKCF0b3RhbFNpemUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNFbXB0eVN0cmluZyhleGVjKSk7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7
CkBAIC0yMzQsMTUgKzIyOCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0YKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBhc0FycmF5KHRoaXNWYWx1ZSk7CiAKLSAgICBIYXNoU2V0PEpTT2JqZWN0
Kj4mIGFycmF5VmlzaXRlZEVsZW1lbnRzID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmFycmF5VmlzaXRl
ZEVsZW1lbnRzOwotICAgIGlmIChhcnJheVZpc2l0ZWRFbGVtZW50cy5zaXplKCkgPj0gTWF4U21h
bGxUaHJlYWRSZWVudHJ5RGVwdGgpIHsKLSAgICAgICAgaWYgKGFycmF5VmlzaXRlZEVsZW1lbnRz
LnNpemUoKSA+PSBleGVjLT5nbG9iYWxEYXRhKCkubWF4UmVlbnRyeURlcHRoKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
YykpOwotICAgIH0KLQotICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhYXJyYXlWaXNpdGVkRWxl
bWVudHMuYWRkKHRoaXNPYmopLnNlY29uZDsKLSAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyhleGVjKSk7IC8vIHJldHVy
biBhbiBlbXB0eSBzdHJpbmcsIGF2b2RpbmcgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgIFN0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihleGVjLCB0aGlzT2JqKTsKKyAgICBpZiAoRW5jb2Rl
ZEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gZWFybHlSZXR1cm5WYWx1ZTsKIAogICAgIEpTU3RyaW5nQnVpbGRlciBz
dHJCdWZmZXI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwpAQCAtMjY0LDcgKzI1Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAg
IHN0ckJ1ZmZlci5hcHBlbmQoc3RyKTsKICAgICAgICAgfQogICAgIH0KLSAgICBhcnJheVZpc2l0
ZWRFbGVtZW50cy5yZW1vdmUodGhpc09iaik7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHN0ckJ1ZmZlci5idWlsZChleGVjKSk7CiB9CiAKQEAgLTI3MiwxNSArMjYwLDkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogewogICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKIAotICAgIEhh
c2hTZXQ8SlNPYmplY3QqPiYgYXJyYXlWaXNpdGVkRWxlbWVudHMgPSBleGVjLT5nbG9iYWxEYXRh
KCkuYXJyYXlWaXNpdGVkRWxlbWVudHM7Ci0gICAgaWYgKGFycmF5VmlzaXRlZEVsZW1lbnRzLnNp
emUoKSA+PSBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCkgewotICAgICAgICBpZiAoYXJyYXlW
aXNpdGVkRWxlbWVudHMuc2l6ZSgpID49IGV4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVw
dGgpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihleGVjKSk7Ci0gICAgfQotCi0gICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFh
cnJheVZpc2l0ZWRFbGVtZW50cy5hZGQodGhpc09iaikuc2Vjb25kOwotICAgIGlmIChhbHJlYWR5
VmlzaXRlZCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0VtcHR5U3RyaW5nKGV4
ZWMpKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0cmluZywgYXZvZGluZyBpbmZpbml0ZSByZWN1cnNp
b24uCisgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmopOwor
ICAgIGlmIChFbmNvZGVkSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpCisgICAgICAgIHJldHVybiBlYXJseVJldHVyblZhbHVlOwogCiAgICAgSlNT
dHJpbmdCdWlsZGVyIHN0ckJ1ZmZlcjsKIApAQCAtMzM1LDcgKzMxNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgaWYgKCFlbGVtZW50LmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICBzdHJCdWZmZXIuYXBwZW5kKGVsZW1lbnQudG9T
dHJpbmcoZXhlYykpOwogICAgIH0KLSAgICBhcnJheVZpc2l0ZWRFbGVtZW50cy5yZW1vdmUodGhp
c09iaik7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0ckJ1ZmZlci5idWlsZChleGVj
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDc2MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJpbmdS
ZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTQ3LDYgKzQ4LDExIEBAIEVycm9yUHJvdG90eXBlOjpFcnJvclByb3RvdHlwZShFeGVj
U3RhdGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0
VGhpc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpOworCisgICAgU3RyaW5nUmVjdXJzaW9uQ2hl
Y2tlciBjaGVja2VyKGV4ZWMsIHRoaXNPYmopOworICAgIGlmIChFbmNvZGVkSlNWYWx1ZSBlYXJs
eVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCisgICAgICAgIHJldHVy
biBlYXJseVJldHVyblZhbHVlOworCiAgICAgSlNWYWx1ZSBuYW1lID0gdGhpc09iai0+Z2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKTsKICAgICBKU1ZhbHVlIG1lc3NhZ2UgPSB0
aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNp
b24gNzYwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogaGVhZDsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFt
aWNHbG9iYWxPYmplY3Q7CiAKLSAgICAgICAgSGFzaFNldDxKU09iamVjdCo+IGFycmF5VmlzaXRl
ZEVsZW1lbnRzOworICAgICAgICBIYXNoU2V0PEpTT2JqZWN0Kj4gc3RyaW5nUmVjdXJzaW9uQ2hl
Y2tWaXNpdGVkT2JqZWN0czsKIAogICAgICAgICBTdHJpbmdpZmllciogZmlyc3RTdHJpbmdpZmll
clRvTWFyazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA3NjAzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIK
ICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgorI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xMTEsMTUgKzExMiwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIH0KIAor
ICAgIFJlZ0V4cE9iamVjdCogdGhpc09iamVjdCA9IGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSk7
CisKKyAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZXhlYywgdGhpc09iamVjdCk7
CisgICAgaWYgKEVuY29kZWRKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5
UmV0dXJuVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGVhcmx5UmV0dXJuVmFsdWU7CisKICAgICBj
aGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwgMCwgMCB9OwogICAgIGludCBpbmRleCA9IDE7
Ci0gICAgaWYgKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2xvYmFsKS50b0Jvb2xlYW4oZXhlYykpCisgICAgaWYgKHRoaXNPYmplY3Qt
PmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2xvYmFsKS50b0Jvb2xlYW4oZXhlYykp
CiAgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnZyc7Ci0gICAgaWYgKGFzUmVnRXhwT2JqZWN0
KHRoaXNWYWx1ZSktPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaWdub3JlQ2FzZSku
dG9Cb29sZWFuKGV4ZWMpKQorICAgIGlmICh0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmlnbm9yZUNhc2UpLnRvQm9vbGVhbihleGVjKSkKICAgICAgICAgcG9zdGZp
eFtpbmRleCsrXSA9ICdpJzsKLSAgICBpZiAoYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+Z2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tdWx0aWxpbmUpLnRvQm9vbGVhbihleGVjKSkK
KyAgICBpZiAodGhpc09iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tdWx0
aWxpbmUpLnRvQm9vbGVhbihleGVjKSkKICAgICAgICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7Ci0g
ICAgVVN0cmluZyBzb3VyY2UgPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSkudG9TdHJpbmcoZXhlYyk7CisgICAgVVN0cmlu
ZyBzb3VyY2UgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNv
dXJjZSkudG9TdHJpbmcoZXhlYyk7CiAgICAgLy8gSWYgc291cmNlIGlzIGVtcHR5LCB1c2UgIi8o
PzopLyIgdG8gYXZvaWQgY29sbGlkaW5nIHdpdGggY29tbWVudCBzeW50YXgKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBzb3VyY2Uu
bGVuZ3RoKCkgPyBzb3VyY2UgOiBVU3RyaW5nKCIoPzopIiksIHBvc3RmaXgpKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitFbmNvZGVkSlNWYWx1ZSBTdHJpbmdSZWN1cnNpb25DaGVja2VyOjp0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcigpCit7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihtX2V4ZWMsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmcoKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNFbXB0eVN0cmluZyhtX2V4ZWMpKTsKK30KKworfQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25D
aGVja2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdSZWN1cnNpb25DaGVja2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjaWZuZGVmIFN0cmluZ1JlY3Vy
c2lvbkNoZWNrZXJfaAorI2RlZmluZSBTdHJpbmdSZWN1cnNpb25DaGVja2VyX2gKKworI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJpbmdSZWN1
cnNpb25DaGVja2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJpbmdSZWN1cnNpb25D
aGVja2VyKTsKKworcHVibGljOgorICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIoRXhlY1N0YXRl
KiwgSlNPYmplY3QqIHRoaXNPYmplY3QpOworICAgIH5TdHJpbmdSZWN1cnNpb25DaGVja2VyKCk7
CisKKyAgICBFbmNvZGVkSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlKCkgY29uc3Q7IC8vIDAgaWYg
ZXZlcnl0aGluZyBpcyBPSywgdmFsdWUgdG8gcmV0dXJuIGZvciBmYWlsdXJlIGNhc2VzCisKK3By
aXZhdGU6CisgICAgRW5jb2RlZEpTVmFsdWUgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoKTsKKyAg
ICBFbmNvZGVkSlNWYWx1ZSBlbXB0eVN0cmluZygpOworICAgIEVuY29kZWRKU1ZhbHVlIHBlcmZv
cm1DaGVjaygpOworCisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CisgICAgSlNPYmplY3QqIG1fdGhp
c09iamVjdDsKKyAgICBFbmNvZGVkSlNWYWx1ZSBtX2Vhcmx5UmV0dXJuVmFsdWU7Cit9OworCitp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6cGVyZm9ybUNoZWNr
KCkKK3sKKyAgICBpbnQgc2l6ZSA9IG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lv
bkNoZWNrVmlzaXRlZE9iamVjdHMuc2l6ZSgpOworICAgIGlmIChzaXplID49IE1heFNtYWxsVGhy
ZWFkUmVlbnRyeURlcHRoICYmIHNpemUgPj0gbV9leGVjLT5nbG9iYWxEYXRhKCkubWF4UmVlbnRy
eURlcHRoKQorICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IoKTsKKyAgICBi
b29sIGFscmVhZHlWaXNpdGVkID0gIW1fZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lv
bkNoZWNrVmlzaXRlZE9iamVjdHMuYWRkKG1fdGhpc09iamVjdCkuc2Vjb25kOworICAgIGlmIChh
bHJlYWR5VmlzaXRlZCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIFJldHVybiBl
bXB0eSBzdHJpbmcgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgIHJldHVybiAwOyAv
LyBJbmRpY2F0ZSBzdWNjZXNzLgorfQorCitpbmxpbmUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6
U3RyaW5nUmVjdXJzaW9uQ2hlY2tlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0KQorICAgIDogbV9leGVjKGV4ZWMpCisgICAgLCBtX3RoaXNPYmplY3QodGhpc09iamVjdCkK
KyAgICAsIG1fZWFybHlSZXR1cm5WYWx1ZShwZXJmb3JtQ2hlY2soKSkKK3sKK30KKworaW5saW5l
IEVuY29kZWRKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OmVhcmx5UmV0dXJuVmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2Vhcmx5UmV0dXJuVmFsdWU7Cit9CisKK2lubGluZSBT
dHJpbmdSZWN1cnNpb25DaGVja2VyOjp+U3RyaW5nUmVjdXJzaW9uQ2hlY2tlcigpCit7CisgICAg
aWYgKG1fZWFybHlSZXR1cm5WYWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2V4
ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmNvbnRh
aW5zKG1fdGhpc09iamVjdCkpOworICAgIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vy
c2lvbkNoZWNrVmlzaXRlZE9iamVjdHMucmVtb3ZlKG1fdGhpc09iamVjdCk7Cit9CisKK30KKwor
I2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MDg5KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDEtMTggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN0YWNrIG92ZXJmbG93IHdoZW4gY29udmVydGluZyBhbiBF
cnJvciBvYmplY3QgdG8gc3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NjQxMAorCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvdG9T
dHJpbmctcmVjdXJzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3RvU3RyaW5nLXJl
Y3Vyc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvdG9TdHJpbmct
cmVjdXJzaW9uLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTE4ICBEbWl0cnkgVGl0b3YgIDxkaW1p
Y2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gTm90IHJldmlld2VkLCBhZGRp
bmcgcGl4ZWwgZXhwZWN0YXRpb25zIGZvciBuZXcgdGVzdC4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvdG9TdHJpbmctcmVjdXJzaW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3RvU3RyaW5nLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3RvU3RyaW5nLXJlY3Vyc2lvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0
b1N0cmluZygpIGRvZXMgbm90IGhhdmUgYSBwcm9ibGVtIHdoZW4gYW4gb2JqZWN0IGhhcyBpdHNl
bGYgYXMgYSBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
dmFyIGFycmF5ID0gW107IGFycmF5WzBdID0gYXJyYXk7IGFycmF5ICsgJycgaXMgJycKK1BBU1Mg
dmFyIGVycm9yID0gbmV3IEVycm9yOyBlcnJvci5uYW1lID0gZXJyb3I7IGVycm9yLm1lc3NhZ2Ug
PSBlcnJvcjsgZXJyb3IgKyAnJyBpcyAnOiAnCitQQVNTIHZhciByZWdleHAgPSAvYS87IHJlZ2V4
cC5zb3VyY2UgPSByZWdleHA7IHJlZ2V4cCArICcnIGlzICcvYS8nCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZmFzdC9qcy90b1N0cmluZy1yZWN1cnNpb24tZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL3RvU3RyaW5nLXJlY3Vyc2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvdG9TdHJpbmctcmVjdXJzaW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3RvU3RyaW5nLXJlY3Vyc2lvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Rv
U3RyaW5nLXJlY3Vyc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2pzL3RvU3RyaW5nLXJlY3Vyc2lvbi5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0
cy90b1N0cmluZy1yZWN1cnNpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvdG9TdHJpbmctcmVjdXJzaW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvdG9TdHJpbmctcmVjdXJzaW9uLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgdG9TdHJpbmcoKSBkb2VzIG5vdCBoYXZlIGEgcHJvYmxlbSB3aGVuIGFuIG9iamVjdCBo
YXMgaXRzZWxmIGFzIGEgcHJvcGVydHkuIgorKTsKKworLy8gQXJyYXkgKGVsZW1lbnRzKQorc2hv
dWxkQmUoInZhciBhcnJheSA9IFtdOyBhcnJheVswXSA9IGFycmF5OyBhcnJheSArICcnIiwgIicn
Iik7CisKKy8vIEVycm9yIChuYW1lLCBtZXNzYWdlKQorc2hvdWxkQmUoInZhciBlcnJvciA9IG5l
dyBFcnJvcjsgZXJyb3IubmFtZSA9IGVycm9yOyBlcnJvci5tZXNzYWdlID0gZXJyb3I7IGVycm9y
ICsgJyciLCAiJzogJyIpOworCisvLyBSZWdFeHAgKHNvdXJjZSkKK3Nob3VsZEJlKCJ2YXIgcmVn
ZXhwID0gL2EvOyByZWdleHAuc291cmNlID0gcmVnZXhwOyByZWdleHAgKyAnJyIsICInL2EvJyIp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="70791"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>