<?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>69588</bug_id>
          
          <creation_ts>2011-10-06 18:17:01 -0700</creation_ts>
          <short_desc>AX: re-organize fake elements to use new AccessibilityMockObject</short_desc>
          <delta_ts>2011-10-07 12:12:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>479686</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-06 18:17:01 -0700</bug_when>
    <thetext>This AccessibilityMockObject will consolidate the ways that these fake elements store and retrieve their parent objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479693</commentid>
    <comment_count>1</comment_count>
      <attachid>110072</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-06 18:24:46 -0700</bug_when>
    <thetext>Created attachment 110072
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479707</commentid>
    <comment_count>2</comment_count>
      <attachid>110072</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 18:43:43 -0700</bug_when>
    <thetext>Comment on attachment 110072
patch

Attachment 110072 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10010039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479758</commentid>
    <comment_count>3</comment_count>
      <attachid>110072</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 20:15:49 -0700</bug_when>
    <thetext>Comment on attachment 110072
patch

Attachment 110072 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10010064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479790</commentid>
    <comment_count>4</comment_count>
      <attachid>110072</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-06 22:17:52 -0700</bug_when>
    <thetext>Comment on attachment 110072
patch

Attachment 110072 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10006102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479888</commentid>
    <comment_count>5</comment_count>
      <attachid>110072</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-10-07 02:20:15 -0700</bug_when>
    <thetext>Comment on attachment 110072
patch

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

Please fix the build issues before committing. r=me

&gt; Source/WebCore/accessibility/AccessibilityMockObject.h:15
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.

This has a different version of the license than AccessibilityMockObject.cpp. We use the two clause version in new code.

&gt; Source/WebCore/accessibility/AccessibilityMockObject.h:41
&gt; +    static PassRefPtr&lt;AccessibilityMockObject&gt; create();

I think you can remove this. I don&apos;t see it used or defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480070</commentid>
    <comment_count>6</comment_count>
      <attachid>110159</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-07 09:31:42 -0700</bug_when>
    <thetext>Created attachment 110159
patch to verify building</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480197</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-07 12:12:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/96966</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110072</attachid>
            <date>2011-10-06 18:24:46 -0700</date>
            <delta_ts>2011-10-07 02:20:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35726</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2ODg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTEtMTAtMDYgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogcmUtb3JnYW5pemUg
ZmFrZSBlbGVtZW50cyB0byB1c2UgbmV3IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU4OAorCisgICAgICAg
IFRoaXMgYWRkcyBhbiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCBmb3IgImZha2UiIGVsZW1lbnRz
IHRvIGRlc2NlbmQgZnJvbS4KKyAgICAgICAgSXRzIGJlbmVmaXQgaXMgdG8gY29uc29saWRhdGUg
dGhlIHZhcmlvdXMgd2F5cyB0aGF0IHRoZXNlIGZha2UgZWxlbWVudHMgYXJlIHNldHRpbmcKKyAg
ICAgICAgYW5kIHJldHVybmluZyB0aGVpciBwYXJlbnQgb2JqZWN0cy4KKworICAgICAgICBObyBm
dW5jdGlvbmFsIGNoYW5nZSwgaGVuY2Ugbm8gbmV3IHRlc3RzLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRy
ZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpBY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbmsuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbms6Om5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hp
bGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjp0b0FjY2Vzc2liaWxpdHlNZW51TGlzdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpBY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9u
Ojppc1Zpc2libGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cDo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXA6OmlzT2ZmU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjppc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6cHJl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmFkZENo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpj
aGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0OjpBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TW9ja09iamVjdDo6fkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6OnBhcmVudE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TW9ja09iamVjdDo6c2V0UGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0OjpkZXRhY2hG
cm9tUGFyZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpBY2Nlc3NpYmls
aXR5U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlclRo
dW1iOjplbGVtZW50UmVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2xpZGVyLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmhlYWRlckNvbnRhaW5lcik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvQWNjZXNzaWJpbGl0eVRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW46OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbik6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OnNldFBhcmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdEZvclNlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
SGVhZGVyQ29udGFpbmVyOjpBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjphY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUhl
YWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmg6CisKIDIwMTEtMTAtMDYgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIGJ1aWxkaW5nIHdp
dGggY2xhbmcsIGVuYWJsZSAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgYW5kIC1XZXhpdC10aW1lLWRl
c3RydWN0b3JzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTbGlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5U2xpZGVyX2gKICNkZWZpbmUgQWNjZXNz
aWJpbGl0eVNsaWRlcl9oCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjYsNyArNjcsNyBAQAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7ICAgIAogfTsKIAotY2xhc3MgQWNjZXNzaWJpbGl0eVNs
aWRlclRodW1iIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgeworY2xhc3MgQWNjZXNzaWJp
bGl0eVNsaWRlclRodW1iIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKICAgICAK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI+
IGNyZWF0ZSgpOwpAQCAtNzQsOSArNzUsNiBAQAogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTbGlkZXJUaHVtYlJvbGU7IH0KIAotICAg
IHZvaWQgc2V0UGFyZW50T2JqZWN0KEFjY2Vzc2liaWxpdHlTbGlkZXIqIHNsaWRlcikgeyBtX3Bh
cmVudFNsaWRlciA9IHNsaWRlcjsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTbGlkZXI7IH0KLQogICAgIHZp
cnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Q7CiAKQEAgLTg0LDggKzgyLDYgQEAKIAogcHJpdmF0ZToKICAgICBB
Y2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIoKTsKLQotICAgIEFjY2Vzc2liaWxpdHlTbGlkZXIqIG1f
cGFyZW50U2xpZGVyOwogfTsKIAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCShyZXZp
c2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKQotICAgIDogbV9wb3B1cCgwKQogewogfQogCkBA
IC01MCwxMiArNDksNyBAQAogewogICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7CiB9Ci0KLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6cGFyZW50T2Jq
ZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wb3B1cDsKLX0KLQorICAgIAogYm9vbCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgLy8gZGlz
YWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIHBhcmVudCA8c2VsZWN0PiBlbGVtZW50IGlzIGRp
c2FibGVkLApAQCAtNjcsNyArNjEsNyBAQAogewogICAgIC8vIEluIGEgc2luZ2xlLW9wdGlvbiBz
ZWxlY3Qgd2l0aCB0aGUgcG9wdXAgY29sbGFwc2VkLCBvbmx5IHRoZSBzZWxlY3RlZAogICAgIC8v
IGl0ZW0gaXMgY29uc2lkZXJlZCB2aXNpYmxlLgotICAgIHJldHVybiAhbV9wb3B1cC0+aXNPZmZT
Y3JlZW4oKSB8fCBpc1NlbGVjdGVkKCk7CisgICAgcmV0dXJuICFtX3BhcmVudC0+aXNPZmZTY3Jl
ZW4oKSB8fCBpc1NlbGVjdGVkKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uOjppc09mZlNjcmVlbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHJldmlzaW9uIDk2ODI3KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsMTMgQEAKICAgICBib29sIGhhc0FSSUFSb2xlKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdDsKIH07
Ci0KKyAgICAKK2lubGluZSBBY2Nlc3NpYmlsaXR5VGFibGUqIHRvQWNjZXNzaWJpbGl0eVRhYmxl
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBv
YmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGUqPihvYmplY3QpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZSAKIAogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlUYWJsZV9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3Bw
CShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAqPihsaXN0KS0+c2V0TWVudUxpc3QodGhpcyk7CisgICAgc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QqPihsaXN0KS0+c2V0UGFyZW50KHRoaXMpOwogICAgIG1fY2hp
bGRyZW4uYXBwZW5kKGxpc3QpOwogCiAgICAgbGlzdC0+YWRkQ2hpbGRyZW4oKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDk2ODI3KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6QWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyKCkKLSAgICA6IG1fcGFyZW50VGFibGUoMCkKIHsKIH0KIApAQCAt
NzAsMTQgKzY5LDE0IEBACiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVy
OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFyZW50VGFi
bGUpCisgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICByZXR1cm4gbV9w
YXJlbnRUYWJsZS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOworICAgIHJldHVybiBtX3BhcmVu
dC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4oKQpAQCAtODUsMTAgKzg0LDEwIEBACiAgICAg
QVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAogICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1
ZTsKLSAgICBpZiAoIW1fcGFyZW50VGFibGUgfHwgIW1fcGFyZW50VGFibGUtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkpCisgICAgaWYgKCFtX3BhcmVudCB8fCAhbV9wYXJlbnQtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGUqPihtX3BhcmVudFRhYmxlKS0+Y29sdW1uSGVhZGVycyhtX2NoaWxkcmVu
KTsKKyAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX3BhcmVudCktPmNvbHVt
bkhlYWRlcnMobV9jaGlsZHJlbik7CiAgICAgCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jaGls
ZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGxlbmd0aDsgKytrKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rLmgJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDEzICsyOSwxMyBAQAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rX2gK
ICNkZWZpbmUgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlua19oCiAKLSNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKICNp
bmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1jbGFzcyBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgeworY2xhc3MgQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluayA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CiAgICAgICAgIAog
cHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKCk7CkBAIC01MCwxMyArNTAs
MTEgQEAKICAgICBIVE1MTWFwRWxlbWVudCogbWFwRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwRWxlbWVudC5nZXQoKTsgfQogICAgIAogICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJlYUVsZW1lbnQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFBhcmVudChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KICAgICAgICAg
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgS1VSTCB1
cmwoKSBjb25zdDsKQEAgLTY0LDcgKzYyLDggQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdDsK
LQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7
CisgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdDsKIApAQCAtNzMsNyArNzIsNiBA
QAogcHJpdmF0ZTogICAgCiAgICAgUmVmUHRyPEhUTUxBcmVhRWxlbWVudD4gbV9hcmVhRWxlbWVu
dDsKICAgICBSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IG1fbWFwRWxlbWVudDsKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1h
cExpbmsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCkKLSAgICA6IG1fcGFyZW50VGFibGUoMCkKIHsKIH0K
IApAQCAtNTYsOSArNTUsOSBAQAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uKCkpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6c2V0
UGFyZW50VGFibGUoQWNjZXNzaWJpbGl0eVRhYmxlKiB0YWJsZSkKK3ZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KQogewot
ICAgIG1fcGFyZW50VGFibGUgPSB0YWJsZTsKKyAgICBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdDo6
c2V0UGFyZW50KHBhcmVudCk7CiAgICAgCiAgICAgY2xlYXJDaGlsZHJlbigpOwogfQpAQCAtODMs
MTQgKzgyLDE4IEBACiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW46OmhlYWRlck9iamVjdCgpCiB7Ci0gICAgaWYgKCFtX3BhcmVudFRhYmxlKQorICAg
IGlmICghbV9wYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX3BhcmVudFRhYmxlLT5yZW5kZXJlcigpOworICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBpZiAobV9wYXJlbnRUYWJsZS0+aXNBcmlhVGFi
bGUoKSkgeworICAgIGlmICghbV9wYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUg
PSB0b0FjY2Vzc2liaWxpdHlUYWJsZShtX3BhcmVudCk7CisgICAgaWYgKHBhcmVudFRhYmxlLT5p
c0FyaWFUYWJsZSgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dD
aGlsZHJlbiA9IGNoaWxkcmVuKCk7CiAgICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuQ291bnQgPSBy
b3dDaGlsZHJlbi5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGls
ZHJlbkNvdW50OyArK2kpIHsKQEAgLTE1OCwxOSArMTYxLDE5IEBACiAgICAgaWYgKCFjZWxsKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX3BhcmVudFRhYmxlLT5heE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKGNlbGwpOworICAgIHJldHVybiBtX3BhcmVudC0+YXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShjZWxsKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
cGFyZW50VGFibGUpCisgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgCi0g
ICAgcmV0dXJuIG1fcGFyZW50VGFibGUtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKKyAgICBy
ZXR1cm4gbV9wYXJlbnQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKIH0KICAgICAKIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbigpCkBAIC0xNzgsMTMgKzE4MSwx
NCBAQAogICAgIEFTU0VSVCghbV9oYXZlQ2hpbGRyZW4pOyAKICAgICAKICAgICBtX2hhdmVDaGls
ZHJlbiA9IHRydWU7Ci0gICAgaWYgKCFtX3BhcmVudFRhYmxlKQorICAgIGlmICghbV9wYXJlbnQg
fHwgIW1fcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgaW50IG51bVJvd3MgPSBtX3BhcmVudFRhYmxlLT5yb3dDb3VudCgpOworICAgIEFj
Y2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUgPSB0b0FjY2Vzc2liaWxpdHlUYWJsZShtX3Bh
cmVudCk7CisgICAgaW50IG51bVJvd3MgPSBwYXJlbnRUYWJsZS0+cm93Q291bnQoKTsKICAgICAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVJvd3M7IGkrKykgewotICAgICAgICBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsKiBjZWxsID0gbV9wYXJlbnRUYWJsZS0+Y2VsbEZvckNvbHVtbkFuZFJv
dyhtX2NvbHVtbkluZGV4LCBpKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2Vs
bCA9IHBhcmVudFRhYmxlLT5jZWxsRm9yQ29sdW1uQW5kUm93KG1fY29sdW1uSW5kZXgsIGkpOwog
ICAgICAgICBpZiAoIWNlbGwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHAJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBA
QAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpOwogCiAgICAgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKiB0aHVtYiA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYio+KGNhY2hlLT5nZXRPckNyZWF0ZShT
bGlkZXJUaHVtYlJvbGUpKTsKLSAgICB0aHVtYi0+c2V0UGFyZW50T2JqZWN0KHRoaXMpOworICAg
IHRodW1iLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5n
IHRoZSB2YWx1ZSBpbmRpY2F0b3IgdG8gdGhlIGhpZXJhcmNoeSwKICAgICAvLyBhbGxvdyB0aGUg
cGxhdGZvcm0gdG8gbWFrZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IGl0LgpAQCAtMTY1LDcgKzE2
NSw2IEBACiAKIAogQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpBY2Nlc3NpYmlsaXR5U2xpZGVy
VGh1bWIoKQotICAgIDogbV9wYXJlbnRTbGlkZXIoMCkKIHsKIH0KIApAQCAtMTc2LDcgKzE3NSw3
IEBACiAgICAgCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6ZWxlbWVudFJl
Y3QoKSBjb25zdAogewotICAgIFJlbmRlck9iamVjdCogc2xpZGVyUmVuZGVyZXIgPSBtX3BhcmVu
dFNsaWRlci0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHNsaWRlclJlbmRlcmVyID0g
bV9wYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFzbGlkZXJSZW5kZXJlciB8fCAhc2xpZGVy
UmVuZGVyZXItPmlzU2xpZGVyKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAgICAg
cmV0dXJuIHNsaWRlclRodW1iRWxlbWVudE9mKHNsaWRlclJlbmRlcmVyLT5ub2RlKCkpLT5nZXRS
ZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0X2gKKyNkZWZpbmUg
QWNjZXNzaWJpbGl0eU1vY2tPYmplY3RfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKKyAgICAKK3Byb3RlY3RlZDoK
KyAgICBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCgpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5B
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdCgpOworICAgIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3Bh
cmVudCA9IHBhcmVudDsgfTsKKyAgICAKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBw
YXJlbnQgb2JqZWN0IGNsZWFycyBpdHMgY2hpbGRyZW4uCisgICAgdm9pZCBkZXRhY2hGcm9tUGFy
ZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtX3BhcmVudDsKK307IAorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAK
KworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHJldmlz
aW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uKiBjb2x1bW4gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4q
PihheENhY2hlLT5nZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CiAgICAgICAgIGNvbHVtbi0+c2V0
Q29sdW1uSW5kZXgoKGludClpKTsKLSAgICAgICAgY29sdW1uLT5zZXRQYXJlbnRUYWJsZSh0aGlz
KTsKKyAgICAgICAgY29sdW1uLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5h
cHBlbmQoY29sdW1uKTsKICAgICAgICAgaWYgKCFjb2x1bW4tPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkKICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNvbHVtbik7CkBAIC0zNjksNyAr
MzY5LDcgQEAKICAgICAgICAgcmV0dXJuIG1faGVhZGVyQ29udGFpbmVyOwogICAgIAogICAgIG1f
aGVhZGVyQ29udGFpbmVyID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyKj4oYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShUYWJsZUhlYWRlckNvbnRhaW5l
clJvbGUpKTsKLSAgICBtX2hlYWRlckNvbnRhaW5lci0+c2V0UGFyZW50VGFibGUodGhpcyk7Cisg
ICAgbV9oZWFkZXJDb250YWluZXItPnNldFBhcmVudCh0aGlzKTsKICAgICAKICAgICByZXR1cm4g
bV9oZWFkZXJDb250YWluZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCShyZXZpc2lvbiA5
NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cF9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwX2gKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5TW9ja09iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDEy
ICszNSwxMCBAQAogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsK
IAotY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAgOiBwdWJsaWMgQWNjZXNzaWJpbGl0
eU9iamVjdCB7CitjbGFzcyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCA6IHB1YmxpYyBBY2Nl
c3NpYmlsaXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCk7IH0KIAotICAgIHZvaWQgc2V0TWVudUxpc3QoQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0Kik7Ci0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CiAKQEAgLTU2LDE0ICs1
NCwxMSBAQAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gTWVudUxpc3RQb3B1cFJvbGU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2li
bGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVj
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsK
IAogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogbWVudUxpc3RPcHRpb25BY2Nlc3Np
YmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3QqIG1fbWVudUxpc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmgJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTkgKzI2LDE4IEBACiAjaWZuZGVmIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbl9o
CiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbl9oCiAKLSNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cDsKIGNsYXNzIEhUTUxFbGVtZW50OwogCi1jbGFzcyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b24gOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7CitjbGFzcyBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24gOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbik7IH0K
IAogICAgIHZvaWQgc2V0RWxlbWVudChIVE1MRWxlbWVudCopOwotICAgIHZvaWQgc2V0UGFyZW50
KEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwKiBwb3B1cCkgeyBtX3BvcHVwID0gcG9wdXA7IH0K
IAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKTsKQEAgLTUwLDcg
KzQ5LDYgQEAKICAgICB2aXJ0dWFsIExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVs
ZW1lbnRSZWN0KCkuc2l6ZSgpOyB9CiAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1l
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVj
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVu
KCkgY29uc3Q7CkBAIC02Miw3ICs2MCw2IEBACiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFs
dWUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9lbGVtZW50OwotICAgIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwKiBtX3BvcHVwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCShyZXZpc2lvbiA5NjgyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAKIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bms6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsoKQogICAgIDogbV9hcmVhRWxlbWVudCgwKQog
ICAgICwgbV9tYXBFbGVtZW50KDApCi0gICAgLCBtX3BhcmVudCgwKQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0LmgJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsMTIgQEAK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiB9OwogCitpbmxpbmUgQWNjZXNz
aWJpbGl0eU1lbnVMaXN0KiB0b0FjY2Vzc2liaWxpdHlNZW51TGlzdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2JqZWN0LT5pc01lbnVMaXN0
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TWVudUxpc3QqPihvYmpl
Y3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBBY2Nlc3NpYmls
aXR5TWVudUxpc3RfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCShyZXZp
c2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMyBA
QAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXJfaAogI2RlZmluZSBB
Y2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXJfaAogCi0jaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
ciA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lciA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CiAgICAg
CiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpOwpAQCAt
NDUsOSArNDUsNiBAQAogICAgIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gVGFibGVIZWFkZXJDb250YWluZXJSb2xlOyB9CiAgICAgCi0g
ICAgdm9pZCBzZXRQYXJlbnRUYWJsZShBY2Nlc3NpYmlsaXR5VGFibGUqIHRhYmxlKSB7IG1fcGFy
ZW50VGFibGUgPSB0YWJsZTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUYWJsZTsgfQotICAgIAogICAgIHZp
cnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbigpOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOwogICAgIApAQCAtNTUsNyArNTIsNiBAQAogICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAgIAogcHJpdmF0ZToK
LSAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIG1fcGFyZW50VGFibGU7CiAgICAgTGF5b3V0UmVjdCBt
X2hlYWRlclJlY3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIEFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbl9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbl9oCiAKLSNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Qu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAKQEAgLTM3LDcgKzM3LDcgQEAKICAgICAKIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbjsKIAot
Y2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgeworY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uIDogcHVibGljIEFjY2Vzc2liaWxp
dHlNb2NrT2JqZWN0IHsKICAgICAKIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29s
dW1uKCk7CkBAIC00NSw4ICs0NSw2IEBACiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4oKTsKICAgICAKLSAgICB2b2lkIHNldFBhcmVudFRhYmxlKEFjY2Vzc2liaWxpdHlU
YWJsZSopOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJlbnRUYWJsZTsgfQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGhlYWRlck9iamVjdCgpOwogICAgICAgICAKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0OwpAQCAtNTgsMTIgKzU2LDEyIEBACiAgICAgCiAgICAgdmlydHVh
bCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKCk7CiAgICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChBY2Nl
c3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKICAgICAK
IHByaXZhdGU6ICAgIAotICAgIEFjY2Vzc2liaWxpdHlUYWJsZSogbV9wYXJlbnRUYWJsZTsKICAg
ICBpbnQgbV9jb2x1bW5JbmRleDsKICAgICBMYXlvdXRSZWN0IG1fY29sdW1uUmVjdDsKICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitBY2Nlc3Np
YmlsaXR5TW9ja09iamVjdDo6QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKQorICAgIDogbV9wYXJl
bnQoMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6On5BY2Nlc3NpYmlsaXR5TW9j
a09iamVjdCgpCit7Cit9CisgICAgCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCShyZXZpc2lvbiA5Njgy
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBACiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyArK2kpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uKiBjb2x1bW4gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4q
PihheENhY2hlLT5nZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CiAgICAgICAgIGNvbHVtbi0+c2V0
Q29sdW1uSW5kZXgoKGludClpKTsKLSAgICAgICAgY29sdW1uLT5zZXRQYXJlbnRUYWJsZSh0aGlz
KTsKKyAgICAgICAgY29sdW1uLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5h
cHBlbmQoY29sdW1uKTsKICAgICAgICAgaWYgKCFjb2x1bW4tPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkKICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNvbHVtbik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNiBAQAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXA6OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwKCkKLSAgICA6IG1f
bWVudUxpc3QoMCkKIHsKIH0KIApAQCAtNDksMTcgKzQ4LDEyIEBACiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXA6OmlzT2ZmU2NyZWVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9t
ZW51TGlzdC0+aXNDb2xsYXBzZWQoKTsKKyAgICByZXR1cm4gbV9wYXJlbnQtPmlzQ29sbGFwc2Vk
KCk7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVw
OjpwYXJlbnRPYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBtX21lbnVMaXN0OwotfQotCiBi
b29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjppc0VuYWJsZWQoKSBjb25zdAogewotICAg
IHJldHVybiBtX21lbnVMaXN0LT5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9wYXJlbnQtPmlz
RW5hYmxlZCgpOwogfQogCiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24qIEFjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CkBAIC02Nyw3ICs2MSw3IEBACiAgICAgaWYgKCFlbGVtZW50
IHx8ICFlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gbV9tZW51TGlzdC0+cmVuZGVyZXIo
KS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShNZW51TGlzdE9wdGlv
blJvbGUpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoTWVudUxpc3RPcHRpb25Sb2xlKTsKICAgICBBU1NF
UlQob2JqZWN0LT5pc01lbnVMaXN0T3B0aW9uKCkpOwogCiAgICAgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uKiBvcHRpb24gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b24qPihvYmplY3QpOwpAQCAtNzgsMTMgKzcyLDEzIEBACiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OnByZXNzKCkgY29uc3QKIHsKLSAgICBtX21lbnVMaXN0LT5wcmVzcygpOwor
ICAgIG1fcGFyZW50LT5wcmVzcygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRDaGlsZHJlbigpCiB7Ci0gICAgTm9kZSogc2VsZWN0
Tm9kZSA9IG1fbWVudUxpc3QtPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICBOb2RlKiBzZWxlY3RO
b2RlID0gbV9wYXJlbnQtPm5vZGUoKTsKICAgICBpZiAoIXNlbGVjdE5vZGUpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTA1LDM1ICs5OSwyOCBAQAogCiB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQoKQogeworICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
YXhPYmplY3RDYWNoZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBtX2NoaWxkcmVuLnNpemUoKTsg
aSA+IDAgOyAtLWkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBtX2No
aWxkcmVuW2kgLSAxXS5nZXQoKTsKLSAgICAgICAgaWYgKGNoaWxkLT5hY3Rpb25FbGVtZW50KCkg
JiYgIWNoaWxkLT5hY3Rpb25FbGVtZW50KCktPmF0dGFjaGVkKCkpIHsKLSAgICAgICAgICAgIG1f
bWVudUxpc3QtPnJlbmRlcmVyKCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3Zl
KGNoaWxkLT5heE9iamVjdElEKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChjaGlsZC0+YWN0
aW9uRWxlbWVudCgpICYmICFjaGlsZC0+YWN0aW9uRWxlbWVudCgpLT5hdHRhY2hlZCgpKQorICAg
ICAgICAgICAgY2FjaGUtPnJlbW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKICAgICB9CisgICAg
CiAgICAgbV9jaGlsZHJlbi5jbGVhcigpOwogICAgIG1faGF2ZUNoaWxkcmVuID0gZmFsc2U7CiAg
ICAgYWRkQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6
c2V0TWVudUxpc3QoQWNjZXNzaWJpbGl0eU1lbnVMaXN0KiBtZW51TGlzdCkKLXsKLSAgICBBU1NF
UlRfQVJHKG1lbnVMaXN0LCBtZW51TGlzdCk7Ci0gICAgQVNTRVJUKCFtX21lbnVMaXN0KTsKLSAg
ICBtX21lbnVMaXN0ID0gbWVudUxpc3Q7Ci19Ci0KIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpCiB7CiAgICAgQVNT
RVJUX0FSRyhvcHRpb25JbmRleCwgb3B0aW9uSW5kZXggPj0gMCk7CiAgICAgQVNTRVJUX0FSRyhv
cHRpb25JbmRleCwgb3B0aW9uSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG1fY2hpbGRyZW4uc2l6
ZSgpKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9tZW51TGlzdC0+cmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKTsKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50
LT5heE9iamVjdENhY2hlKCk7CisgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENh
Y2hlKCk7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNoaWxkID0gbV9jaGlsZHJl
bltvcHRpb25JbmRleF0uZ2V0KCk7CiAKLSAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGls
ZC5nZXQoKSwgZG9jdW1lbnQuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVu
dENoYW5nZWQsIHRydWUsIFBvc3RTeW5jaHJvbm91c2x5KTsKLSAgICBjYWNoZS0+cG9zdE5vdGlm
aWNhdGlvbihjaGlsZC5nZXQoKSwgZG9jdW1lbnQuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVu
dUxpc3RJdGVtU2VsZWN0ZWQsIHRydWUsIFBvc3RTeW5jaHJvbm91c2x5KTsKKyAgICBjYWNoZS0+
cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5nZXQoKSwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6
QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgdHJ1ZSwgUG9zdFN5bmNocm9ub3VzbHkpOworICAg
IGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVj
dENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVjdGVkLCB0cnVlLCBQb3N0U3luY2hyb25vdXNseSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk2ODI3KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC02NzAsNiArNjcwLDggQEAKIAkJMjlBODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8q
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLzsgfTsKIAkJMjlBODEyNEEwRkJCOUNBOTAwNTEw
MjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8q
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tICovOyB9OwogCQkyOUE4MTI0QjBGQkI5
Q0E5MDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QTgxMjQ3MEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9i
amVjdENhY2hlTWFjLm1tICovOyB9OworCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5QUNCMjExMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5oICovOyB9OworCQkyOUFDQjIxNDE0M0U3NDk4MDA2QkNBNUYgLyogQWNjZXNzaWJp
bGl0eU1vY2tPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjlBQ0IyMTMxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJMkJFOEUyQzcxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hh
cnNldFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oICov
OyB9OwogCQkyQkU4RTJDOTEyQTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJCRThF
MkM4MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwICovOyB9Owog
CQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDNBMEUzNTEzQTdENzYxMDBF
ODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc3MzcsNiArNzczOSw4IEBACiAJCTI5QTgxMjQ1MEZCQjlD
QTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyog
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2Jq
ZWN0Q2FjaGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
WE9iamVjdENhY2hlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUFDQjIx
MTE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBQ0IyMTMxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIu
aDsgcGF0aCA9IHBhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEM0EwRTM1MTNBN0Q3NjEwMEU4NUFG
MCAvKiBTVkdQYXJzaW5nRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUGFyc2luZ0Vycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUyMiw2
ICsxNDUyNiw4IEBACiAJCQkJNzZDREQyRjExMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbi5oICovLAogCQkJCTc2Q0REMkVFMTEwM0RBNjYwMDY4MDUyMSAvKiBB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgKi8sCiAJCQkJNzZDREQyRUYxMTAzREE2NjAw
NjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggKi8sCisJCQkJMjlBQ0IyMTMx
NDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCAqLywKKwkJCQky
OUFDQjIxMTE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCAqLywK
IAkJCQkyOTgxQ0FBNTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Ki8sCiAJCQkJMjlBODEyMTgwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3Qu
aCAqLywKIAkJCQlBNDA5Qzk4MjExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dy
ZXNzSW5kaWNhdG9yLmNwcCAqLywKQEAgLTI0NTY0LDYgKzI0NTcwLDcgQEAKIAkJCQkzMTA2MDM3
NTE0MzI4MTlDMDBBQkY0QkEgLyogSlNXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzEwNjAzNzkxNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTA2MDM3QjE0MzI4MUNEMDBBQkY0QkEgLyogRE9N
V2ViS2l0Q1NTRmlsdGVyVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjlBQ0Iy
MTIxNDNFNzEyODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI3NDA5LDYgKzI3NDE2LDcgQEAKIAkJCQkzMTA2MDM2RjE0MzI3RDJFMDBBQkY0
QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwNjAz
NzQxNDMyODE5QzAwQUJGNEJBIC8qIEpTV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzEwNjAzN0ExNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRl
clZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBQ0IyMTQxNDNFNzQ5ODAwNkJDQTVGIC8q
IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>
<flag name="review"
          id="107473"
          type_id="1"
          status="+"
          setter="jhoneycutt"
    />
    <flag name="commit-queue"
          id="107477"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110159</attachid>
            <date>2011-10-07 09:31:42 -0700</date>
            <delta_ts>2011-10-07 09:31:42 -0700</delta_ts>
            <desc>patch to verify building</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>38657</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTY4MjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02MTgs
NiArNjE4LDggQEAKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbi5jcHAgXAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwIFwKKyAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNw
cCBcICAgIAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgXCAgICAK
ICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBcICAgIAogICAgIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIFwgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5Njk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDc3IEBACisyMDExLTEwLTA3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IHJlLW9yZ2FuaXplIGZha2UgZWxlbWVudHMgdG8g
dXNlIG5ldyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1ODgKKworICAgICAgICBUaGlzIGFkZHMgYW4gQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QgZm9yICJmYWtlIiBlbGVtZW50cyB0byBkZXNjZW5kIGZyb20u
CisgICAgICAgIEl0cyBiZW5lZml0IGlzIHRvIGNvbnNvbGlkYXRlIHRoZSB2YXJpb3VzIHdheXMg
dGhhdCB0aGVzZSBmYWtlIGVsZW1lbnRzIGFyZSBzZXR0aW5nCisgICAgICAgIGFuZCByZXR1cm5p
bmcgdGhlaXIgcGFyZW50IG9iamVjdHMuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2Us
IGhlbmNlIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBKb24gSG9uZXljdXR0
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlB
UklBR3JpZDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbms6Om5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0FjY2Vzc2liaWxpdHlNZW51
TGlzdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uOjppc1Zpc2libGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cDo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXApOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmlzT2ZmU2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjppc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVMaXN0T3B0
aW9uQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cDo6cHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXA6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbik6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0OjpBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TW9ja09iamVjdDo6fkFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNb2NrT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1v
Y2tPYmplY3Q6OnBhcmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TW9ja09iamVjdDo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNs
aWRlcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRl
clRodW1iOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNsaWRlclRodW1iOjplbGVtZW50UmVjdCk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6Omhl
YWRlckNvbnRhaW5lcik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQWNjZXNzaWJpbGl0eVRhYmxlKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OnNldFBhcmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRl
ck9iamVjdEZvclNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpBY2Nlc3NpYmlsaXR5VGFibGVIZWFk
ZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVy
Q29udGFpbmVyOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmg6CisKIDIw
MTEtMTAtMDYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBCb3JkZXJWYWx1ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDc2Niw2ICsyNDc2
NiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nl
c3NpYmlsaXR5TW9ja09iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIgog
CQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCShyZXZpc2lvbiA5NjgyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIEFjY2Vzc2liaWxpdHlTbGlk
ZXJfaAogI2RlZmluZSBBY2Nlc3NpYmlsaXR5U2xpZGVyX2gKIAorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Niw3ICs2Nyw3IEBACiAgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsgICAgCiB9OwogCi1j
bGFzcyBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVj
dCB7CitjbGFzcyBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QgewogICAgIAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlTbGlkZXJUaHVtYj4gY3JlYXRlKCk7CkBAIC03NCw5ICs3NSw2IEBACiAKICAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNsaWRl
clRodW1iUm9sZTsgfQogCi0gICAgdm9pZCBzZXRQYXJlbnRPYmplY3QoQWNjZXNzaWJpbGl0eVNs
aWRlciogc2xpZGVyKSB7IG1fcGFyZW50U2xpZGVyID0gc2xpZGVyOyB9Ci0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVu
dFNsaWRlcjsgfQotCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKIApAQCAtODQsOCArODIsNiBA
QAogCiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYigpOwotCi0gICAgQWNj
ZXNzaWJpbGl0eVNsaWRlciogbV9wYXJlbnRTbGlkZXI7CiB9OwogCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbi5jcHAJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw2IEBACiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb246OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbigpCi0gICAgOiBt
X3BvcHVwKDApCiB7CiB9CiAKQEAgLTUwLDEyICs0OSw3IEBACiB7CiAgICAgcmV0dXJuIG1fZWxl
bWVudC5nZXQoKTsKIH0KLQotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uOjpwYXJlbnRPYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBtX3BvcHVwOwot
fQotCisgICAgCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNFbmFibGVkKCkg
Y29uc3QKIHsKICAgICAvLyBkaXNhYmxlZCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IDxz
ZWxlY3Q+IGVsZW1lbnQgaXMgZGlzYWJsZWQsCkBAIC02Nyw3ICs2MSw3IEBACiB7CiAgICAgLy8g
SW4gYSBzaW5nbGUtb3B0aW9uIHNlbGVjdCB3aXRoIHRoZSBwb3B1cCBjb2xsYXBzZWQsIG9ubHkg
dGhlIHNlbGVjdGVkCiAgICAgLy8gaXRlbSBpcyBjb25zaWRlcmVkIHZpc2libGUuCi0gICAgcmV0
dXJuICFtX3BvcHVwLT5pc09mZlNjcmVlbigpIHx8IGlzU2VsZWN0ZWQoKTsKKyAgICByZXR1cm4g
IW1fcGFyZW50LT5pc09mZlNjcmVlbigpIHx8IGlzU2VsZWN0ZWQoKTsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmlzT2ZmU2NyZWVuKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkocmV2
aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5MiwxMyBAQAogICAgIGJvb2wgaGFz
QVJJQVJvbGUoKSBjb25zdDsKICAgICBib29sIGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSgpIGNvbnN0OwogfTsKLQorICAgIAoraW5saW5lIEFjY2Vzc2liaWxpdHlUYWJsZSog
dG9BY2Nlc3NpYmlsaXR5VGFibGUoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQoreworICAg
IEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KG9iamVjdCk7Cit9CisgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAogCiAjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRhYmxl
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdC5jcHAJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCo+KGxpc3QpLT5zZXRNZW51TGlzdCh0aGlzKTsK
KyAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCo+KGxpc3QpLT5zZXRQYXJl
bnQodGhpcyk7CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQobGlzdCk7CiAKICAgICBsaXN0LT5hZGRD
aGlsZHJlbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAkocmV2
aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyOjpBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIoKQotICAgIDogbV9wYXJlbnRU
YWJsZSgwKQogewogfQogCkBAIC03MCwxNCArNjksMTQgQEAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5
VGFibGVIZWFkZXJDb250YWluZXI6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewot
ICAgIGlmICghbV9wYXJlbnRUYWJsZSkKKyAgICBpZiAoIW1fcGFyZW50KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICNpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKIAotICAgIHJldHVybiBtX3BhcmVudFRhYmxlLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7
CisgICAgcmV0dXJuIG1fcGFyZW50LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjphZGRDaGlsZHJlbigpCkBAIC04
NSwxMCArODQsMTAgQEAKICAgICBBU1NFUlQoIW1faGF2ZUNoaWxkcmVuKTsgCiAgICAgCiAgICAg
bV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICghbV9wYXJlbnRUYWJsZSB8fCAhbV9wYXJl
bnRUYWJsZS0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICBpZiAoIW1fcGFyZW50IHx8ICFt
X3BhcmVudC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KG1fcGFyZW50VGFibGUpLT5jb2x1
bW5IZWFkZXJzKG1fY2hpbGRyZW4pOworICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZSo+KG1fcGFyZW50KS0+Y29sdW1uSGVhZGVycyhtX2NoaWxkcmVuKTsKICAgICAKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAw
OyBrIDwgbGVuZ3RoOyArK2spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAkocmV2aXNpb24gOTY4Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDEzIEBACiAjaWZuZGVmIEFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmtfaAogI2RlZmluZSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rX2gK
IAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5TW9ja09iamVjdC5oIgogI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNYXBFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLWNsYXNzIEFj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7Citj
bGFzcyBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0IHsKICAgICAgICAgCiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsoKTsKQEAgLTUwLDEzICs1MCwxMSBAQAogICAgIEhUTUxNYXBFbGVtZW50KiBtYXBFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9tYXBFbGVtZW50LmdldCgpOyB9CiAgICAgCiAgICAgdmlydHVh
bCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9hcmVhRWxlbWVudC5nZXQoKTsgfQotICAg
IHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3BhcmVudCA9
IHBhcmVudDsgfQogICAgICAgICAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVt
ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBLVVJMIHVybCgpIGNvbnN0OwpAQCAtNjQsNyArNjIsOCBAQAogICAgIHZp
cnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbigpIGNvbnN0OwotCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnRPYmplY3QoKSBjb25zdDsKKyAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1
ZUZvck1TQUEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0
OwogCkBAIC03Myw3ICs3Miw2IEBACiBwcml2YXRlOiAgICAKICAgICBSZWZQdHI8SFRNTEFyZWFF
bGVtZW50PiBtX2FyZWFFbGVtZW50OwogICAgIFJlZlB0cjxIVE1MTWFwRWxlbWVudD4gbV9tYXBF
bGVtZW50OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1fcGFyZW50OwogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNiBAQAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4oKQotICAgIDogbV9w
YXJlbnRUYWJsZSgwKQogewogfQogCkBAIC01Niw5ICs1NSw5IEBACiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4oKSk7CiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uOjpzZXRQYXJlbnRUYWJsZShBY2Nlc3NpYmlsaXR5VGFibGUqIHRhYmxl
KQordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OnNldFBhcmVudChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQpCiB7Ci0gICAgbV9wYXJlbnRUYWJsZSA9IHRhYmxlOworICAgIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0OjpzZXRQYXJlbnQocGFyZW50KTsKICAgICAKICAgICBjbGVhckNo
aWxkcmVuKCk7CiB9CkBAIC04MywxNCArODIsMTggQEAKICAgICAKIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0KCkKIHsKLSAgICBpZiAo
IW1fcGFyZW50VGFibGUpCisgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fcGFyZW50VGFibGUtPnJlbmRlcmVy
KCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fcGFyZW50LT5yZW5kZXJlcigpOwog
ICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIGlmIChtX3Bh
cmVudFRhYmxlLT5pc0FyaWFUYWJsZSgpKSB7CisgICAgaWYgKCFtX3BhcmVudC0+aXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgQWNjZXNzaWJpbGl0
eVRhYmxlKiBwYXJlbnRUYWJsZSA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fcGFyZW50KTsKKyAg
ICBpZiAocGFyZW50VGFibGUtPmlzQXJpYVRhYmxlKCkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHJvd0NoaWxkcmVuID0gY2hpbGRyZW4oKTsKICAgICAgICAgdW5zaWdu
ZWQgY2hpbGRyZW5Db3VudCA9IHJvd0NoaWxkcmVuLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgewpAQCAtMTU4LDE5ICsxNjEsMTkg
QEAKICAgICBpZiAoIWNlbGwpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fcGFy
ZW50VGFibGUtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY2VsbCk7CisgICAgcmV0dXJu
IG1fcGFyZW50LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNlbGwpOwogfQogICAgIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogewotICAgIGlmICghbV9wYXJlbnRUYWJsZSkKKyAgICBpZiAoIW1fcGFyZW50KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICNpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKICAgICAKLSAgICByZXR1cm4gbV9wYXJlbnRUYWJsZS0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpOworICAgIHJldHVybiBtX3BhcmVudC0+YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpOwogfQogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmFkZENoaWxkcmVu
KCkKQEAgLTE3OCwxMyArMTgxLDE0IEBACiAgICAgQVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAog
ICAgIAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFyZW50VGFibGUp
CisgICAgaWYgKCFtX3BhcmVudCB8fCAhbV9wYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbnQgbnVtUm93cyA9IG1fcGFyZW50VGFibGUt
PnJvd0NvdW50KCk7CisgICAgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRUYWJsZSA9IHRvQWNj
ZXNzaWJpbGl0eVRhYmxlKG1fcGFyZW50KTsKKyAgICBpbnQgbnVtUm93cyA9IHBhcmVudFRhYmxl
LT5yb3dDb3VudCgpOwogICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUm93czsgaSsr
KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGwgPSBtX3BhcmVudFRhYmxl
LT5jZWxsRm9yQ29sdW1uQW5kUm93KG1fY29sdW1uSW5kZXgsIGkpOworICAgICAgICBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsKiBjZWxsID0gcGFyZW50VGFibGUtPmNlbGxGb3JDb2x1bW5BbmRSb3co
bV9jb2x1bW5JbmRleCwgaSk7CiAgICAgICAgIGlmICghY2VsbCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX3JlbmRl
cmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7CiAKICAgICBBY2Nlc3NpYmlsaXR5U2xp
ZGVyVGh1bWIqIHRodW1iID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKj4o
Y2FjaGUtPmdldE9yQ3JlYXRlKFNsaWRlclRodW1iUm9sZSkpOwotICAgIHRodW1iLT5zZXRQYXJl
bnRPYmplY3QodGhpcyk7CisgICAgdGh1bWItPnNldFBhcmVudCh0aGlzKTsKIAogICAgIC8vIEJl
Zm9yZSBhY3R1YWxseSBhZGRpbmcgdGhlIHZhbHVlIGluZGljYXRvciB0byB0aGUgaGllcmFyY2h5
LAogICAgIC8vIGFsbG93IHRoZSBwbGF0Zm9ybSB0byBtYWtlIGEgZmluYWwgZGVjaXNpb24gYWJv
dXQgaXQuCkBAIC0xNjUsNyArMTY1LDYgQEAKIAogCiBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6
OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYigpCi0gICAgOiBtX3BhcmVudFNsaWRlcigwKQogewog
fQogCkBAIC0xNzYsNyArMTc1LDcgQEAKICAgICAKIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNs
aWRlclRodW1iOjplbGVtZW50UmVjdCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBzbGlk
ZXJSZW5kZXJlciA9IG1fcGFyZW50U2xpZGVyLT5yZW5kZXJlcigpOworICAgIFJlbmRlck9iamVj
dCogc2xpZGVyUmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXNsaWRl
clJlbmRlcmVyIHx8ICFzbGlkZXJSZW5kZXJlci0+aXNTbGlkZXIoKSkKICAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKICAgICByZXR1cm4gc2xpZGVyVGh1bWJFbGVtZW50T2Yoc2xpZGVyUmVu
ZGVyZXItPm5vZGUoKSktPmdldFJlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJp
bGl0eU1vY2tPYmplY3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdF9oCisKKyNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0IDogcHVibGljIEFjY2Vzc2liaWxpdHlP
YmplY3QgeworICAgIAorcHJvdGVjdGVkOgorICAgIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0KCk7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKTsKKyAgICAK
KyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyZW50OyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH07CisgICAgCisgICAgLy8g
TXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgcGFyZW50IG9iamVjdCBjbGVhcnMgaXRzIGNoaWxkcmVu
LgorICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgbV9wYXJlbnQgPSAwOyB9CisgICAgCitw
cm90ZWN0ZWQ6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbV9wYXJlbnQ7Cit9OyAKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUy
LDcgKzM1Miw3IEBACiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiogY29sdW1uID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKj4oYXhDYWNoZS0+Z2V0T3JDcmVhdGUoQ29sdW1uUm9s
ZSkpOwogICAgICAgICBjb2x1bW4tPnNldENvbHVtbkluZGV4KChpbnQpaSk7Ci0gICAgICAgIGNv
bHVtbi0+c2V0UGFyZW50VGFibGUodGhpcyk7CisgICAgICAgIGNvbHVtbi0+c2V0UGFyZW50KHRo
aXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKGNvbHVtbik7CiAgICAgICAgIGlmICghY29s
dW1uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2NoaWxkcmVuLmFw
cGVuZChjb2x1bW4pOwpAQCAtMzY5LDcgKzM2OSw3IEBACiAgICAgICAgIHJldHVybiBtX2hlYWRl
ckNvbnRhaW5lcjsKICAgICAKICAgICBtX2hlYWRlckNvbnRhaW5lciA9IHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcio+KGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoVGFibGVIZWFkZXJDb250YWluZXJSb2xlKSk7Ci0gICAgbV9oZWFkZXJDb250YWluZXIt
PnNldFBhcmVudFRhYmxlKHRoaXMpOworICAgIG1faGVhZGVyQ29udGFpbmVyLT5zZXRQYXJlbnQo
dGhpcyk7CiAgICAgCiAgICAgcmV0dXJuIG1faGVhZGVyQ29udGFpbmVyOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuaAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXBfaAogI2RlZmlu
ZSBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cF9oCiAKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0zNSwxMiArMzUsMTAgQEAKIGNsYXNzIEhUTUxFbGVtZW50Owog
Y2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgeworY2xhc3MgQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXApOyB9CiAK
LSAgICB2b2lkIHNldE1lbnVMaXN0KEFjY2Vzc2liaWxpdHlNZW51TGlzdCopOwotCiAgICAgdmly
dHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc09mZlNjcmVl
bigpIGNvbnN0OwogCkBAIC01NiwxNCArNTQsMTEgQEAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIE1lbnVMaXN0UG9wdXBSb2xlOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcHJl
c3MoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFs
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b24qIG1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNvbnN0
OwotCi0gICAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0KiBtX21lbnVMaXN0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oCShyZXZpc2lvbiA5Njgy
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwxOCBAQAogI2lmbmRlZiBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb25faAogI2RlZmluZSBBY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb25faAogCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA7CiBjbGFzcyBIVE1MRWxlbWVudDsKIAotY2xhc3Mg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3Qg
eworY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uIDogcHVibGljIEFjY2Vzc2liaWxp
dHlNb2NrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb24pOyB9CiAKICAgICB2b2lkIHNldEVsZW1lbnQoSFRNTEVsZW1l
bnQqKTsKLSAgICB2b2lkIHNldFBhcmVudChBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCogcG9w
dXApIHsgbV9wb3B1cCA9IHBvcHVwOyB9CiAKIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uKCk7CkBAIC01MCw3ICs0OSw2IEBACiAgICAgdmlydHVhbCBMYXlvdXRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBlbGVtZW50UmVjdCgpLnNpemUoKTsgfQogCiAgICAgdmly
dHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNF
bmFibGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0OwpAQCAtNjIsNyArNjAsNiBAQAogICAg
IHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IG1fZWxlbWVudDsKLSAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCogbV9wb3B1
cDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNw
cAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBA
CiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKCkK
ICAgICA6IG1fYXJlYUVsZW1lbnQoMCkKICAgICAsIG1fbWFwRWxlbWVudCgwKQotICAgICwgbV9w
YXJlbnQoMCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDYgKzU2LDEyIEBACiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZCgpOwogfTsKIAoraW5saW5lIEFjY2Vzc2liaWxpdHlNZW51TGlzdCogdG9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VSVCghb2Jq
ZWN0IHx8IG9iamVjdC0+aXNNZW51TGlzdCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0Kj4ob2JqZWN0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eU1lbnVMaXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuaAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxMyArMjksMTMgQEAKICNpZm5kZWYgQWNjZXNzaWJpbGl0eVRhYmxlSGVh
ZGVyQ29udGFpbmVyX2gKICNkZWZpbmUgQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVy
X2gKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5TW9ja09iamVjdC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7
CitjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIgOiBwdWJsaWMgQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QgewogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIoKTsKQEAgLTQ1LDkgKzQ1LDYgQEAKICAgICAKICAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFRhYmxlSGVhZGVy
Q29udGFpbmVyUm9sZTsgfQogICAgIAotICAgIHZvaWQgc2V0UGFyZW50VGFibGUoQWNjZXNzaWJp
bGl0eVRhYmxlKiB0YWJsZSkgeyBtX3BhcmVudFRhYmxlID0gdGFibGU7IH0KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
ZW50VGFibGU7IH0KLSAgICAKICAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgY2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAg
ICAKQEAgLTU1LDcgKzUyLDYgQEAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3Qo
KSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlKiBtX3BhcmVu
dFRhYmxlOwogICAgIExheW91dFJlY3QgbV9oZWFkZXJSZWN0OwogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgJ
KHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lm
bmRlZiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW5faAogI2RlZmluZSBBY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW5faAogCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxl
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogCkBAIC0zNyw3ICszNyw3IEBACiAgICAgCiBjbGFz
cyBSZW5kZXJUYWJsZVNlY3Rpb247CiAKLWNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiA6
IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbiA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CiAgICAgCiBwcml2YXRlOgog
ICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbigpOwpAQCAtNDUsOCArNDUsNiBAQAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4gY3JlYXRlKCk7CiAgICAg
dmlydHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCk7CiAgICAgCi0gICAgdm9pZCBzZXRQ
YXJlbnRUYWJsZShBY2Nlc3NpYmlsaXR5VGFibGUqKTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50VGFibGU7IH0K
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICAgICAgCiAgICAg
dmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKQEAgLTU4LDEyICs1
NiwxMiBAQAogICAgIAogICAgIHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBjaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIAogICAgIHZp
cnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOiAgICAKLSAgICBBY2Nlc3NpYmlsaXR5
VGFibGUqIG1fcGFyZW50VGFibGU7CiAgICAgaW50IG1fY29sdW1uSW5kZXg7CiAgICAgTGF5b3V0
UmVjdCBtX2NvbHVtblJlY3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6OkFjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0KCkKKyAgICA6IG1fcGFyZW50KDApCit7Cit9CisKK0FjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0Ojp+QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKQoreworfQorICAgIAorfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAkocmV2aXNpb24gOTY4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsx
MjYsNyBAQAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgKytpKSB7
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbiogY29sdW1uID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKj4oYXhDYWNoZS0+Z2V0T3JDcmVhdGUoQ29sdW1uUm9s
ZSkpOwogICAgICAgICBjb2x1bW4tPnNldENvbHVtbkluZGV4KChpbnQpaSk7Ci0gICAgICAgIGNv
bHVtbi0+c2V0UGFyZW50VGFibGUodGhpcyk7CisgICAgICAgIGNvbHVtbi0+c2V0UGFyZW50KHRo
aXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKGNvbHVtbik7CiAgICAgICAgIGlmICghY29s
dW1uLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgICAgICBtX2NoaWxkcmVuLmFw
cGVuZChjb2x1bW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAJKHJldmlzaW9uIDk2ODI3
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpBY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cCgpCi0gICAgOiBtX21lbnVMaXN0KDApCiB7CiB9CiAKQEAgLTQ5LDE3ICs0
OCwxMiBAQAogCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjppc09mZlNjcmVlbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVudUxpc3QtPmlzQ29sbGFwc2VkKCk7CisgICAgcmV0
dXJuIG1fcGFyZW50LT5pc0NvbGxhcHNlZCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6cGFyZW50T2JqZWN0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9tZW51TGlzdDsKLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6
aXNFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZW51TGlzdC0+aXNFbmFibGVkKCk7
CisgICAgcmV0dXJuIG1fcGFyZW50LT5pc0VuYWJsZWQoKTsKIH0KIAogQWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RPcHRpb25B
Y2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KiBlbGVtZW50KSBjb25zdApAQCAtNjcsNyAr
NjEsNyBAQAogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25U
YWcpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dCA9IG1fbWVudUxpc3QtPnJlbmRlcmVyKCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUoTWVudUxpc3RPcHRpb25Sb2xlKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QgPSBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKE1lbnVM
aXN0T3B0aW9uUm9sZSk7CiAgICAgQVNTRVJUKG9iamVjdC0+aXNNZW51TGlzdE9wdGlvbigpKTsK
IAogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogb3B0aW9uID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKj4ob2JqZWN0KTsKQEAgLTc4LDEzICs3MiwxMyBA
QAogCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpwcmVzcygpIGNvbnN0CiB7Ci0g
ICAgbV9tZW51TGlzdC0+cHJlc3MoKTsKKyAgICBtX3BhcmVudC0+cHJlc3MoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6YWRkQ2hpbGRy
ZW4oKQogewotICAgIE5vZGUqIHNlbGVjdE5vZGUgPSBtX21lbnVMaXN0LT5yZW5kZXJlcigpLT5u
b2RlKCk7CisgICAgTm9kZSogc2VsZWN0Tm9kZSA9IG1fcGFyZW50LT5ub2RlKCk7CiAgICAgaWYg
KCFzZWxlY3ROb2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNSwzNSArOTksMjggQEAKIAog
dm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKKyAg
ICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gbV9jaGlsZHJlbi5zaXplKCk7IGkgPiAwIDsgLS1pKSB7CiAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNoaWxkID0gbV9jaGlsZHJlbltpIC0gMV0uZ2V0KCk7Ci0gICAgICAgIGlm
IChjaGlsZC0+YWN0aW9uRWxlbWVudCgpICYmICFjaGlsZC0+YWN0aW9uRWxlbWVudCgpLT5hdHRh
Y2hlZCgpKSB7Ci0gICAgICAgICAgICBtX21lbnVMaXN0LT5yZW5kZXJlcigpLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPnJlbW92ZShjaGlsZC0+YXhPYmplY3RJRCgpKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoY2hpbGQtPmFjdGlvbkVsZW1lbnQoKSAmJiAhY2hpbGQtPmFjdGlvbkVs
ZW1lbnQoKS0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUoY2hpbGQtPmF4
T2JqZWN0SUQoKSk7CiAgICAgfQorICAgIAogICAgIG1fY2hpbGRyZW4uY2xlYXIoKTsKICAgICBt
X2hhdmVDaGlsZHJlbiA9IGZhbHNlOwogICAgIGFkZENoaWxkcmVuKCk7CiB9CiAKLXZvaWQgQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OnNldE1lbnVMaXN0KEFjY2Vzc2liaWxpdHlNZW51TGlz
dCogbWVudUxpc3QpCi17Ci0gICAgQVNTRVJUX0FSRyhtZW51TGlzdCwgbWVudUxpc3QpOwotICAg
IEFTU0VSVCghbV9tZW51TGlzdCk7Ci0gICAgbV9tZW51TGlzdCA9IG1lbnVMaXN0OwotfQotCiB2
b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpkaWRVcGRhdGVBY3RpdmVPcHRpb24oaW50
IG9wdGlvbkluZGV4KQogewogICAgIEFTU0VSVF9BUkcob3B0aW9uSW5kZXgsIG9wdGlvbkluZGV4
ID49IDApOwogICAgIEFTU0VSVF9BUkcob3B0aW9uSW5kZXgsIG9wdGlvbkluZGV4IDwgc3RhdGlj
X2Nhc3Q8aW50PihtX2NoaWxkcmVuLnNpemUoKSkpOwogCi0gICAgUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudCA9IG1fbWVudUxpc3QtPnJlbmRlcmVyKCktPmRvY3VtZW50KCk7Ci0gICAgQVhPYmpl
Y3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOworICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBjaGlsZCA9IG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpOwogCi0gICAgY2Fj
aGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50LmdldCgpLCBBWE9iamVj
dENhY2hlOjpBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLCB0cnVlLCBQb3N0U3luY2hyb25vdXNs
eSk7Ci0gICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50Lmdl
dCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVjdGVkLCB0cnVlLCBQb3N0U3lu
Y2hyb25vdXNseSk7CisgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRv
Y3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIHRydWUs
IFBvc3RTeW5jaHJvbm91c2x5KTsKKyAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZC5n
ZXQoKSwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdEl0ZW1TZWxlY3RlZCwg
dHJ1ZSwgUG9zdFN5bmNocm9ub3VzbHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5NjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTY2OSw2ICsxNjY5LDggQEAKICAgICAgICAg
ICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oJywKICAgICAg
ICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcCcsCiAg
ICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oJywK
KyAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCcs
CisgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oJywK
ICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwJywKICAg
ICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5j
cHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5k
aWNhdG9yLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk2ODI3KQorKysg
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0
MDEsNyBAQAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAogICAgIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDk2ODI3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NzAsNiArNjcwLDggQEAKIAkJMjlB
ODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NTBG
QkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLzsgfTsK
IAkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlB
ODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
ICovOyB9OwogCQkyOUE4MTI0QjBGQkI5Q0E5MDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZU1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QTgxMjQ3
MEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tICovOyB9OworCQkyOUFDQjIx
MjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUNCMjExMTQzRTcxMjgwMDZC
Q0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oICovOyB9OworCQkyOUFDQjIxNDE0M0U3
NDk4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBQ0IyMTMxNDNFNzQ5ODAwNkJDQTVG
IC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCAqLzsgfTsKIAkJMkJFOEUyQzcxMkE1ODlF
QzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhU
TUxNZXRhQ2hhcnNldFBhcnNlci5oICovOyB9OwogCQkyQkU4RTJDOTEyQTU4QTAxMDBGQUQ1NTAg
LyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJCRThFMkM4MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNo
YXJzZXRQYXJzZXIuY3BwICovOyB9OwogCQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZH
UGFyc2luZ0Vycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDNBMEUzNTEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc3MzcsNiArNzcz
OSw4IEBACiAJCTI5QTgxMjQ1MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4
MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyNDcw
RkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWE9iamVjdENhY2hlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOUFDQjIxMTE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJp
bGl0eU1vY2tPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBQ0IyMTMx
NDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8q
IEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzgxMkE1OEEwMTAw
RkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2Vy
L0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEM0EwRTM1MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGFyc2luZ0Vycm9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNDUyMiw2ICsxNDUyNiw4IEBACiAJCQkJNzZDREQyRjExMTAzREE2
NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oICovLAogCQkJCTc2Q0RE
MkVFMTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgKi8s
CiAJCQkJNzZDREQyRUYxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwLmggKi8sCisJCQkJMjlBQ0IyMTMxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0LmNwcCAqLywKKwkJCQkyOUFDQjIxMTE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuaCAqLywKIAkJCQkyOTgxQ0FBNTEzMTgyMkVDMDBEMTJGMkEgLyog
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCiAJCQkJMjlBODEyMTgwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlPYmplY3QuaCAqLywKIAkJCQlBNDA5Qzk4MjExNkQwREREMDA3MTk3
QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcCAqLywKQEAgLTI0NTY0LDYg
KzI0NTcwLDcgQEAKIAkJCQkzMTA2MDM3NTE0MzI4MTlDMDBBQkY0QkEgLyogSlNXZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwNjAzNzkxNDMyODFDRDAwQUJGNEJB
IC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTA2MDM3
QjE0MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMjlBQ0IyMTIxNDNFNzEyODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxp
dHlNb2NrT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3NDA5LDYgKzI3NDE2LDcgQEAKIAkJ
CQkzMTA2MDM2RjE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzEwNjAzNzQxNDMyODE5QzAwQUJGNEJBIC8qIEpTV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwNjAzN0ExNDMyODFDRDAwQUJG
NEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjlB
Q0IyMTQxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>