<?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>64994</bug_id>
          
          <creation_ts>2011-07-21 16:55:07 -0700</creation_ts>
          <short_desc>Add the ability to search the AccessibilityObject cache</short_desc>
          <delta_ts>2011-09-06 15:38:49 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Samuel White">samuel_white</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>samuel_white</cc>
    
    <cc>samuel.white</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>440722</commentid>
    <comment_count>0</comment_count>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2011-07-21 16:55:07 -0700</bug_when>
    <thetext>WebKit lacks both the ability to search through cached AccessibilityObjects using basic search criteria, as well as the API to expose this functionality. This forces external screen readers that provide search functionality to duplicate the accessibility cache externally by using the existing accessibility API before search can be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443597</commentid>
    <comment_count>1</comment_count>
      <attachid>102280</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2011-07-28 12:01:15 -0700</bug_when>
    <thetext>Created attachment 102280
This patch adds some basic functionality that is needed to support the requested search functionality.

The blockquoteLevel function has been moved into AccessibilityObject to make it available to any platform. Layout tests for the new functionality will be included in the following patch that contains the new search functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443609</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-28 12:25:15 -0700</bug_when>
    <thetext>apparently only a commit can submit a patch for review... or you have to press that button that says submit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443614</commentid>
    <comment_count>3</comment_count>
      <attachid>102280</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-28 12:29:25 -0700</bug_when>
    <thetext>Comment on attachment 102280
This patch adds some basic functionality that is needed to support the requested search functionality.

Attachment 102280 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9260387</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443615</commentid>
    <comment_count>4</comment_count>
      <attachid>102280</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-28 12:31:08 -0700</bug_when>
    <thetext>Comment on attachment 102280
This patch adds some basic functionality that is needed to support the requested search functionality.

Attachment 102280 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9266258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443617</commentid>
    <comment_count>5</comment_count>
      <attachid>102288</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2011-07-28 12:38:24 -0700</bug_when>
    <thetext>Created attachment 102288
Fixed original patch.

Previous patch with fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443645</commentid>
    <comment_count>6</comment_count>
      <attachid>102288</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-28 13:56:48 -0700</bug_when>
    <thetext>Comment on attachment 102288
Fixed original patch.

looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443650</commentid>
    <comment_count>7</comment_count>
      <attachid>102280</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-07-28 14:14:50 -0700</bug_when>
    <thetext>Comment on attachment 102280
This patch adds some basic functionality that is needed to support the requested search functionality.

Attachment 102280 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9262318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443680</commentid>
    <comment_count>8</comment_count>
      <attachid>102280</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 15:39:30 -0700</bug_when>
    <thetext>Comment on attachment 102280
This patch adds some basic functionality that is needed to support the requested search functionality.

Attachment 102280 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9260424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443717</commentid>
    <comment_count>9</comment_count>
      <attachid>102288</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-28 17:01:58 -0700</bug_when>
    <thetext>Comment on attachment 102288
Fixed original patch.

Rejecting attachment 102288 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
a3afccd5e69d55cde842eb43b007d884c7c1f637
r91959 = 2dc424772152f666ca085e7cdf850aedd45b4bb6
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/9260453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443721</commentid>
    <comment_count>10</comment_count>
      <attachid>102288</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-28 17:03:25 -0700</bug_when>
    <thetext>Comment on attachment 102288
Fixed original patch.

we forgot the changeLog... please run ./Tools/Scripts/prepare-Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443740</commentid>
    <comment_count>11</comment_count>
      <attachid>102317</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2011-07-28 17:40:20 -0700</bug_when>
    <thetext>Created attachment 102317
Added required change log info</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443743</commentid>
    <comment_count>12</comment_count>
      <attachid>102317</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-28 17:41:38 -0700</bug_when>
    <thetext>Comment on attachment 102317
Added required change log info

please add a comment in your change log as to what this patch is for</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443886</commentid>
    <comment_count>13</comment_count>
      <attachid>102345</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2011-07-29 04:36:23 -0700</bug_when>
    <thetext>Created attachment 102345
Updated patch.

Added additional ChangeLog comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443979</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-29 10:22:09 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443991</commentid>
    <comment_count>15</comment_count>
      <attachid>102345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 10:37:46 -0700</bug_when>
    <thetext>Comment on attachment 102345
Updated patch.

Clearing flags on attachment: 102345

Committed r92000: &lt;http://trac.webkit.org/changeset/92000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445130</commentid>
    <comment_count>16</comment_count>
      <attachid>102619</attachid>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-02 00:20:06 -0700</bug_when>
    <thetext>Created attachment 102619
Follow-up patch.

This patch adds the remaining necessary functionality to support basic AccessibilityObject cache searching as well as API for the mac platform to expose it. Also included are a series of new layout tests that validate both the new functionality added in this patch, as well as the new functionality that was added in the prior patch against this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445351</commentid>
    <comment_count>17</comment_count>
      <attachid>102619</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-08-02 10:37:16 -0700</bug_when>
    <thetext>Comment on attachment 102619
Follow-up patch.

Attachment 102619 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9215097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445731</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-08-02 23:30:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 102619 [details])
&gt; Attachment 102619 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/9215097

Likely missing GTK stubs in DRT for the new AccessibilityUIelement methods that were added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446570</commentid>
    <comment_count>19</comment_count>
      <attachid>102937</attachid>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-04 09:47:56 -0700</bug_when>
    <thetext>Created attachment 102937
Fixed patch.

Stub fixes as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446667</commentid>
    <comment_count>20</comment_count>
      <attachid>102937</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-08-04 11:59:54 -0700</bug_when>
    <thetext>Comment on attachment 102937
Fixed patch.

Attachment 102937 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9306525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447653</commentid>
    <comment_count>21</comment_count>
      <attachid>103162</attachid>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-06 13:27:29 -0700</bug_when>
    <thetext>Created attachment 103162
Additional patch fixes.

Fixed stub error found in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447672</commentid>
    <comment_count>22</comment_count>
      <attachid>103162</attachid>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-06 15:28:03 -0700</bug_when>
    <thetext>Comment on attachment 103162
Additional patch fixes.

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447698</commentid>
    <comment_count>23</comment_count>
      <attachid>103162</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-08-06 20:49:19 -0700</bug_when>
    <thetext>Comment on attachment 103162
Additional patch fixes.

thanks sam. I think this looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447720</commentid>
    <comment_count>24</comment_count>
      <attachid>103162</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-07 02:48:18 -0700</bug_when>
    <thetext>Comment on attachment 103162
Additional patch fixes.

Clearing flags on attachment: 103162

Committed r92571: &lt;http://trac.webkit.org/changeset/92571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447796</commentid>
    <comment_count>25</comment_count>
      <attachid>103194</attachid>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-07 18:38:22 -0700</bug_when>
    <thetext>Created attachment 103194
Consistency patch.

The level values returned by tableLevel() weren&apos;t consistent with the headingLevel() and blockquoteLevel() functions. That is, 0 should only be returned when called on objects that aren&apos;t tables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448011</commentid>
    <comment_count>26</comment_count>
      <attachid>103194</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-08-08 08:31:11 -0700</bug_when>
    <thetext>Comment on attachment 103194
Consistency patch.

can&apos;t you just use 
AccessibilityObject* obj = const_cast&lt;this&gt;;

also is there a layout test that needs to be updated to reflect this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448025</commentid>
    <comment_count>27</comment_count>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-08 09:04:13 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 103194 [details])
&gt; can&apos;t you just use 
&gt; AccessibilityObject* obj = const_cast&lt;this&gt;;

const casting an accessibilityTable to an accessibilityObject is not allowed.

&gt; 
&gt; also is there a layout test that needs to be updated to reflect this change?

The existing layout test for tables will continue to work. This change just makes the level values reported more consistent with other level values. For example, the search-predicate.html layout test currently sees that two level 0 tables are at the same level. After this change it will see that two level 1 tables are at the same level. Further, level 0 will be correctly reserved for objects which aren&apos;t tables at all. This is the behavior displayed when one calls headingLevel() on a non-heading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448046</commentid>
    <comment_count>28</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-08-08 09:35:10 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (From update of attachment 103194 [details] [details])
&gt; &gt; can&apos;t you just use 
&gt; &gt; AccessibilityObject* obj = const_cast&lt;this&gt;;
&gt; 
&gt; const casting an accessibilityTable to an accessibilityObject is not allowed.
&gt; 

I suppose you could do this, but i don&apos;t know if it&apos;s any easier.

AccessibilityObject* obj = dynamic_cast&lt;AccessibilityObject*&gt;(const_cast&lt;AccessibilityTable*&gt;(this));

At the least, you should be able to use get() instead of getOrCreate() since you know the object exists

axObjectCache()-&gt;get(m_renderer)

&gt; &gt; 
&gt; &gt; also is there a layout test that needs to be updated to reflect this change?
&gt; 
&gt; The existing layout test for tables will continue to work. This change just makes the level values reported more consistent with other level values. For example, the search-predicate.html layout test currently sees that two level 0 tables are at the same level. After this change it will see that two level 1 tables are at the same level. Further, level 0 will be correctly reserved for objects which aren&apos;t tables at all. This is the behavior displayed when one calls headingLevel() on a non-heading.

Sounds like we should probably add a new layout test to ensure that we get the right levels when we ask a table for it&apos;s table level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450787</commentid>
    <comment_count>29</comment_count>
    <who name="Samuel White">samuel.white</who>
    <bug_when>2011-08-12 19:08:25 -0700</bug_when>
    <thetext>Since this has no immediate impact on search I opened a new bug for the level issue. For further details and resolution see:

Bug 66180 - AccessibilityObject levels are inconsistent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450788</commentid>
    <comment_count>30</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-08-12 19:12:15 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Since this has no immediate impact on search I opened a new bug for the level issue. For further details and resolution see:
&gt; 
&gt; Bug 66180 - AccessibilityObject levels are inconsistent

great. so we can close this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462930</commentid>
    <comment_count>31</comment_count>
      <attachid>102280</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-06 15:38:49 -0700</bug_when>
    <thetext>Comment on attachment 102280
This patch adds some basic functionality that is needed to support the requested search functionality.

Cleared review? from attachment 102280 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102280</attachid>
            <date>2011-07-28 12:01:15 -0700</date>
            <delta_ts>2011-09-06 15:38:48 -0700</delta_ts>
            <desc>This patch adds some basic functionality that is needed to support the requested search functionality.</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>11809</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkocmV2aXNpb24gOTE5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTg1LDYgKzg2LDgwIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKICNlbmRpZiAgICAKIH0KIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0Jsb2NrcXVvdGUoKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkgJiYg
bm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTGFuZG1hcmsoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGUgPSByb2xlVmFsdWUoKTsKKyAgICAKKyAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrQmFubmVyUm9sZQorICAgICAg
ICB8fCByb2xlID09IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUKKyAgICAgICAgfHwgcm9sZSA9
PSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrTWFp
blJvbGUKKyAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya05hdmlnYXRpb25Sb2xlCisgICAgICAg
IHx8IHJvbGUgPT0gTGFuZG1hcmtTZWFyY2hSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEVkaXRvciogZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOworICAgIGlmICghZWRpdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyID0gZWRpdG9yLT50ZXh0Q2hl
Y2tlcigpOworICAgIGlmICghdGV4dENoZWNrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNoYXJhY3RlcnMoKTsK
KyAgICBpbnQgY2hhcnNMZW5ndGggPSBzdHJpbmdWYWx1ZSgpLmxlbmd0aCgpOworICAgIGJvb2wg
aXNNaXNzcGVsbGVkID0gZmFsc2U7CisgICAgCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKKyAgICAKKyAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAgIHRl
eHRDaGVja2VyLT5jaGVja1RleHRPZlBhcmFncmFwaChjaGFycywgY2hhcnNMZW5ndGgsIFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHko
KSkKKyAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyAgICAKKyNlbHNlCisgICAgCisgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKKyAgICBpbnQgbWlzc3BlbGxpbmdMb2NhdGlvbiA9
IC0xOworICAgIHRleHRDaGVja2VyLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoY2hhcnMsIGNoYXJz
TGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBp
ZiAobWlzc3BlbGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdsb2NhdGlvbiAhPSAtMSkKKyAgICAg
ICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyAgICAKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBp
c01pc3NwZWxsZWQ7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2
ZWwoKSBjb25zdAoreworICAgIGludCBsZXZlbCA9IDA7CisgICAgZm9yIChOb2RlKiBlbGVtZW50
Tm9kZSA9IG5vZGUoKTsgZWxlbWVudE5vZGU7IGVsZW1lbnROb2RlLT5wYXJlbnROb2RlKCkpIHsK
KyAgICAgICAgaWYgKGVsZW1lbnROb2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQorICAg
ICAgICAgICAgKytsZXZlbDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGxldmVsOworfQorCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmln
bm9yZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDggQEAgcHVi
bGljOgogICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IExpc3RJdGVtUm9sZTsgfQogICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJl
dHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigpOyB9CiAgICAgYm9vbCBpc1Njcm9s
bFZpZXcoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTY3JvbGxBcmVhUm9sZTsgfQor
ICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Q7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29u
c3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC0zMjUsNiArMzI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZlNj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0zMzMsNiArMzM2LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQogCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRG
b250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGlj
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNNaXNzcGVsbGluZygp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJl
bmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhh
c1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFN0YXRpY1Rl
eHRSb2xlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRy
aWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzQ4LDcgKzM2MSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgaW50IGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gMC4wZjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5MTkzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODEsNiArMjA4MSwxMiBAQCBLVVJMIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvCiAgICAgcmV0dXJuIEtVUkwoKTsKIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1VudmlzaXRlZCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8gZXhwb3NlIHVudmlzaXRlZCBpbmZv
cm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0
eWxlKCktPmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJ
bnNpZGVVbnZpc2l0ZWRMaW5rOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzVmlzaXRlZCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9s
YXRpb24gdG8gZXhwb3NlIHZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElz
PwpAQCAtMzY2NSw2ICszNjcxLDY2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNMaW5rZWQKICAgICByZXR1cm4gIXN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4oYW5j
aG9yKS0+aHJlZigpLmlzRW1wdHkoKTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNCb2xkRm9udCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmZv
bnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc0l0YWxpY0ZvbnQoKSBjb25zdAoreworICAgIGlm
ICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBt
X3JlbmRlcmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSA9PSBGb250SXRh
bGljT247Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUGxhaW5UZXh0
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpOworICAg
IAorICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkgPT0gRm9udFdl
aWdodE5vcm1hbAorICAgICAgICAmJiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkg
PT0gRm9udEl0YWxpY09mZgorICAgICAgICAmJiBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKSA9PSBURE5PTkU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFz
U2FtZUZvbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyZXIgfHwgIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmZhbWlseSgpID09IHJl
bmRlcmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFyZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgPT0gcmVuZGVyZXItPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkg
PT0gcmVuZGVyZXItPnN0eWxlKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aGFzVW5kZXJsaW5lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORTsKK30KKwogU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKIHsKICAgICBpZiAobV9yZW5k
ZXJlciAmJiBtX3JlbmRlcmVyLT5pc1RleHQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCwxNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzUHJlc3NlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzVmlzaXRlZCgpIGNvbnN0OyAgICAgICAgCiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9u
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVW5kZXJsaW5lKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmli
dXRlcygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkocmV2aXNpb24gOTE5MzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0Niw3ICs0NDYsMTggQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dDb3Vu
dCgpCiAgICAgCiAgICAgcmV0dXJuIG1fcm93cy5zaXplKCk7CiB9CisKK2ludCBBY2Nlc3NpYmls
aXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAoreworICAgIGludCBsZXZlbCA9IDA7CisgICAg
Zm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IHBhcmVudE9iamVjdCgpOyBheE9i
amVjdDsgYXhPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlmIChheE9iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICAgICAgICAgICsrbGV2ZWw7CisgICAgfQogICAg
IAorICAgIHJldHVybiBsZXZlbDsKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNz
aWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWdu
ZWQgcm93KQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKTsKICAgICB1bnNpZ25lZCByb3dD
b3VudCgpOworICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwoKSBjb25zdDsKICAgICAKICAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0JKHJldmlzaW9uIDkxOTM4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ1MSwyMyArNDUxLDEwIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUo
TlMKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgYmxvY2txdW90ZUxldmVsKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCi17Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gcmVuZGVyZXItPm5v
ZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSkKLSAgICAgICAgICAgIHJlc3VsdCArPSAxOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQogewotICAg
IGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRlcmVyKTsKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpbnQgcXVvdGVMZXZlbCA9IGF4T2Jq
ZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAKICAgICBpZiAocXVvdGVMZXZlbCkKICAgICAg
ICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZl
bEF0dHJpYnV0ZSB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpxdW90ZUxldmVsXSByYW5n
ZTpyYW5nZV07CkBAIC0xOTg2LDcgKzE5NzMsNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6KE5TU3RyCiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZp
c2libGVQb3NpdGlvbjplbmRPZkRvY3VtZW50KHJlbmRlcmVyLT5kb2N1bWVudCgpKV07CiAKICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlC
bG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmJsb2NrcXVvdGVMZXZlbChyZW5kZXJlcildOworICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102288</attachid>
            <date>2011-07-28 12:38:24 -0700</date>
            <delta_ts>2011-07-28 17:03:25 -0700</delta_ts>
            <desc>Fixed original patch.</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>11809</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkocmV2aXNpb24gOTE5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTg1LDYgKzg2LDgwIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKICNlbmRpZiAgICAKIH0KIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0Jsb2NrcXVvdGUoKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkgJiYg
bm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTGFuZG1hcmsoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGUgPSByb2xlVmFsdWUoKTsKKyAgICAKKyAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrQmFubmVyUm9sZQorICAgICAg
ICB8fCByb2xlID09IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUKKyAgICAgICAgfHwgcm9sZSA9
PSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrTWFp
blJvbGUKKyAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya05hdmlnYXRpb25Sb2xlCisgICAgICAg
IHx8IHJvbGUgPT0gTGFuZG1hcmtTZWFyY2hSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEVkaXRvciogZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOworICAgIGlmICghZWRpdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyID0gZWRpdG9yLT50ZXh0Q2hl
Y2tlcigpOworICAgIGlmICghdGV4dENoZWNrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNoYXJhY3RlcnMoKTsK
KyAgICBpbnQgY2hhcnNMZW5ndGggPSBzdHJpbmdWYWx1ZSgpLmxlbmd0aCgpOworICAgIGJvb2wg
aXNNaXNzcGVsbGVkID0gZmFsc2U7CisgICAgCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKKyAgICAKKyAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAgIHRl
eHRDaGVja2VyLT5jaGVja1RleHRPZlBhcmFncmFwaChjaGFycywgY2hhcnNMZW5ndGgsIFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHko
KSkKKyAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyAgICAKKyNlbHNlCisgICAgCisgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKKyAgICBpbnQgbWlzc3BlbGxpbmdMb2NhdGlvbiA9
IC0xOworICAgIHRleHRDaGVja2VyLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoY2hhcnMsIGNoYXJz
TGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBp
ZiAobWlzc3BlbGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkKKyAgICAg
ICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyAgICAKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBp
c01pc3NwZWxsZWQ7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2
ZWwoKSBjb25zdAoreworICAgIGludCBsZXZlbCA9IDA7CisgICAgZm9yIChOb2RlKiBlbGVtZW50
Tm9kZSA9IG5vZGUoKTsgZWxlbWVudE5vZGU7IGVsZW1lbnROb2RlLT5wYXJlbnROb2RlKCkpIHsK
KyAgICAgICAgaWYgKGVsZW1lbnROb2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQorICAg
ICAgICAgICAgKytsZXZlbDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGxldmVsOworfQorCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmln
bm9yZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDggQEAgcHVi
bGljOgogICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IExpc3RJdGVtUm9sZTsgfQogICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJl
dHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigpOyB9CiAgICAgYm9vbCBpc1Njcm9s
bFZpZXcoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTY3JvbGxBcmVhUm9sZTsgfQor
ICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Q7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29u
c3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC0zMjUsNiArMzI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZlNj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0zMzMsNiArMzM2LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQogCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRG
b250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGlj
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNNaXNzcGVsbGluZygp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJl
bmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhh
c1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFN0YXRpY1Rl
eHRSb2xlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRy
aWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzQ4LDcgKzM2MSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgaW50IGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gMC4wZjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5MTkzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODEsNiArMjA4MSwxMiBAQCBLVVJMIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvCiAgICAgcmV0dXJuIEtVUkwoKTsKIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1VudmlzaXRlZCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8gZXhwb3NlIHVudmlzaXRlZCBpbmZv
cm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0
eWxlKCktPmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJ
bnNpZGVVbnZpc2l0ZWRMaW5rOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzVmlzaXRlZCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9s
YXRpb24gdG8gZXhwb3NlIHZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElz
PwpAQCAtMzY2NSw2ICszNjcxLDY2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNMaW5rZWQKICAgICByZXR1cm4gIXN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4oYW5j
aG9yKS0+aHJlZigpLmlzRW1wdHkoKTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNCb2xkRm9udCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmZv
bnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc0l0YWxpY0ZvbnQoKSBjb25zdAoreworICAgIGlm
ICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBt
X3JlbmRlcmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSA9PSBGb250SXRh
bGljT247Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUGxhaW5UZXh0
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpOworICAg
IAorICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkgPT0gRm9udFdl
aWdodE5vcm1hbAorICAgICAgICAmJiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkg
PT0gRm9udEl0YWxpY09mZgorICAgICAgICAmJiBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKSA9PSBURE5PTkU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFz
U2FtZUZvbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyZXIgfHwgIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmZhbWlseSgpID09IHJl
bmRlcmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFyZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgPT0gcmVuZGVyZXItPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkg
PT0gcmVuZGVyZXItPnN0eWxlKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aGFzVW5kZXJsaW5lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORTsKK30KKwogU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKIHsKICAgICBpZiAobV9yZW5k
ZXJlciAmJiBtX3JlbmRlcmVyLT5pc1RleHQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCwxNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzUHJlc3NlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzVmlzaXRlZCgpIGNvbnN0OyAgICAgICAgCiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9u
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVW5kZXJsaW5lKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmli
dXRlcygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkocmV2aXNpb24gOTE5MzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0Niw3ICs0NDYsMTggQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dDb3Vu
dCgpCiAgICAgCiAgICAgcmV0dXJuIG1fcm93cy5zaXplKCk7CiB9CisKK2ludCBBY2Nlc3NpYmls
aXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAoreworICAgIGludCBsZXZlbCA9IDA7CisgICAg
Zm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IHBhcmVudE9iamVjdCgpOyBheE9i
amVjdDsgYXhPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlmIChheE9iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICAgICAgICAgICsrbGV2ZWw7CisgICAgfQogICAg
IAorICAgIHJldHVybiBsZXZlbDsKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNz
aWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWdu
ZWQgcm93KQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKTsKICAgICB1bnNpZ25lZCByb3dD
b3VudCgpOworICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwoKSBjb25zdDsKICAgICAKICAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0JKHJldmlzaW9uIDkxOTM4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ1MSwyMyArNDUxLDEwIEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUo
TlMKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgYmxvY2txdW90ZUxldmVsKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCi17Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gcmVuZGVyZXItPm5v
ZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSkKLSAgICAgICAgICAgIHJlc3VsdCArPSAxOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQogewotICAg
IGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRlcmVyKTsKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpbnQgcXVvdGVMZXZlbCA9IGF4T2Jq
ZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAKICAgICBpZiAocXVvdGVMZXZlbCkKICAgICAg
ICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZl
bEF0dHJpYnV0ZSB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpxdW90ZUxldmVsXSByYW5n
ZTpyYW5nZV07CkBAIC0xOTg2LDcgKzE5NzMsNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6KE5TU3RyCiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZp
c2libGVQb3NpdGlvbjplbmRPZkRvY3VtZW50KHJlbmRlcmVyLT5kb2N1bWVudCgpKV07CiAKICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlC
bG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmJsb2NrcXVvdGVMZXZlbChyZW5kZXJlcildOworICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7Cg==
</data>
<flag name="review"
          id="97501"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
    <flag name="commit-queue"
          id="97512"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102317</attachid>
            <date>2011-07-28 17:40:20 -0700</date>
            <delta_ts>2011-07-28 17:41:37 -0700</delta_ts>
            <desc>Added required change log info</desc>
            <filename>patch1.1.txt</filename>
            <type>text/plain</type>
            <size>14144</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkocmV2aXNpb24gOTE5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTg1LDYgKzg2LDgwIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKICNlbmRpZiAgICAKIH0KIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0Jsb2NrcXVvdGUoKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkgJiYg
bm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTGFuZG1hcmsoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGUgPSByb2xlVmFsdWUoKTsKKyAgICAKKyAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrQmFubmVyUm9sZQorICAgICAg
ICB8fCByb2xlID09IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUKKyAgICAgICAgfHwgcm9sZSA9
PSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrTWFp
blJvbGUKKyAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya05hdmlnYXRpb25Sb2xlCisgICAgICAg
IHx8IHJvbGUgPT0gTGFuZG1hcmtTZWFyY2hSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEVkaXRvciogZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOworICAgIGlmICghZWRpdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyID0gZWRpdG9yLT50ZXh0Q2hl
Y2tlcigpOworICAgIGlmICghdGV4dENoZWNrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNoYXJhY3RlcnMoKTsK
KyAgICBpbnQgY2hhcnNMZW5ndGggPSBzdHJpbmdWYWx1ZSgpLmxlbmd0aCgpOworICAgIGJvb2wg
aXNNaXNzcGVsbGVkID0gZmFsc2U7CisgICAgCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKKyAgICAKKyAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAgIHRl
eHRDaGVja2VyLT5jaGVja1RleHRPZlBhcmFncmFwaChjaGFycywgY2hhcnNMZW5ndGgsIFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHko
KSkKKyAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyAgICAKKyNlbHNlCisgICAgCisgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKKyAgICBpbnQgbWlzc3BlbGxpbmdMb2NhdGlvbiA9
IC0xOworICAgIHRleHRDaGVja2VyLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoY2hhcnMsIGNoYXJz
TGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBp
ZiAobWlzc3BlbGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkKKyAgICAg
ICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyAgICAKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBp
c01pc3NwZWxsZWQ7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2
ZWwoKSBjb25zdAoreworICAgIGludCBsZXZlbCA9IDA7CisgICAgZm9yIChOb2RlKiBlbGVtZW50
Tm9kZSA9IG5vZGUoKTsgZWxlbWVudE5vZGU7IGVsZW1lbnROb2RlLT5wYXJlbnROb2RlKCkpIHsK
KyAgICAgICAgaWYgKGVsZW1lbnROb2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQorICAg
ICAgICAgICAgKytsZXZlbDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGxldmVsOworfQorCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmln
bm9yZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDggQEAgcHVi
bGljOgogICAgIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IExpc3RJdGVtUm9sZTsgfQogICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7IHJl
dHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigpOyB9CiAgICAgYm9vbCBpc1Njcm9s
bFZpZXcoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTY3JvbGxBcmVhUm9sZTsgfQor
ICAgIGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Q7CisgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29u
c3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC0zMjUsNiArMzI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZlNj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJlc3Nl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVmlzaXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0zMzMsNiArMzM2LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQogCisgICAgdmlydHVhbCBib29sIGhhc0JvbGRG
b250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGlj
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNNaXNzcGVsbGluZygp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJl
bmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhh
c1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFN0YXRpY1Rl
eHRSb2xlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRy
aWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzQ4LDcgKzM2MSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgaW50IGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1
cm4gMC4wZjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5MTkzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODEsNiArMjA4MSwxMiBAQCBLVVJMIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvCiAgICAgcmV0dXJuIEtVUkwoKTsKIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1VudmlzaXRlZCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8gZXhwb3NlIHVudmlzaXRlZCBpbmZv
cm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0
eWxlKCktPmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJ
bnNpZGVVbnZpc2l0ZWRMaW5rOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzVmlzaXRlZCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9s
YXRpb24gdG8gZXhwb3NlIHZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElz
PwpAQCAtMzY2NSw2ICszNjcxLDY2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNMaW5rZWQKICAgICByZXR1cm4gIXN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4oYW5j
aG9yKS0+aHJlZigpLmlzRW1wdHkoKTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoYXNCb2xkRm9udCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmZv
bnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc0l0YWxpY0ZvbnQoKSBjb25zdAoreworICAgIGlm
ICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBt
X3JlbmRlcmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSA9PSBGb250SXRh
bGljT247Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUGxhaW5UZXh0
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpOworICAg
IAorICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkgPT0gRm9udFdl
aWdodE5vcm1hbAorICAgICAgICAmJiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkg
PT0gRm9udEl0YWxpY09mZgorICAgICAgICAmJiBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKSA9PSBURE5PTkU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFz
U2FtZUZvbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyZXIgfHwgIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmZhbWlseSgpID09IHJl
bmRlcmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFyZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgPT0gcmVuZGVyZXItPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkg
PT0gcmVuZGVyZXItPnN0eWxlKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aGFzVW5kZXJsaW5lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORTsKK30KKwogU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKIHsKICAgICBpZiAobV9yZW5k
ZXJlciAmJiBtX3JlbmRlcmVyLT5pc1RleHQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCwxNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzUHJlc3NlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzVmlzaXRlZCgpIGNvbnN0OyAgICAgICAgCiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9u
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVW5kZXJsaW5lKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmli
dXRlcygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkocmV2aXNpb24gOTE5MzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0Niw3ICs0NDYsMTggQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dDb3Vu
dCgpCiAgICAgCiAgICAgcmV0dXJuIG1fcm93cy5zaXplKCk7CiB9CisKK2ludCBBY2Nlc3NpYmls
aXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAoreworICAgIGludCBsZXZlbCA9IDA7CisgICAg
Zm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IHBhcmVudE9iamVjdCgpOyBheE9i
amVjdDsgYXhPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlmIChheE9iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICAgICAgICAgICsrbGV2ZWw7CisgICAgfQogICAg
IAorICAgIHJldHVybiBsZXZlbDsKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNz
aWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWdu
ZWQgcm93KQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKTsKICAgICB1bnNpZ25lZCByb3dD
b3VudCgpOworICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwoKSBjb25zdDsKICAgICAKICAgICB2
aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gOTE5NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1MSBAQAorMjAxMS0wNy0yOCAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIHRoZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0IGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDk5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQmxvY2txdW90ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRtYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3NwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJsb2NrcXVvdGVMZXZlbCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1VudmlzaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNCb2xkRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpoYXNJdGFsaWNGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc1BsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpoYXNTYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNTYW1lRm9udENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omhhc1NhbWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNTdGF0aWNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6Omhhc1VuZGVybGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp0YWJsZUxldmVsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNVbnZpc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aGFzQm9sZEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aGFzSXRhbGljRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpoYXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aGFzU2FtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzU2FtZUZvbnRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzVW5kZXJsaW5lKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlTGV2ZWwpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1Nl
dEJsb2NrcXVvdGVMZXZlbCk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKwogMjAxMS0wNy0yOCAgRGV2ZGF0dGEg
RGVzaHBhbmRlICA8cHdqZDczQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBGaXhlZCBnaWYgYW5p
bWF0aW9uIGRlcGVuZGVuY3kgb24gc3lzdGVtIHRpbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tCShyZXZpc2lvbiA5MTkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
NTEsMjMgKzQ1MSwxMCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5T
CiAgICAgfQogfQogCi1zdGF0aWMgaW50IGJsb2NrcXVvdGVMZXZlbChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQotewotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIGludCByZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpCi0gICAgICAgICAgICByZXN1bHQgKz0gMTsKLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKIHsKLSAgICBp
bnQgcXVvdGVMZXZlbCA9IGJsb2NrcXVvdGVMZXZlbChyZW5kZXJlcik7CisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogYXhPYmplY3QgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7CisgICAgaW50IHF1b3RlTGV2ZWwgPSBheE9iamVj
dC0+YmxvY2txdW90ZUxldmVsKCk7CiAgICAgCiAgICAgaWYgKHF1b3RlTGV2ZWwpCiAgICAgICAg
IFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxB
dHRyaWJ1dGUgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6
cmFuZ2VdOwpAQCAtMTk4Niw3ICsxOTczLDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOihOU1N0cgogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNp
YmxlUG9zaXRpb246ZW5kT2ZEb2N1bWVudChyZW5kZXJlci0+ZG9jdW1lbnQoKSldOwogCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Qmxv
Y2tRdW90ZUxldmVsQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDpibG9ja3F1b3RlTGV2ZWwocmVuZGVyZXIpXTsKKyAgICAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+YmxvY2txdW90ZUxldmVsKCldOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmlidXRlXSkgewogICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOwo=
</data>
<flag name="review"
          id="97542"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102345</attachid>
            <date>2011-07-29 04:36:23 -0700</date>
            <delta_ts>2011-07-29 10:37:46 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch1.txt</filename>
            <type>text/plain</type>
            <size>14854</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkocmV2aXNpb24gOTE5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTg1LDYgKzg2LDc2IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKICNlbmRpZiAgICAKIH0KIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0Jsb2NrcXVvdGUoKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkgJiYg
bm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzTGFuZG1hcmsoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGUgPSByb2xlVmFsdWUoKTsKKyAgICAKKyAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrQmFubmVyUm9sZQorICAgICAg
ICB8fCByb2xlID09IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUKKyAgICAgICAgfHwgcm9sZSA9
PSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZQorICAgICAgICB8fCByb2xlID09IExhbmRtYXJrTWFp
blJvbGUKKyAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya05hdmlnYXRpb25Sb2xlCisgICAgICAg
IHx8IHJvbGUgPT0gTGFuZG1hcmtTZWFyY2hSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUoKS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEVkaXRvciogZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOworICAgIGlmICghZWRpdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyID0gZWRpdG9yLT50ZXh0Q2hl
Y2tlcigpOworICAgIGlmICghdGV4dENoZWNrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNoYXJhY3RlcnMoKTsK
KyAgICBpbnQgY2hhcnNMZW5ndGggPSBzdHJpbmdWYWx1ZSgpLmxlbmd0aCgpOworICAgIGJvb2wg
aXNNaXNzcGVsbGVkID0gZmFsc2U7CisgICAgCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKKyAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAgIHRleHRDaGVj
a2VyLT5jaGVja1RleHRPZlBhcmFncmFwaChjaGFycywgY2hhcnNMZW5ndGgsIFRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKKyNlbHNlCisgICAgaW50IG1pc3NwZWxsaW5nTGVu
Z3RoID0gMDsKKyAgICBpbnQgbWlzc3BlbGxpbmdMb2NhdGlvbiA9IC0xOworICAgIHRleHRDaGVj
a2VyLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoY2hhcnMsIGNoYXJzTGVuZ3RoLCAmbWlzc3BlbGxp
bmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBpZiAobWlzc3BlbGxpbmdMZW5n
dGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkKKyAgICAgICAgaXNNaXNzcGVsbGVkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBpc01pc3NwZWxsZWQ7Cit9CisKK2ludCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2ZWwoKSBjb25zdAoreworICAgIGludCBs
ZXZlbCA9IDA7CisgICAgZm9yIChOb2RlKiBlbGVtZW50Tm9kZSA9IG5vZGUoKTsgZWxlbWVudE5v
ZGU7IGVsZW1lbnROb2RlID0gZWxlbWVudE5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBp
ZiAoZWxlbWVudE5vZGUtPmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpCisgICAgICAgICAgICAr
K2xldmVsOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbGV2ZWw7Cit9CisKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNv
bnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlz
aW9uIDkxOTc1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0xpc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTGlzdEl0ZW1S
b2xlOyB9CiAgICAgYm9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQ2hl
Y2tib3goKSB8fCBpc1JhZGlvQnV0dG9uKCk7IH0KICAgICBib29sIGlzU2Nyb2xsVmlldygpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNjcm9sbEFyZWFSb2xlOyB9CisgICAgYm9vbCBp
c0Jsb2NrcXVvdGUoKSBjb25zdDsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMy
NSw2ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2VkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVW52aXNpdGVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTMzMyw2ICszMzYsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElz
RXhwYW5kZWQoYm9vbCkgeyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0
KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxl
KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNTdGF0
aWNUZXh0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0dHJp
YnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zNDgsNyArMzYxLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0ICB7IHJl
dHVybiB0cnVlOyB9CiAKKyAgICBpbnQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
aW50IHRhYmxlTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDkxOTc1KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA4MSw2ICsyMDgxLDEyIEBAIEtVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dXJsKCkgY28KICAgICByZXR1cm4gS1VSTCgpOwogfQogCitib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzVW52aXNpdGVkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSXMg
aXQgYSBwcml2YWN5IHZpb2xhdGlvbiB0byBleHBvc2UgdW52aXNpdGVkIGluZm9ybWF0aW9uIHRv
IGFjY2Vzc2liaWxpdHkgQVBJcz8KKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS0+aXNM
aW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS0+aW5zaWRlTGluaygpID09IEluc2lkZVVudmlz
aXRlZExpbms7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGVk
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSXMgaXQgYSBwcml2YWN5IHZpb2xhdGlvbiB0byBl
eHBvc2UgdmlzaXRlZCBpbmZvcm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/CkBAIC0zNjY1
LDYgKzM2NzEsNjYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0xpbmtlZAog
ICAgIHJldHVybiAhc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihhbmNob3IpLT5ocmVm
KCkuaXNFbXB0eSgpOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc0Jv
bGRGb250KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0
aW9uKCkud2VpZ2h0KCkgPj0gRm9udFdlaWdodEJvbGQ7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aGFzSXRhbGljRm9udCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRl
cmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpID09IEZvbnRJdGFsaWNPbjsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQbGFpblRleHQoKSBjb25zdAor
eworICAgIGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IFJlbmRlclN0eWxlKiBzdHlsZSA9IG1fcmVuZGVyZXItPnN0eWxlKCk7CisgICAgCisgICAgcmV0
dXJuIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA9PSBGb250V2VpZ2h0Tm9ybWFs
CisgICAgICAgICYmIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSA9PSBGb250SXRh
bGljT2ZmCisgICAgICAgICYmIHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpID09IFRE
Tk9ORTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNTYW1lRm9udChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAh
cmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9yZW5k
ZXJlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuZmFtaWx5KCkgPT0gcmVuZGVyZXItPnN0
eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmZhbWlseSgpOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Omhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikg
Y29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSA9PSByZW5kZXJlci0+c3R5bGUoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Omhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBj
b25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAhcmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKSA9PSByZW5kZXJl
ci0+c3R5bGUoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNVbmRl
cmxpbmUoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLT50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpICYgVU5ERVJMSU5FOworfQorCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bmFtZUZvck1TQUEoKSBjb25zdAogewogICAgIGlmIChtX3JlbmRlcmVyICYmIG1f
cmVuZGVyZXItPmlzVGV4dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDkxOTc1
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDkgKzk4LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2Vk
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpdGVk
KCkgY29uc3Q7ICAgICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNC
b2xkRm9udCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBoYXNTYW1lRm9udChSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
U2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
U2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNVbmRl
cmxpbmUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiA5MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDcg
KzQ0NiwxOCBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd0NvdW50KCkKICAgICAK
ICAgICByZXR1cm4gbV9yb3dzLnNpemUoKTsKIH0KKworaW50IEFjY2Vzc2liaWxpdHlUYWJsZTo6
dGFibGVMZXZlbCgpIGNvbnN0Cit7CisgICAgaW50IGxldmVsID0gMDsKKyAgICBmb3IgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iaiA9IHBhcmVudE9iamVjdCgpOyBvYmo7IG9iaiA9IG9iai0+cGFy
ZW50T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkK
KyAgICAgICAgICAgICsrbGV2ZWw7CisgICAgfQogICAgIAorICAgIHJldHVybiBsZXZlbDsKK30K
KwogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29s
dW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewogICAgIGlmICghbV9y
ZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCShyZXZpc2lvbiA5MTk3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdW5zaWduZWQg
Y29sdW1uQ291bnQoKTsKICAgICB1bnNpZ25lZCByb3dDb3VudCgpOworICAgIHZpcnR1YWwgaW50
IHRhYmxlTGV2ZWwoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNv
bnN0OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE5ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0wNy0y
OSAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
dGhlIGFiaWxpdHkgdG8gc2VhcmNoIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGNhY2hlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDk5NAorICAgICAg
ICAKKyAgICAgICAgVG8gc3VwcG9ydCBzZWFyY2hpbmcgdGhlIEFjY2Vzc2liaWxpdHlPYmplY3Qg
Y2FjaGUsIHdlIGZpcnN0IG5lZWQgdG8KKyAgICAgICAgaW1wbGVtZW50IGEgbWluaW1hbCBzZXQg
b2YgZnVuY3Rpb25zIHRoYXQgd2lsbCBhbGxvdyBBY2Nlc3NpYmlsaXR5T2JqZWN0cworICAgICAg
ICB0byBiZSBpZGVudGlmaWVkIHdoZW4gc2VhcmNoaW5nIHVzaW5nIGNvbW1vbiBzZWFyY2ggY3Jp
dGVyaWEuIFRoZSBhZGRpdGlvbmFsCisgICAgICAgIGZ1bmN0aW9ucyBiZWxvdyBjb21wbGVtZW50
IHRoZSBleGlzdGluZyBpZGVudGlmaWNhdGlvbiBmdW5jdGlvbmFsaXR5IGFscmVhZHkKKyAgICAg
ICAgYXZhaWxhYmxlIGFuZCB0b2dldGhlciBwcm92aWRlIGEgYmFzaWMgd29ya2luZyBzZXQgdG8g
YnVpbGQgc2VhcmNoIG9uIHRvcCBvZi4KKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgYmxvY2tx
dW90ZUxldmVsIGZ1bmN0aW9uIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlIEFjY2Vzc2liaWxpdHlP
YmplY3QKKyAgICAgICAgY2xhc3MgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
dGVzdHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHBhdGNoIHRoYXQgd2lsbCBh
bHNvIGltcGxlbWVudAorICAgICAgICBiYXNpYyBzZWFyY2ggZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Jsb2NrcXVvdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMYW5kbWFyayk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2ZWwpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNVbnZpc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aGFzQm9sZEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aGFzSXRhbGljRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpoYXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzU2FtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aGFzU2FtZUZvbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpoYXNTYW1lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aGFzU3RhdGljVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpoYXNVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
dGFibGVMZXZlbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzVW52aXNpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Omhhc0JvbGRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Omhhc0l0YWxpY0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aGFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Omhhc1NhbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Omhhc1NhbWVGb250Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzU2FtZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUxldmVsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9j
a3F1b3RlTGV2ZWwpOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMTEtMDctMjkgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2UgdGhlIEV4Y2VwdGlvbkNvZGUgYXJn
dW1lbnQgb2YgRWxlbWVudDo6c2V0U2hhZG93UHNldWRvSWQoKSBBU1NFUlRfTk9fRVhDRVBUSU9O
IGJ5IGRlZmF1bHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA5
MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMjMgKzQ1MSwxMCBAQCBzdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TCiAgICAgfQogfQogCi1zdGF0aWMg
aW50IGJsb2NrcXVvdGVMZXZlbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotewotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGludCByZXN1bHQgPSAwOwot
ICAgIGZvciAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYmxvY2txdW90
ZVRhZykpCi0gICAgICAgICAgICByZXN1bHQgKz0gMTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQogc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3Rl
TGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKIHsKLSAgICBpbnQgcXVvdGVMZXZlbCA9IGJsb2Nr
cXVvdGVMZXZlbChyZW5kZXJlcik7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gcmVu
ZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXIp
OworICAgIGludCBxdW90ZUxldmVsID0gb2JqLT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAKICAg
ICBpZiAocXVvdGVMZXZlbCkKICAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOk5TQWNj
ZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpxdW90ZUxldmVsXSByYW5nZTpyYW5nZV07CkBAIC0xOTg2LDcgKzE5NzMsNyBAQCAt
IChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgICAgICAgICByZXR1
cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjplbmRPZkRvY3VtZW50KHJlbmRl
cmVyLT5kb2N1bWVudCgpKV07CiAKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmJsb2NrcXVvdGVMZXZlbChyZW5k
ZXJlcildOworICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2Jq
ZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxB
dHRyaWJ1dGVdKSB7CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBt
X29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102619</attachid>
            <date>2011-08-02 00:20:06 -0700</date>
            <delta_ts>2011-08-04 09:47:56 -0700</delta_ts>
            <desc>Follow-up patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>56614</size>
            <attacher name="Samuel White">samuel.white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMDEgIFNhbXVlbCBX
aGl0ZSAgPHNhbXVlbC53aGl0ZUByb2NoZXN0ZXIuZWR1PgorCisgICAgICAgIEFkZCB0aGUgYWJp
bGl0eSB0byBzZWFyY2ggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgY2FjaGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTk0CisgICAgICAgIAorICAg
ICAgICBOZXcgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBh
bmQgQVBJIGZvciB0aGUgbWFjCisgICAgICAgIHBsYXRmb3JtIHRvIGV4cG9zZSBpdC4gQXQgdGhp
cyBwb2ludCB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBjYW4KKyAgICAgICAgYmUgc2Vh
cmNoZWQgdXNpbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgc2VhcmNoIGtleXMgdGhhdCBoYXZlIGJl
ZW4gZGVmaW5lZAorICAgICAgICBpbiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgsIG9yIGJ5IHBhc3Np
bmcgc2VhcmNoIHRleHQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0
ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5
T2JqZWN0U2VhcmNoTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU9iamVjdHNXaXRo
QWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChjcmVhdGVBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5TWFwKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcpOgor
ICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGFyYW1l
dGVyaXplZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIw
MTEtMDgtMDEgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBEb24ndCBzZXQgbV9mb250RGlydHkgd2hlbiBzZXR0aW5nIHpvb20gdW5sZXNzIHpv
b20gaGFzIGFjdHVhbGx5IGNoYW5nZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gOTIxNjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxNTkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRhY2goKQogI2VuZGlmICAgIAogfQogCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKiBheFNlYXJjaFByZWRpY2F0ZSkKK3sK
KyAgICBpZiAoIWF4T2JqZWN0IHx8ICFheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIHN3aXRjaCAoYXhTZWFyY2hQcmVkaWNhdGUtPmF4U2VhcmNoS2V5
KSB7CisgICAgLy8gVGhlIEFueVR5cGVTZWFyY2hLZXkgbWF0Y2hlcyBhbnkgbm9uLW51bGwgQWNj
ZXNzaWJpbGl0eU9iamVjdC4KKyAgICBjYXNlIEFueVR5cGVTZWFyY2hLZXk6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAKKyAgICBjYXNlIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hL
ZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9iamVjdAorICAg
ICAgICAgICAgJiYgYXhPYmplY3QtPmlzQmxvY2txdW90ZSgpCisgICAgICAgICAgICAmJiBheE9i
amVjdC0+YmxvY2txdW90ZUxldmVsKCkgPT0gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmpl
Y3QtPmJsb2NrcXVvdGVMZXZlbCgpOworICAgICAgICAKKyAgICBjYXNlIEJsb2NrcXVvdGVTZWFy
Y2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNCbG9ja3F1b3RlKCk7CisgICAgICAg
IAorICAgIGNhc2UgQm9sZEZvbnRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzQm9sZEZvbnQoKTsKKyAgICAgICAgCisgICAgY2FzZSBCdXR0b25TZWFyY2hLZXk6CisgICAg
ICAgIHJldHVybiBheE9iamVjdC0+aXNCdXR0b24oKTsKKyAgICAgICAgCisgICAgY2FzZSBDaGVj
a0JveFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0NoZWNrYm94KCk7Cisg
ICAgICAgIAorICAgIGNhc2UgQ29udHJvbFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5pc0NvbnRyb2woKTsKKyAgICAgICAgCisgICAgY2FzZSBEaWZmZXJlbnRUeXBlU2VhcmNo
S2V5OgorICAgICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QKKyAg
ICAgICAgICAgICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBheFNlYXJjaFByZWRpY2F0ZS0+
YXhTdGFydE9iamVjdC0+cm9sZVZhbHVlKCk7CisgICAgICAgIAorICAgIGNhc2UgRm9udENoYW5n
ZVNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2Jq
ZWN0CisgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhhc1NhbWVGb250KGF4U2VhcmNoUHJlZGlj
YXRlLT5heFN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKKyAgICAgICAgCisgICAgY2FzZSBGb250
Q29sb3JDaGFuZ2VTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFByZWRpY2F0ZS0+
YXhTdGFydE9iamVjdAorICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1lRm9udENvbG9y
KGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKKyAgICAgICAg
CisgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHNlYXJjaCBrZXkuCisgICAgY2FzZSBGcmFtZVNl
YXJjaEtleToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBjYXNlIEdyYXBo
aWNTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNJbWFnZSgpOworICAgICAg
ICAKKyAgICBjYXNlIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9i
amVjdC0+aGVhZGluZ0xldmVsKCkgPT0gMTsKKyAgICAgICAgCisgICAgY2FzZSBIZWFkaW5nTGV2
ZWwyU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09
IDI7CisgICAgICAgIAorICAgIGNhc2UgSGVhZGluZ0xldmVsM1NlYXJjaEtleToKKyAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSAzOworICAgICAgICAKKyAgICBjYXNl
IEhlYWRpbmdMZXZlbDRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aGVhZGlu
Z0xldmVsKCkgPT0gNDsKKyAgICAgICAgCisgICAgY2FzZSBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5
OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDU7CisgICAgICAg
IAorICAgIGNhc2UgSGVhZGluZ0xldmVsNlNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA2OworICAgICAgICAKKyAgICBjYXNlIEhlYWRpbmdTYW1l
TGV2ZWxTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFy
dE9iamVjdAorICAgICAgICAgICAgJiYgYXhPYmplY3QtPmlzSGVhZGluZygpCisgICAgICAgICAg
ICAmJiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3Rh
cnRPYmplY3QtPmhlYWRpbmdMZXZlbCgpOworICAgICAgICAKKyAgICBjYXNlIEhlYWRpbmdTZWFy
Y2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNIZWFkaW5nKCk7CisgICAgICAgIAor
ICAgIGNhc2UgSXRhbGljRm9udFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5o
YXNJdGFsaWNGb250KCk7CisgICAgICAgIAorICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hLZXk6Cisg
ICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMYW5kbWFyaygpOworICAgICAgICAKKyAgICBjYXNl
IExpbmtTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMaW5rKCk7CisgICAg
ICAgIAorICAgIGNhc2UgTGlzdFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5p
c0xpc3QoKTsKKyAgICAgICAgCisgICAgY2FzZSBMaXZlUmVnaW9uU2VhcmNoS2V5OgorICAgICAg
ICByZXR1cm4gYXhPYmplY3QtPnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKTsKKyAgICAgICAgCisg
ICAgY2FzZSBNaXNzcGVsbGVkV29yZFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0
LT5oYXNNaXNzcGVsbGluZygpOworICAgICAgICAKKyAgICBjYXNlIFBsYWluVGV4dFNlYXJjaEtl
eToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNQbGFpblRleHQoKTsKKyAgICAgICAgCisg
ICAgY2FzZSBSYWRpb0dyb3VwU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlz
UmFkaW9Hcm91cCgpOworICAgICAgICAKKyAgICBjYXNlIFNhbWVUeXBlU2VhcmNoS2V5OgorICAg
ICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QKKyAgICAgICAgICAg
ICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9i
amVjdC0+cm9sZVZhbHVlKCk7CisgICAgICAgIAorICAgIGNhc2UgU3RhdGljVGV4dFNlYXJjaEtl
eToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNTdGF0aWNUZXh0KCk7CisgICAgICAgIAor
ICAgIGNhc2UgU3R5bGVDaGFuZ2VTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFBy
ZWRpY2F0ZS0+YXhTdGFydE9iamVjdAorICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1l
U3R5bGUoYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QtPnJlbmRlcmVyKCkpOworICAg
ICAgICAKKyAgICBjYXNlIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4g
YXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QKKyAgICAgICAgICAgICYmIGF4T2JqZWN0
LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpCisgICAgICAgICAgICAmJiBheE9iamVjdC0+dGFibGVM
ZXZlbCgpID09IGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0LT50YWJsZUxldmVsKCk7
CisgICAgICAgIAorICAgIGNhc2UgVGFibGVTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9i
amVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKTsKKyAgICAgICAgCisgICAgY2FzZSBUZXh0Rmll
bGRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUZXh0Q29udHJvbCgpOwor
ICAgICAgICAKKyAgICBjYXNlIFVuZGVybGluZVNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5oYXNVbmRlcmxpbmUoKTsKKyAgICAgICAgCisgICAgY2FzZSBVbnZpc2l0ZWRMaW5r
U2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVW52aXNpdGVkKCk7CisgICAg
ICAgIAorICAgIGNhc2UgVmlzaXRlZExpbmtTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9i
amVjdC0+aXNWaXNpdGVkKCk7CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3Np
YmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKiBheFNlYXJjaFByZWRpY2F0ZSkKK3sKKyAgICBpZiAo
IWF4T2JqZWN0IHx8ICFheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIHJldHVybiBheE9iamVjdC0+YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4
dChheFNlYXJjaFByZWRpY2F0ZS0+c2VhcmNoVGV4dCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcqIHRleHQpIGNv
bnN0Cit7CisgICAgLy8gSWYgdGV4dCBpcyBudWxsIG9yIGVtcHR5IHdlIHJldHVybiB0cnVlLgor
ICAgIHJldHVybiAhdGV4dAorICAgICAgICB8fCB0ZXh0LT5pc0VtcHR5KCkKKyAgICAgICAgfHwg
dGl0bGUoKS5jb250YWlucygqdGV4dCwgZmFsc2UpCisgICAgICAgIHx8IGFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbigpLmNvbnRhaW5zKCp0ZXh0LCBmYWxzZSkKKyAgICAgICAgfHwgc3RyaW5nVmFs
dWUoKS5jb250YWlucygqdGV4dCwgZmFsc2UpOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQmxvY2txdW90ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCkt
Pmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZyk7CkBAIC0xOTQsNiArMzQ3LDQwIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICByZXR1cm4gYWNjZXNzaWJsZU9i
amVjdDsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlT2JqZWN0c1dp
dGhBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNh
dGUqIGF4U2VhcmNoUHJlZGljYXRlLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGF4UmVz
dWx0cykKK3sKKyAgICBBU1NFUlQoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQo
KSk7CisgICAgCisgICAgaWYgKCFheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBheENoaWxkcmVuOworICAgIGlm
IChheFNlYXJjaFByZWRpY2F0ZS0+YXhDb250YWluZXJPYmplY3QpCisgICAgICAgIGF4Q2hpbGRy
ZW4uYXBwZW5kKGF4U2VhcmNoUHJlZGljYXRlLT5heENvbnRhaW5lck9iamVjdCk7CisgICAgCisg
ICAgYm9vbCBpc1NlYXJjaERpcmVjdGlvbk5leHQgPSAoYXhTZWFyY2hQcmVkaWNhdGUtPmF4U2Vh
cmNoRGlyZWN0aW9uID09IFNlYXJjaERpcmVjdGlvbk5leHQpOworICAgIGJvb2wgZGlkRmluZEFY
U3RhcnRPYmplY3QgPSAoIWF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0KTsKKyAgICAK
KyAgICAvLyBGSVhNRTogQWRkIGEgY29tbWVudCBleHBsYWluaW5nIHdoYXQgaXMgZ29pbmcgb24g
aGVyZS4KKyAgICB3aGlsZSAoIWF4Q2hpbGRyZW4uaXNFbXB0eSgpICYmIGF4UmVzdWx0cy5zaXpl
KCkgPCBheFNlYXJjaFByZWRpY2F0ZS0+cmVzdWx0c0xpbWl0KSB7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4Q2hpbGQgPSBheENoaWxkcmVuLmxhc3QoKS5nZXQoKTsKKyAgICAgICAg
YXhDaGlsZHJlbi5yZW1vdmVMYXN0KCk7CisgICAgICAgIAorICAgICAgICBpZiAoZGlkRmluZEFY
U3RhcnRPYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChpc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFy
Y2hNYXRjaChheENoaWxkLCBheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAgICAgICAgICAgICAmJiBp
c0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goYXhDaGlsZCwgYXhTZWFyY2hQcmVkaWNhdGUp
KQorICAgICAgICAgICAgICAgIGF4UmVzdWx0cy5hcHBlbmQoYXhDaGlsZCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoYXhDaGlsZCA9PSBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9iamVjdCkKKyAg
ICAgICAgICAgIGRpZEZpbmRBWFN0YXJ0T2JqZWN0ID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBheEdyYW5kY2hpbGRyZW4gPSBheENoaWxkLT5j
aGlsZHJlbigpOworICAgICAgICB1bnNpZ25lZCBheEdyYW5kY2hpbGRyZW5TaXplID0gYXhDaGls
ZC0+Y2hpbGRyZW4oKS5zaXplKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IChpc1NlYXJj
aERpcmVjdGlvbk5leHQpID8gYXhHcmFuZGNoaWxkcmVuU2l6ZSA6IDA7IChpc1NlYXJjaERpcmVj
dGlvbk5leHQpID8gaSA+IDAgOiBpIDwgYXhHcmFuZGNoaWxkcmVuU2l6ZTsgKGlzU2VhcmNoRGly
ZWN0aW9uTmV4dCkgPyBpLS0gOiBpKyspCisgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGF0
dGFjaG1lbnRzLgorICAgICAgICAgICAgYXhDaGlsZHJlbi5hcHBlbmQoYXhHcmFuZGNoaWxkcmVu
LmF0KChpc1NlYXJjaERpcmVjdGlvbk5leHQpID8gaSAtIDEgOiBpKS5nZXQoKSk7CisgICAgfQor
fQorCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlS
b2xlIGFyaWFSb2xlKQogewogICAgIHJldHVybiBhcmlhUm9sZSA9PSBSYWRpb0J1dHRvblJvbGUg
fHwgYXJpYVJvbGUgPT0gQ2hlY2tCb3hSb2xlIHx8IGFyaWFSb2xlID09IFRleHRGaWVsZFJvbGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAkocmV2aXNpb24gOTIxNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBA
QCBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTIxNyw2ICsyMTgsNjAgQEAgZW51bSBBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbiB7CiAgICAgU29ydERpcmVjdGlvbkRlc2NlbmRpbmcsCiB9
OwogCitlbnVtIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24geworICAgIFNlYXJjaERpcmVj
dGlvbk5leHQgPSAxLAorICAgIFNlYXJjaERpcmVjdGlvblByZXZpb3VzCit9OworCitlbnVtIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkgeworICAgIEFueVR5cGVTZWFyY2hLZXkgPSAxLAorICAgIEJs
b2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXksCisgICAgQmxvY2txdW90ZVNlYXJjaEtleSwKKyAg
ICBCb2xkRm9udFNlYXJjaEtleSwKKyAgICBCdXR0b25TZWFyY2hLZXksCisgICAgQ2hlY2tCb3hT
ZWFyY2hLZXksCisgICAgQ29udHJvbFNlYXJjaEtleSwKKyAgICBEaWZmZXJlbnRUeXBlU2VhcmNo
S2V5LAorICAgIEZvbnRDaGFuZ2VTZWFyY2hLZXksCisgICAgRm9udENvbG9yQ2hhbmdlU2VhcmNo
S2V5LAorICAgIEZyYW1lU2VhcmNoS2V5LAorICAgIEdyYXBoaWNTZWFyY2hLZXksCisgICAgSGVh
ZGluZ0xldmVsMVNlYXJjaEtleSwKKyAgICBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LAorICAgIEhl
YWRpbmdMZXZlbDNTZWFyY2hLZXksCisgICAgSGVhZGluZ0xldmVsNFNlYXJjaEtleSwKKyAgICBI
ZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LAorICAgIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXksCisgICAg
SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSwKKyAgICBIZWFkaW5nU2VhcmNoS2V5LAorICAgIEl0
YWxpY0ZvbnRTZWFyY2hLZXksCisgICAgTGFuZG1hcmtTZWFyY2hLZXksCisgICAgTGlua1NlYXJj
aEtleSwKKyAgICBMaXN0U2VhcmNoS2V5LAorICAgIExpdmVSZWdpb25TZWFyY2hLZXksCisgICAg
TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXksCisgICAgUGxhaW5UZXh0U2VhcmNoS2V5LAorICAgIFJh
ZGlvR3JvdXBTZWFyY2hLZXksCisgICAgU2FtZVR5cGVTZWFyY2hLZXksCisgICAgU3RhdGljVGV4
dFNlYXJjaEtleSwKKyAgICBTdHlsZUNoYW5nZVNlYXJjaEtleSwKKyAgICBUYWJsZVNhbWVMZXZl
bFNlYXJjaEtleSwKKyAgICBUYWJsZVNlYXJjaEtleSwKKyAgICBUZXh0RmllbGRTZWFyY2hLZXks
CisgICAgVW5kZXJsaW5lU2VhcmNoS2V5LAorICAgIFVudmlzaXRlZExpbmtTZWFyY2hLZXksCisg
ICAgVmlzaXRlZExpbmtTZWFyY2hLZXkKK307CisKK3N0cnVjdCBBY2Nlc3NpYmlsaXR5U2VhcmNo
UHJlZGljYXRlIHsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheENvbnRhaW5lck9iamVjdDsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheFN0YXJ0T2JqZWN0OworICAgIEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb24gYXhTZWFyY2hEaXJlY3Rpb247CisgICAgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleSBheFNlYXJjaEtleTsKKyAgICBTdHJpbmcqIHNlYXJjaFRleHQ7CisgICAgdW5zaWdu
ZWQgcmVzdWx0c0xpbWl0OworfTsKKwogc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKIAog
ICAgIFZpc2libGVQb3NpdGlvbiBzdGFydDsKQEAgLTI1Myw2ICszMDgsMTAgQEAgc3RydWN0IFBs
YWluVGV4dFJhbmdlIHsKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291
bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB7CiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCgpOworICAgIAorICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBhY2Nlc3Np
YmxlT2JqZWN0c1dpdGhBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlIGZvciBBY2Nlc3NpYmls
aXR5T2JqZWN0IHNlYXJjaGluZy4KKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmpl
Y3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaFBy
ZWRpY2F0ZSopOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRj
aChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSopOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKCk7CkBAIC0yNjMsNiArMzIyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAKKyAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1Rl
eHQoU3RyaW5nICopIGNvbnN0OworICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0FuY2hvcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00MDgsNiArNDY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RB
Y2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIGFj
Y2Vzc2libGVPYmplY3RzV2l0aEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJp
bGl0eVNlYXJjaFByZWRpY2F0ZSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogCiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDkyMTY2KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3
MSw2ICsxNzEsMTYwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGUgQCJBWFBsYWNlaG9sZGVyVmFsdWUiCiAjZW5k
aWYKIAorLy8gU2VhcmNoCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFy
Y2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhV
SUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlIgorI2VuZGlmCisKKy8vIFNlYXJjaCBLZXlzCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5QW55VHlwZVNlYXJjaEtleSBAIkFYQW55VHlwZVNlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSBAIkFYQmxvY2tx
dW90ZVNhbWVMZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUJsb2NrcXVvdGVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNl
YXJjaEtleSBAIkFYQmxvY2txdW90ZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJvbGRG
b250U2VhcmNoS2V5IEAiQVhCb2xkRm9udFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCdXR0
b25TZWFyY2hLZXkgQCJBWEJ1dHRvblNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNoZWNr
Qm94U2VhcmNoS2V5IEAiQVhDaGVja0JveFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbFNlYXJjaEtleSBAIkFYQ29udHJvbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSBAIkFYRGlmZmVyZW50VHlwZVNlYXJjaEtleSIKKyNl
bmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSBAIkFYRm9udENoYW5nZVNlYXJj
aEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNl
YXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkg
QCJBWEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNz
aWJpbGl0eUZyYW1lU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNo
S2V5IEAiQVhGcmFtZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUdyYXBoaWNTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtl
eSBAIkFYR3JhcGhpY1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xl
dmVsMVNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsMVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsMlNlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hL
ZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSBAIkFYSGVh
ZGluZ0xldmVsM1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdMZXZlbDRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVs
NFNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsNVNlYXJjaEtleSIK
KyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXkK
KyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleSBAIkFYSGVhZGlu
Z0xldmVsNlNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdTYW1lTGV2ZWxTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVM
ZXZlbFNlYXJjaEtleSBAIkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ1NlYXJjaEtleSBAIkFYSGVhZGluZ1NlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSBAIkFYSXRhbGljRm9udFNlYXJjaEtleSIKKyNl
bmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5CisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5IEAiQVhMYW5kbWFya1NlYXJjaEtleSIK
KyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFyY2hLZXkKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSBAIkFYTGlua1NlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5TGlzdFNlYXJjaEtleSBAIkFYTGlzdFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5TGl2ZVJlZ2lvblNlYXJjaEtleSBAIkFYTGl2ZVJlZ2lvblNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5CisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5IEAiQVhNaXNzcGVsbGVkV29y
ZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNl
YXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXkgQCJBWFBs
YWluVGV4dFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJhZGlv
R3JvdXBTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtl
eSBAIkFYUmFkaW9Hcm91cFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eVNhbWVUeXBlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2Vh
cmNoS2V5IEAiQVhTYW1lVHlwZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNz
aWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3RhdGlj
VGV4dFNlYXJjaEtleSBAIkFYU3RhdGljVGV4dFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5IEAiQVhTdHlsZUNoYW5nZVNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxldmVsU2VhcmNoS2V5CisjZGVm
aW5lIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IEAiQVhUYWJsZVNhbWVM
ZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5IEAiQVhUYWJsZVNl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXkgQCJBWFRleHRG
aWVsZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVuZGVybGlu
ZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFyY2hLZXkgQCJB
WFVuZGVybGluZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVu
dmlzaXRlZExpbmtTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlu
a1NlYXJjaEtleSBAIkFYVW52aXNpdGVkTGlua1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhWaXNpdGVkTGlua1NlYXJjaEtleSIKKyNlbmRp
ZgorCiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBcnJheUNhdGVn
b3J5KQogCkBAIC0yNzgsNiArNDMyLDc1IEBAIHN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZUVu
ZChpZCByYW5nZSkKICAgICByZXR1cm4gQ0ZBdXRvcmVsZWFzZUhlbHBlcih3a0NvcHlBWFRleHRN
YXJrZXJSYW5nZUVuZChyYW5nZSkpOyAgICAKIH0KIAorI3ByYWdtYSBtYXJrIFNlYXJjaCBoZWxw
ZXJzCisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXlNYXA7CisKK3N0cnVjdCBTZWFyY2hLZXlFbnRyeSB7CisgICAg
U3RyaW5nIGtleTsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHZhbHVlOworfTsKKworc3Rh
dGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlNYXAoKQoreworICAgIGNvbnN0IFNlYXJjaEtleUVudHJ5IHNlYXJjaEtleXNbXSA9IHsKKyAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlBbnlUeXBlU2VhcmNoS2V5LCBBbnlUeXBlU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtl
eSwgQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUJsb2NrcXVvdGVTZWFyY2hLZXksIEJsb2NrcXVvdGVTZWFyY2hLZXkgfSwKKyAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNlYXJjaEtleSwgQm9sZEZvbnRTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXksIEJ1dHRvblNlYXJjaEtl
eSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5LCBDaGVja0Jv
eFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXks
IENvbnRyb2xTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRU
eXBlU2VhcmNoS2V5LCBEaWZmZXJlbnRUeXBlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSwgRm9udENoYW5nZVNlYXJjaEtleSB9LAorICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSwgRm9udENvbG9y
Q2hhbmdlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hL
ZXksIEZyYW1lU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1Nl
YXJjaEtleSwgR3JhcGhpY1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdMZXZlbDFTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkgfSwKKyAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwyU2Vh
cmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtl
eSwgSGVhZGluZ0xldmVsM1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdMZXZlbDRTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkgfSwKKyAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw1U2Vh
cmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtl
eSwgSGVhZGluZ0xldmVsNlNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKKyAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGlj
Rm9udFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNo
S2V5LCBMYW5kbWFya1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtT
ZWFyY2hLZXksIExpbmtTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0
U2VhcmNoS2V5LCBMaXN0U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2
ZVJlZ2lvblNlYXJjaEtleSwgTGl2ZVJlZ2lvblNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtl
eSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwgUGxhaW5U
ZXh0U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJj
aEtleSwgUmFkaW9Hcm91cFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNh
bWVUeXBlU2VhcmNoS2V5LCBTYW1lVHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIFN0YXRpY1RleHRTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5bGVDaGFuZ2VTZWFy
Y2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtl
eSwgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlU
YWJsZVNlYXJjaEtleSwgVGFibGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlUZXh0RmllbGRTZWFyY2hLZXksIFRleHRGaWVsZFNlYXJjaEtleSB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgVW5kZXJsaW5lU2VhcmNoS2V5IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSwgVW52aXNpdGVk
TGlua1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2Vh
cmNoS2V5LCBWaXNpdGVkTGlua1NlYXJjaEtleSB9CisgICAgfTsKKyAgICAKKyAgICBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleU1hcDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoc2Vh
cmNoS2V5cyk7IGkrKykKKyAgICAgICAgc2VhcmNoS2V5TWFwLT5zZXQoc2VhcmNoS2V5c1tpXS5r
ZXksIHNlYXJjaEtleXNbaV0udmFsdWUpOworICAgIAorICAgIHJldHVybiBzZWFyY2hLZXlNYXA7
Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQoIXZhbHVlLmlz
RW1wdHkoKSk7CisgICAgCisgICAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlN
YXAqIHNlYXJjaEtleU1hcCA9IGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKTsKKyAg
ICAKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHNlYXJjaEtleSA9IHNlYXJjaEtleU1hcC0+
Z2V0KHZhbHVlKTsKKyAgICAKKyAgICByZXR1cm4gc2VhcmNoS2V5ID8gc2VhcmNoS2V5IDogQW55
VHlwZVNlYXJjaEtleTsKK30KKwogI3ByYWdtYSBtYXJrIFRleHQgTWFya2VyIGhlbHBlcnMKIAog
c3RhdGljIGlkIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNoZSogY2Fj
aGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykKQEAgLTIyNDEsNiArMjQ2NCw3
IEBAIC0gKE5TQXJyYXkqIClhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEEKICAgICAgICAgICAg
ICAgICAgICAgICBAIkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiwKICAgICAgICAgICAgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlLAog
ICAgICAgICAgICAgICAgICAgICAgIG5pbF07CiAgICAgfQogCkBAIC0yNDkyLDYgKzI3MTYsNyBA
QCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgaWQgdGV4dE1h
cmtlclJhbmdlID0gbmlsOwogICAgIE5TTnVtYmVyKiBudW1iZXIgPSBuaWw7CiAgICAgTlNBcnJh
eSogYXJyYXkgPSBuaWw7CisgICAgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gbmlsOwogICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB1aUVsZW1lbnQgPSAwOwogICAgIE5TUG9pbnQg
cG9pbnQgPSBOU1plcm9Qb2ludDsKICAgICBib29sIHBvaW50U2V0ID0gZmFsc2U7CkBAIC0yNTIz
LDYgKzI3NDgsOSBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAg
ICAgZWxzZSBpZiAoW3BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0FycmF5IHNlbGZdXSkKICAg
ICAgICAgYXJyYXkgPSBwYXJhbWV0ZXI7CiAKKyAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2lu
ZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBzZWxmXV0pCisgICAgICAgIGRpY3Rpb25hcnkgPSBwYXJh
bWV0ZXI7CisKICAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUg
c2VsZl1dICYmIHN0cmNtcChbKE5TVmFsdWUqKXBhcmFtZXRlciBvYmpDVHlwZV0sIEBlbmNvZGUo
TlNQb2ludCkpID09IDApIHsKICAgICAgICAgcG9pbnRTZXQgPSB0cnVlOwogICAgICAgICBwb2lu
dCA9IFsoTlNWYWx1ZSopcGFyYW1ldGVyIHBvaW50VmFsdWVdOwpAQCAtMjUzNiw2ICsyNzY0LDM0
IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICB9CiAgICAg
CiAgICAgLy8gZGlzcGF0Y2gKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGVdKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4U3RhcnRPYmplY3QgPSAw
OworICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU3RhcnRFbGVtZW50
Il0gaXNLaW5kT2ZDbGFzczpbQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1dKQorICAg
ICAgICAgICAgYXhTdGFydE9iamVjdCA9IFsoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKVtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU3RhcnRFbGVtZW50Il0gYWNjZXNzaWJpbGl0eU9i
amVjdF07CisgICAgICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGF4
U2VhcmNoRGlyZWN0aW9uID0gU2VhcmNoRGlyZWN0aW9uTmV4dDsKKyAgICAgICAgaWYgKFtbZGlj
dGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIHNlbGZdXSkKKyAgICAgICAgICAgIGF4U2VhcmNoRGlyZWN0aW9uID0gKFsoTlNTdHJpbmcq
KVtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYRGlyZWN0aW9uIl0gaXNFcXVhbFRvU3RyaW5n
OkAiQVhEaXJlY3Rpb25OZXh0Il0pID8gU2VhcmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVj
dGlvblByZXZpb3VzOworICAgICAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBh
eFNlYXJjaEtleSA9IEFueVR5cGVTZWFyY2hLZXk7CisgICAgICAgIGlmIChbW2RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBzZWxm
XV0pCisgICAgICAgICAgICBheFNlYXJjaEtleSA9IGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JT
dHJpbmcoKENGU3RyaW5nUmVmKVtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU2VhcmNoS2V5
Il0pOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHNlYXJjaFRleHQ7CisgICAgICAgIGlmIChb
W2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hUZXh0Il0gaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgc2VsZl1dKQorICAgICAgICAgICAgc2VhcmNoVGV4dCA9IChDRlN0cmluZ1JlZilb
ZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFNlYXJjaFRleHQiXTsKKyAgICAgICAgCisgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCA9IDA7CisgICAgICAgIGlmIChbW2RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBz
ZWxmXV0pCisgICAgICAgICAgICByZXN1bHRzTGltaXQgPSBbKE5TTnVtYmVyKilbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdIHVuc2lnbmVkSW50VmFsdWVdOworICAg
ICAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSBheFNlYXJjaFByZWRp
Y2F0ZSA9IHttX29iamVjdCwgYXhTdGFydE9iamVjdCwgYXhTZWFyY2hEaXJlY3Rpb24sIGF4U2Vh
cmNoS2V5LCAmc2VhcmNoVGV4dCwgcmVzdWx0c0xpbWl0fTsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGF4UmVzdWx0czsKKyAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU9iamVjdHNXaXRoQWNjZXNzaWJpbGl0eVNl
YXJjaFByZWRpY2F0ZSgmYXhTZWFyY2hQcmVkaWNhdGUsIGF4UmVzdWx0cyk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShheFJlc3VsdHMpOworICAgIH0KKwogICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtl
ciJdKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwogICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9z
aXRpb24odmlzaWJsZVBvcyk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gOTIxNjYpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1
LDYgKzE4NSwzMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2Jq
ZWN0KS0+YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKGxvY2F0aW9uLCBsZW5ndGgp
KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQqIHN0YXJ0RWxlbWVudCA9IDA7CisgICAgYm9vbCBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOworICAgIEpTU3RyaW5nUmVmIHNlYXJjaEtleSA9IDA7CisgICAgSlNTdHJpbmdSZWYgc2Vh
cmNoVGV4dCA9IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gNCkgeworICAgICAgICBzdGFy
dEVsZW1lbnQgPSB0b0FYRWxlbWVudChKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRz
WzBdLCBleGNlcHRpb24pKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCBhcmd1bWVudHNbMV0pOworICAgICAgICBpZiAoSlNWYWx1ZUlzU3RyaW5n
KGNvbnRleHQsIGFyZ3VtZW50c1syXSkpCisgICAgICAgICAgICBzZWFyY2hLZXkgPSBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKTsKKyAgICAgICAg
aWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbM10pKQorICAgICAgICAgICAg
c2VhcmNoVGV4dCA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzNdLCBl
eGNlcHRpb24pOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRl
eHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCkpOwor
ICAgIGlmIChzZWFyY2hLZXkpCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXkpOwor
ICAgIGlmIChzZWFyY2hUZXh0KQorICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2VhcmNoVGV4dCk7
CisgICAgCisgICAgcmV0dXJuIHJlc3VsdE9iamVjdDsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYg
aW5kZXhPZkNoaWxkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAg
IGlmIChhcmd1bWVudENvdW50ICE9IDEpCkBAIC05NjYsNiArOTkwLDcgQEAgSlNDbGFzc1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKUwogICAgICAgICB7ICJzdHJpbmdGb3JSYW5nZSIs
IHN0cmluZ0ZvclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlIiwgYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkIiwgYXR0cmlidXRl
ZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAidWlF
bGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlIiwgdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2hpbGRBdEluZGV4IiwgY2hpbGRBdEluZGV4Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibGlua2VkVUlFbGVtZW50QXRJbmRleCIsIGxpbmtl
ZFVJRWxlbWVudEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpbmRleE9mQ2hp
bGQiLCBpbmRleE9mQ2hpbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gOTIxNjYpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Miw2ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nRm9y
UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgSlNTdHJpbmdS
ZWYgYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgdWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0
YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwg
SlNTdHJpbmdSZWYgc2VhcmNoVGV4dCk7CiAgICAgCiAgICAgLy8gVGFibGUtc3BlY2lmaWMKICAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29s
dW1uLCB1bnNpZ25lZCByb3cpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDkyMTY2KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTkzMiw2ICs5MzIsMjYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9u
TmV4dCwgSlNTdHJpbmdSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0KQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIHBh
cmFtZXRlciA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIFtwYXJhbWV0
ZXIgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJB
WERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOworICAgIFtwYXJhbWV0
ZXIgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OjFdIGZvcktleTpAIkFYUmVzdWx0
c0xpbWl0Il07CisgICAgaWYgKHN0YXJ0RWxlbWVudCkKKyAgICAgICAgW3BhcmFtZXRlciBzZXRP
YmplY3Q6KGlkKXN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSBmb3JLZXk6QCJBWFN0
YXJ0RWxlbWVudCJdOworICAgIGlmIChzZWFyY2hLZXkpCisgICAgICAgIFtwYXJhbWV0ZXIgc2V0
T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5XSBmb3JLZXk6
QCJBWFNlYXJjaEtleSJdOworICAgIGlmIChzZWFyY2hUZXh0KQorICAgICAgICBbcGFyYW1ldGVy
IHNldE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaFRleHRdIGZv
cktleTpAIkFYU2VhcmNoVGV4dCJdOworICAgIAorICAgIGlkIHVpRWxlbWVudCA9IFtbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVUlFbGVtZW50c0ZvclNlYXJjaFBy
ZWRpY2F0ZSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl0gbGFzdE9iamVjdF07CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQodWlFbGVtZW50KTsKKyAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQogewogICAgIC8vIG5vdCB5
ZXQgZGVmaW5lZCBpbiBBcHBLaXQuLi4gb2RkCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjE2NikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisy
MDExLTA4LTAxICBTYW11ZWwgV2hpdGUgIDxzYW11ZWwud2hpdGVAcm9jaGVzdGVyLmVkdT4KKwor
ICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDk5NAorICAgICAgICAKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBuZXcgQWNjZXNzaWJpbGl0eU9i
amVjdCBjYWNoZSBzZWFyY2ggQVBJIGFuZCB0aGUgYWRkaXRpb25hbAorICAgICAgICBmdW5jdGlv
bmFsaXR5IGluIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGNsYXNzIHRoYXQgbWFrZXMgQWNjZXNz
aWJpbGl0eU9iamVjdAorICAgICAgICBjYWNoZSBzZWFyY2hpbmcgcG9zc2libGUuCisgICAgICAg
IAorICAgICAgICBBZGRpdGlvbmFsIHRlc3RzIGZvciBmaW5kaW5nIGZyYW1lcywgbWlzc3BlbGxp
bmdzLCBhbmQgdmlzaXRlZCBsaW5rcyB3aWxsIGJlCisgICAgICAgIGluY2x1ZGVkIGluIGEgc3Vi
c2VxdWVudCBwYXRjaC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2JvdW5kcy1mb3ItcmFuZ2UtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1w
cmVkaWNhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTAxICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIExp
b24gc3BlY2lmaWMgdGVzdCByZXN1bHRzLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5n
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyMTY2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5nZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDYgKzUxLDcgQEAgQVhTdHlsZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJr
ZXIKIEFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlCiBBWEJvdW5kc0ZvclJhbmdlCiBBWFN0cmlu
Z0ZvclJhbmdlCitBWFVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGUKIAogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQoge3stMS4wMDAwMDAsIC0xLjAwMDAwMH0sIHs1OS4wMDAwMDAsIDE4LjAwMDAw
MH19CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gt
cHJlZGljYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1w
cmVkaWNhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNyBAQAorZmly
c3QgYmxvY2txdW90ZSBsZXZlbCAxCitzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxCitzYW5zLXNl
cmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZQorCitzZXJpZiBibHVlIGl0YWxpYyB0
ZXh0CisKKworIGNoZWNrYm94CisKKworZmlyc3QgaGVhZGluZyBsZXZlbCAxCisKK3NlY29uZCBo
ZWFkaW5nIGxldmVsIDEKKworaGVhZGluZyBsZXZlbCAyCisKK2hlYWRpbmcgbGV2ZWwgMworCito
ZWFkaW5nIGxldmVsIDQKKworaGVhZGluZyBsZXZlbCA1CisKK2hlYWRpbmcgbGV2ZWwgNgorCits
YW5kbWFyaworCitsaW5rCitsaXN0IGl0ZW0KK2xpdmUgcmVnaW9uCisKK3JhZGlvIGJ1dHRvbgor
Zmlyc3QgdGFibGUgaGVhZGluZyBsZXZlbCAxCitmaXJzdCB0YWJsZSBib2R5IGxldmVsIDEKK3Nl
Y29uZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEKK3NlY29uZCB0YWJsZSBib2R5IGxldmVsIDEKK1Ro
aXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGJ5
IGtleSBvciB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZXN1
bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFTUyByZXN1bHRFbGVt
ZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnCitQ
QVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2Vjb25kIGJs
b2NrcXVvdGUgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFY
R3JvdXAnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50
LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0
IHdpdGggdW5kZXJsaW5lJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhC
dXR0b24nCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWENoZWNrQm94Jwor
UEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhDaGVja0JveCcKK1BBU1MgcmVz
dWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxl
bWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJwor
UEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNlcmlmIGJs
dWUgaXRhbGljIHRleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEdy
b3VwJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAn
QVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xl
IGlzICdBWFJvbGU6IEFYSW1hZ2UnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xl
OiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIGlzICdBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnCitQQVNTIHJlc3VsdEVsZW1l
bnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDInCitQQVNT
IHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxl
dmVsIDMnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQ
QVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVl
OiBoZWFkaW5nIGxldmVsIDQnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBB
WEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDUnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBp
cyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYnCitQQVNTIHJlc3VsdEVs
ZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBzZWNvbmQgaGVhZGluZyBsZXZl
bCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhIZWFkaW5nJworUEFT
UyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTog
Zmlyc3QgaGVhZGluZyBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9s
ZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUgaXMgJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnCitQQVNTIHJlc3VsdEVsZW1l
bnQucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LnN1YnJvbGUg
aXMgJ0FYU3Vicm9sZTogQVhMYW5kbWFya0Jhbm5lcicKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xl
IGlzICdBWFJvbGU6IEFYTGluaycKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGxpbmsnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBp
cyAnQVhSb2xlOiBBWExpc3QnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBB
WEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFM
aXZlJykgaXMgJ3BvbGl0ZScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFY
U3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTog
Zmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FY
Um9sZTogQVhSYWRpb0dyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTog
QVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEnCitQQVNTIHJlc3VsdEVsZW1l
bnQucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQuc3Ry
aW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwgMScKK1BBU1MgcmVz
dWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxp
YyB0ZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhUYWJsZScKK1BB
U1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2Vjb25kIHRhYmxlIGhlYWRpbmcgbGV2
ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYVGFibGUnCitQQVNT
IHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwg
MScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYVGV4dEZpZWxkJworUEFT
UyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNhbnMtc2VyaWYg
YmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUg
aXMgJ0FYUm9sZTogQVhMaW5rJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogbGluaycKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlz
ICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBp
cyAnQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUnCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzODEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxibG9ja3F1b3RlPmZpcnN0IGJsb2NrcXVvdGUgbGV2
ZWwgMTwvYmxvY2txdW90ZT4KKzxibG9ja3F1b3RlPnNlY29uZCBibG9ja3F1b3RlIGxldmVsIDE8
L2Jsb2NrcXVvdGU+Cis8cCBzdHlsZT0iY29sb3I6YmxhY2s7IGZvbnQtZmFtaWx5OnNhbnMtc2Vy
aWY7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5zYW5zLXNl
cmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZTwvcD4KKzxwIHN0eWxlPSJjb2xvcjpi
bHVlOyBmb250LWZhbWlseTpzZXJpZjsgZm9udC1zdHlsZTppdGFsaWM7Ij5zZXJpZiBibHVlIGl0
YWxpYyB0ZXh0PC9wPgorPGZvcm0+Cis8aW5wdXQgdHlwZT0idGV4dCIgLz48YnIgLz4KKzxpbnB1
dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IkNoZWNrYm94IiAvPiBjaGVja2JveDxiciAvPgorPGlu
cHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgLz4KKzwvZm9ybT4KKzxpbWcgaWQ9Imlt
YWdlIiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgLz4KKzxoMT5maXJzdCBoZWFkaW5nIGxldmVs
IDE8L2gxPgorPGgxPnNlY29uZCBoZWFkaW5nIGxldmVsIDE8L2gxPgorPGgyPmhlYWRpbmcgbGV2
ZWwgMjwvaDI+Cis8aDM+aGVhZGluZyBsZXZlbCAzPC9oMz4KKzxoND5oZWFkaW5nIGxldmVsIDQ8
L2g0PgorPGg1PmhlYWRpbmcgbGV2ZWwgNTwvaDU+Cis8aDY+aGVhZGluZyBsZXZlbCA2PC9oNj4K
KzxwIGlkPSJiYW5uZXIiIHJvbGU9ImJhbm5lciI+bGFuZG1hcms8L3A+Cis8YSBocmVmPSIjaW1h
Z2UiPmxpbms8L2E+Cis8b2w+PGxpPmxpc3QgaXRlbTwvbGk+PC9vbD4KKzxwIGFyaWEtbGl2ZT0i
cG9saXRlIj5saXZlIHJlZ2lvbjwvcD4KKzx1bCByb2xlPSJyYWRpb2dyb3VwIj48bGkgcm9sZT0i
cmFkaW8iPnJhZGlvIGJ1dHRvbjwvbGk+PC91bD4KKzx0YWJsZT4KKzx0aGVhZD48dHI+PHRkPmZp
cnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMTwvdGQ+PC90cj48L3RoZWFkPgorPHRib2R5Pjx0cj48
dGQ+Zmlyc3QgdGFibGUgYm9keSBsZXZlbCAxPC90ZD48L3RyPjwvdGJvZHk+Cis8L3RhYmxlPgor
PHRhYmxlPgorPHRoZWFkPjx0cj48dGQ+c2Vjb25kIHRhYmxlIGhlYWRpbmcgbGV2ZWwgMTwvdGQ+
PC90cj48L3RoZWFkPgorPHRib2R5Pjx0cj48dGQ+c2Vjb25kIHRhYmxlIGJvZHkgbGV2ZWwgMTwv
dGQ+PC90cj48L3Rib2R5PgorPC90YWJsZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgYnkg
a2V5IG9yIHRleHQuIik7CisgICAgCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7
CisgICAgICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQ7CisgICAgICAgIHZhciBp
c0RpcmVjdGlvbk5leHQ7CisgICAgICAgIHZhciBzZWFyY2hLZXk7CisgICAgICAgIHZhciBzZWFy
Y2hUZXh0OworICAgICAgICB2YXIgcmVzdWx0RWxlbWVudDsKKyAgICAgICAgCisgICAgICAgIC8v
IEFueSBlbGVtZW50LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEFueVR5cGVTZWFyY2hLZXkiOwor
ICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNE
aXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgi
cmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKyAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGJs
b2NrcXVvdGUgbGV2ZWwgMSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFNhbWUgbGV2ZWwgYmxv
Y2txdW90ZS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQg
PSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNo
S2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAg
ICAvLyBCbG9ja3F1b3RlLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0
aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEJsb2NrcXVvdGVTZWFyY2hL
ZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKKyAgICAgICAgCisgICAgICAg
IC8vIEJvbGQgZm9udC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhCb2xkRm9udFNlYXJjaEtleSI7
CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZSciKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIEJ1dHRvbi4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhCdXR0b25TZWFy
Y2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOworICAg
ICAgICAKKyAgICAgICAgLy8gQ2hlY2sgYm94LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWENoZWNr
Qm94U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWENoZWNrQm94
JyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ29udHJvbC4KKyAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAi
QVhDaGVja0JveFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhD
aGVja0JveCciKTsKKyAgICAgICAgCisgICAgICAgIC8vIERpZmZlcmVudCB0eXBlIGVsZW1lbnQu
CisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
KyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRGlmZmVyZW50VHlwZVNlYXJjaEtleSI7CisgICAgICAg
IHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlv
bk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90
ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8gRm9udCBjaGFuZ2UuCisgICAgICAg
IHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNo
aWxkQXRJbmRleCgyKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAg
c2VhcmNoS2V5ID0gIkFYRm9udENoYW5nZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZXJpZiBibHVlIGl0YWxp
YyB0ZXh0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gRm9udCBjb2xvciBjaGFuZ2UuCisgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAg
ICAgc2VhcmNoS2V5ID0gIkFYRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IjsKKyAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJs
dWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAgICAvLyBGcmFtZS4KKyAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSB0aGlzIHNlYXJjaCBrZXkuCisgICAgICAgIAorICAgICAgICAvLyBH
cmFwaGljLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9
IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEdyYXBoaWNTZWFyY2hLZXkiOworICAgICAg
ICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVs
ZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rp
b25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSW1hZ2UnIik7CisgICAgICAgIAorICAgICAgICAv
LyBIZWFkaW5nIGxldmVsIDEuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVsMVNl
YXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRF
bGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOwor
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEhlYWRpbmcgbGV2ZWwgMi4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2
ZWwyU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcn
Iik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCAyJyIpOworICAgICAgICAKKyAgICAg
ICAgLy8gSGVhZGluZyBsZXZlbCAzLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZl
bDNTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyci
KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDMnIik7CisgICAgICAgIAorICAgICAg
ICAvLyBIZWFkaW5nIGxldmVsIDQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ0xldmVs
NFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIp
OworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNCciKTsKKyAgICAgICAgCisgICAgICAg
IC8vIEhlYWRpbmcgbGV2ZWwgNS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0Rp
cmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWw1
U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEhlYWRpbmcnIik7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCA1JyIpOworICAgICAgICAKKyAgICAgICAg
Ly8gSGVhZGluZyBsZXZlbCA2LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdMZXZlbDZT
ZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxl
bWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0
RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsK
KyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYnIik7CisgICAgICAgIAorICAgICAgICAv
LyBTYW1lIGxldmVsIGhlYWRpbmcuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg2KTsKKyAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYSGVhZGluZ1NhbWVM
ZXZlbFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7Cisg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhIZWFkaW5n
JyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBoZWFkaW5nIGxldmVsIDEnIik7CisgICAgICAg
IAorICAgICAgICAvLyBIZWFkaW5nLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEhlYWRpbmdTZWFy
Y2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSGVhZGluZyciKTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAg
ICAvLyBJdGFsaWMgZm9udC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVj
dGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhJdGFsaWNGb250U2VhcmNo
S2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAgICAv
LyBMYW5kbWFyay4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhMYW5kbWFya1NlYXJjaEtleSI7Cisg
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWExhbmRtYXJrQmFubmVy
JyIpOworICAgICAgICAKKyAgICAgICAgLy8gTGluay4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhM
aW5rU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExpbmsnIik7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKKyAgICAgICAgCisgICAgICAgIC8vIExpc3QuCisg
ICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAg
ICAgICAgc2VhcmNoS2V5ID0gIkFYTGlzdFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhMaXN0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gTGl2ZSBSZWdpb24u
CisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsK
KyAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGl2ZVJlZ2lvblNlYXJjaEtleSI7CisgICAgICAgIHNl
YXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVu
dC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5l
eHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUxpdmUnKSIsICIncG9saXRlJyIp
OworICAgICAgICAKKyAgICAgICAgLy8gTWlzc3BlbGxlZCB3b3JkLgorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIHRoaXMgc2VhcmNoIGtleS4KKyAgICAgICAgCisgICAgICAgIC8vIFBsYWluIHRl
eHQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1
ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYUGxhaW5UZXh0U2VhcmNoS2V5IjsKKyAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBibG9ja3F1b3Rl
IGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBSYWRpbyBncm91cC4KKyAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBz
ZWFyY2hLZXkgPSAiQVhSYWRpb0dyb3VwU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWFJhZGlvR3JvdXAnIik7CisgICAgICAgIAorICAgICAgICAvLyBTYW1lIHR5
cGUgZWxlbWVudC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhTYW1lVHlwZVNlYXJjaEtleSI7Cisg
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8gU3Rh
dGljIHRleHQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0
ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3RhdGljVGV4dFNlYXJjaEtleSI7Cisg
ICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogZmlyc3QgYmxv
Y2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8gU3R5bGUgY2hhbmdlLgor
ICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMik7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7Cisg
ICAgICAgIHNlYXJjaEtleSA9ICJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IjsKKyAgICAgICAgc2Vh
cmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50
LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4
dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJs
dWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAgICAvLyBTYW1lIGxldmVsIHRhYmxl
LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMTgpOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVl
OworICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSI7CisgICAg
ICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVy
RWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVj
dGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSciKTsKKyAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCB0YWJsZSBoZWFkaW5nIGxldmVs
IDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBUYWJsZS4KKyAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAi
QVhUYWJsZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJs
ZSciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNo
aWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZp
cnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRleHQg
ZmllbGQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0g
dHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYVGV4dEZpZWxkU2VhcmNoS2V5IjsKKyAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRleHRGaWVsZCciKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIFVuZGVybGluZS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVj
dGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhVbmRlcmxpbmVTZWFyY2hL
ZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVu
dCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUnIik7Cisg
ICAgICAgIAorICAgICAgICAvLyBVbnZpc2l0ZWQgbGluay4KKyAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAi
QVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7Cisg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWExpbmsnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKKyAgICAgICAgCisgICAgICAg
IC8vIFZpc2l0ZWQgbGluay4KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHNlYXJjaCBr
ZXkuCisgICAgICAgIAorICAgICAgICAvLyBQcmV2aW91cyB0ZXh0IHNlYXJjaC4KKyAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDEwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gZmFsc2U7CisgICAgICAg
IHNlYXJjaEtleSA9IG51bGw7CisgICAgICAgIHNlYXJjaFRleHQgPSAic2Fucy1zZXJpZiBibGFj
ayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUiOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1z
ZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUnIik7CisgICAgfQorICAgIAorICAg
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="97982"
          type_id="3"
          status="-"
          setter="gustavo.noronha"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102937</attachid>
            <date>2011-08-04 09:47:56 -0700</date>
            <delta_ts>2011-08-06 13:27:29 -0700</delta_ts>
            <desc>Fixed patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>59422</size>
            <attacher name="Samuel White">samuel.white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzc5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMDQgIFNhbSBXaGl0
ZSAgPHNhbXVlbC53aGl0ZUByb2NoZXN0ZXIuZWR1PgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0
eSB0byBzZWFyY2ggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgY2FjaGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTk0CisgICAgICAgIAorICAgICAg
ICBOZXcgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBhbmQg
QVBJIGZvciB0aGUgbWFjCisgICAgICAgIHBsYXRmb3JtIHRvIGV4cG9zZSBpdC4gQXQgdGhpcyBw
b2ludCB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBjYW4KKyAgICAgICAgYmUgc2VhcmNo
ZWQgdXNpbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgc2VhcmNoIGtleXMgdGhhdCBoYXZlIGJlZW4g
ZGVmaW5lZAorICAgICAgICBpbiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgsIG9yIGJ5IHBhc3Npbmcg
c2VhcmNoIHRleHQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5o
dG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U2VhcmNoTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU9iamVjdHNXaXRoQWNj
ZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5TWFwKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcpOgorICAg
ICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMTEt
MDgtMDQgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRWJvcmRlckZp
dCwgdXNlIGluIENTU1N0eWxlU2VsZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDkyMzcx
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsMTU5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZGV0YWNoKCkKICNlbmRpZiAgICAKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
eE9iamVjdCwgQWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSogYXhTZWFyY2hQcmVkaWNhdGUp
Cit7CisgICAgaWYgKCFheE9iamVjdCB8fCAhYXhTZWFyY2hQcmVkaWNhdGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBzd2l0Y2ggKGF4U2VhcmNoUHJlZGljYXRlLT5heFNlYXJj
aEtleSkgeworICAgIC8vIFRoZSBBbnlUeXBlU2VhcmNoS2V5IG1hdGNoZXMgYW55IG5vbi1udWxs
IEFjY2Vzc2liaWxpdHlPYmplY3QuCisgICAgY2FzZSBBbnlUeXBlU2VhcmNoS2V5OgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgY2FzZSBCbG9ja3F1b3RlU2FtZUxldmVsU2Vh
cmNoS2V5OgorICAgICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QK
KyAgICAgICAgICAgICYmIGF4T2JqZWN0LT5pc0Jsb2NrcXVvdGUoKQorICAgICAgICAgICAgJiYg
YXhPYmplY3QtPmJsb2NrcXVvdGVMZXZlbCgpID09IGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0
T2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKTsKKyAgICAgICAgCisgICAgY2FzZSBCbG9ja3F1b3Rl
U2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzQmxvY2txdW90ZSgpOworICAg
ICAgICAKKyAgICBjYXNlIEJvbGRGb250U2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPmhhc0JvbGRGb250KCk7CisgICAgICAgIAorICAgIGNhc2UgQnV0dG9uU2VhcmNoS2V5Ogor
ICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzQnV0dG9uKCk7CisgICAgICAgIAorICAgIGNhc2Ug
Q2hlY2tCb3hTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNDaGVja2JveCgp
OworICAgICAgICAKKyAgICBjYXNlIENvbnRyb2xTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aXNDb250cm9sKCk7CisgICAgICAgIAorICAgIGNhc2UgRGlmZmVyZW50VHlwZVNl
YXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0
CisgICAgICAgICAgICAmJiBheE9iamVjdC0+cm9sZVZhbHVlKCkgIT0gYXhTZWFyY2hQcmVkaWNh
dGUtPmF4U3RhcnRPYmplY3QtPnJvbGVWYWx1ZSgpOworICAgICAgICAKKyAgICBjYXNlIEZvbnRD
aGFuZ2VTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFy
dE9iamVjdAorICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1lRm9udChheFNlYXJjaFBy
ZWRpY2F0ZS0+YXhTdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CisgICAgICAgIAorICAgIGNhc2Ug
Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNh
dGUtPmF4U3RhcnRPYmplY3QKKyAgICAgICAgICAgICYmICFheE9iamVjdC0+aGFzU2FtZUZvbnRD
b2xvcihheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CisgICAg
ICAgIAorICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcyBzZWFyY2gga2V5LgorICAgIGNhc2UgRnJh
bWVTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgY2FzZSBH
cmFwaGljU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzSW1hZ2UoKTsKKyAg
ICAgICAgCisgICAgY2FzZSBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDE7CisgICAgICAgIAorICAgIGNhc2UgSGVhZGlu
Z0xldmVsMlNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KSA9PSAyOworICAgICAgICAKKyAgICBjYXNlIEhlYWRpbmdMZXZlbDNTZWFyY2hLZXk6CisgICAg
ICAgIHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gMzsKKyAgICAgICAgCisgICAg
Y2FzZSBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhl
YWRpbmdMZXZlbCgpID09IDQ7CisgICAgICAgIAorICAgIGNhc2UgSGVhZGluZ0xldmVsNVNlYXJj
aEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA1OworICAg
ICAgICAKKyAgICBjYXNlIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gNjsKKyAgICAgICAgCisgICAgY2FzZSBIZWFkaW5n
U2FtZUxldmVsU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4
U3RhcnRPYmplY3QKKyAgICAgICAgICAgICYmIGF4T2JqZWN0LT5pc0hlYWRpbmcoKQorICAgICAg
ICAgICAgJiYgYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IGF4U2VhcmNoUHJlZGljYXRlLT5h
eFN0YXJ0T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKKyAgICAgICAgCisgICAgY2FzZSBIZWFkaW5n
U2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzSGVhZGluZygpOworICAgICAg
ICAKKyAgICBjYXNlIEl0YWxpY0ZvbnRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVj
dC0+aGFzSXRhbGljRm9udCgpOworICAgICAgICAKKyAgICBjYXNlIExhbmRtYXJrU2VhcmNoS2V5
OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzTGFuZG1hcmsoKTsKKyAgICAgICAgCisgICAg
Y2FzZSBMaW5rU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzTGluaygpOwor
ICAgICAgICAKKyAgICBjYXNlIExpc3RTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVj
dC0+aXNMaXN0KCk7CisgICAgICAgIAorICAgIGNhc2UgTGl2ZVJlZ2lvblNlYXJjaEtleToKKyAg
ICAgICAgcmV0dXJuIGF4T2JqZWN0LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCk7CisgICAgICAg
IAorICAgIGNhc2UgTWlzc3BlbGxlZFdvcmRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9i
amVjdC0+aGFzTWlzc3BlbGxpbmcoKTsKKyAgICAgICAgCisgICAgY2FzZSBQbGFpblRleHRTZWFy
Y2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzUGxhaW5UZXh0KCk7CisgICAgICAg
IAorICAgIGNhc2UgUmFkaW9Hcm91cFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0
LT5pc1JhZGlvR3JvdXAoKTsKKyAgICAgICAgCisgICAgY2FzZSBTYW1lVHlwZVNlYXJjaEtleToK
KyAgICAgICAgcmV0dXJuIGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0CisgICAgICAg
ICAgICAmJiBheE9iamVjdC0+cm9sZVZhbHVlKCkgPT0gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3Rh
cnRPYmplY3QtPnJvbGVWYWx1ZSgpOworICAgICAgICAKKyAgICBjYXNlIFN0YXRpY1RleHRTZWFy
Y2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzU3RhdGljVGV4dCgpOworICAgICAg
ICAKKyAgICBjYXNlIFN0eWxlQ2hhbmdlU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhTZWFy
Y2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QKKyAgICAgICAgICAgICYmICFheE9iamVjdC0+aGFz
U2FtZVN0eWxlKGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsK
KyAgICAgICAgCisgICAgY2FzZSBUYWJsZVNhbWVMZXZlbFNlYXJjaEtleToKKyAgICAgICAgcmV0
dXJuIGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0CisgICAgICAgICAgICAmJiBheE9i
amVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKQorICAgICAgICAgICAgJiYgYXhPYmplY3QtPnRh
YmxlTGV2ZWwoKSA9PSBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9iamVjdC0+dGFibGVMZXZl
bCgpOworICAgICAgICAKKyAgICBjYXNlIFRhYmxlU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCk7CisgICAgICAgIAorICAgIGNhc2UgVGV4
dEZpZWxkU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVGV4dENvbnRyb2wo
KTsKKyAgICAgICAgCisgICAgY2FzZSBVbmRlcmxpbmVTZWFyY2hLZXk6CisgICAgICAgIHJldHVy
biBheE9iamVjdC0+aGFzVW5kZXJsaW5lKCk7CisgICAgICAgIAorICAgIGNhc2UgVW52aXNpdGVk
TGlua1NlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1VudmlzaXRlZCgpOwor
ICAgICAgICAKKyAgICBjYXNlIFZpc2l0ZWRMaW5rU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmlzVmlzaXRlZCgpOworICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwg
QWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSogYXhTZWFyY2hQcmVkaWNhdGUpCit7CisgICAg
aWYgKCFheE9iamVjdCB8fCAhYXhTZWFyY2hQcmVkaWNhdGUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICByZXR1cm4gYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWlu
c1RleHQoYXhTZWFyY2hQcmVkaWNhdGUtPnNlYXJjaFRleHQpOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nKiB0ZXh0
KSBjb25zdAoreworICAgIC8vIElmIHRleHQgaXMgbnVsbCBvciBlbXB0eSB3ZSByZXR1cm4gdHJ1
ZS4KKyAgICByZXR1cm4gIXRleHQKKyAgICAgICAgfHwgdGV4dC0+aXNFbXB0eSgpCisgICAgICAg
IHx8IHRpdGxlKCkuY29udGFpbnMoKnRleHQsIGZhbHNlKQorICAgICAgICB8fCBhY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb24oKS5jb250YWlucygqdGV4dCwgZmFsc2UpCisgICAgICAgIHx8IHN0cmlu
Z1ZhbHVlKCkuY29udGFpbnMoKnRleHQsIGZhbHNlKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0Jsb2NrcXVvdGUoKSBjb25zdAogewogICAgIHJldHVybiBub2RlKCkgJiYgbm9k
ZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpOwpAQCAtMTk0LDYgKzM0Nyw0MCBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgcmV0dXJuIGFjY2Vzc2li
bGVPYmplY3Q7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU9iamVj
dHNXaXRoQWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5U2VhcmNoUHJl
ZGljYXRlKiBheFNlYXJjaFByZWRpY2F0ZSwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBh
eFJlc3VsdHMpCit7CisgICAgQVNTRVJUKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkpOworICAgIAorICAgIGlmICghYXhTZWFyY2hQcmVkaWNhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXhDaGlsZHJlbjsKKyAg
ICBpZiAoYXhTZWFyY2hQcmVkaWNhdGUtPmF4Q29udGFpbmVyT2JqZWN0KQorICAgICAgICBheENo
aWxkcmVuLmFwcGVuZChheFNlYXJjaFByZWRpY2F0ZS0+YXhDb250YWluZXJPYmplY3QpOworICAg
IAorICAgIGJvb2wgaXNTZWFyY2hEaXJlY3Rpb25OZXh0ID0gKGF4U2VhcmNoUHJlZGljYXRlLT5h
eFNlYXJjaERpcmVjdGlvbiA9PSBTZWFyY2hEaXJlY3Rpb25OZXh0KTsKKyAgICBib29sIGRpZEZp
bmRBWFN0YXJ0T2JqZWN0ID0gKCFheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9iamVjdCk7Cisg
ICAgCisgICAgLy8gRklYTUU6IEl0ZXJhdGUgdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgY2FjaGUg
Y3JlYXRpbmcgYW5kIGFkZGluZyBvYmplY3RzIGlmIG5lc3Nlc2FyeS4KKyAgICB3aGlsZSAoIWF4
Q2hpbGRyZW4uaXNFbXB0eSgpICYmIGF4UmVzdWx0cy5zaXplKCkgPCBheFNlYXJjaFByZWRpY2F0
ZS0+cmVzdWx0c0xpbWl0KSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2hpbGQg
PSBheENoaWxkcmVuLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgYXhDaGlsZHJlbi5yZW1vdmVMYXN0
KCk7CisgICAgICAgIAorICAgICAgICBpZiAoZGlkRmluZEFYU3RhcnRPYmplY3QpIHsKKyAgICAg
ICAgICAgIGlmIChpc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaChheENoaWxkLCBheFNl
YXJjaFByZWRpY2F0ZSkKKyAgICAgICAgICAgICAgICAmJiBpc0FjY2Vzc2liaWxpdHlUZXh0U2Vh
cmNoTWF0Y2goYXhDaGlsZCwgYXhTZWFyY2hQcmVkaWNhdGUpKQorICAgICAgICAgICAgICAgICAg
ICBheFJlc3VsdHMuYXBwZW5kKGF4Q2hpbGQpOworICAgICAgICB9IGVsc2UgaWYgKGF4Q2hpbGQg
PT0gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QpCisgICAgICAgICAgICBkaWRGaW5k
QVhTdGFydE9iamVjdCA9IHRydWU7CisgICAgICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYXhHcmFuZGNoaWxkcmVuID0gYXhDaGlsZC0+Y2hpbGRyZW4oKTsKKyAgICAg
ICAgdW5zaWduZWQgYXhHcmFuZGNoaWxkcmVuU2l6ZSA9IGF4Q2hpbGQtPmNoaWxkcmVuKCkuc2l6
ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAoaXNTZWFyY2hEaXJlY3Rpb25OZXh0KSA/
IGF4R3JhbmRjaGlsZHJlblNpemUgOiAwOyAoaXNTZWFyY2hEaXJlY3Rpb25OZXh0KSA/IGkgPiAw
IDogaSA8IGF4R3JhbmRjaGlsZHJlblNpemU7IChpc1NlYXJjaERpcmVjdGlvbk5leHQpID8gaS0t
IDogaSsrKQorICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2htZW50cy4KKyAgICAg
ICAgICAgIGF4Q2hpbGRyZW4uYXBwZW5kKGF4R3JhbmRjaGlsZHJlbi5hdCgoaXNTZWFyY2hEaXJl
Y3Rpb25OZXh0KSA/IGkgLSAxIDogaSkuZ2V0KCkpOworICAgIH0KK30KKwogYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSkKIHsK
ICAgICByZXR1cm4gYXJpYVJvbGUgPT0gUmFkaW9CdXR0b25Sb2xlIHx8IGFyaWFSb2xlID09IENo
ZWNrQm94Um9sZSB8fCBhcmlhUm9sZSA9PSBUZXh0RmllbGRSb2xlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlz
aW9uIDkyMzcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWNjZXNz
aWJpbGl0eU9iamVjdDsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50OwogY2xh
c3MgRnJhbWU7CkBAIC0yMTcsNiArMjE4LDYwIEBAIGVudW0gQWNjZXNzaWJpbGl0eVNvcnREaXJl
Y3Rpb24gewogICAgIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nLAogfTsKIAorZW51bSBBY2Nlc3Np
YmlsaXR5U2VhcmNoRGlyZWN0aW9uIHsKKyAgICBTZWFyY2hEaXJlY3Rpb25OZXh0ID0gMSwKKyAg
ICBTZWFyY2hEaXJlY3Rpb25QcmV2aW91cworfTsKKworZW51bSBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5IHsKKyAgICBBbnlUeXBlU2VhcmNoS2V5ID0gMSwKKyAgICBCbG9ja3F1b3RlU2FtZUxldmVs
U2VhcmNoS2V5LAorICAgIEJsb2NrcXVvdGVTZWFyY2hLZXksCisgICAgQm9sZEZvbnRTZWFyY2hL
ZXksCisgICAgQnV0dG9uU2VhcmNoS2V5LAorICAgIENoZWNrQm94U2VhcmNoS2V5LAorICAgIENv
bnRyb2xTZWFyY2hLZXksCisgICAgRGlmZmVyZW50VHlwZVNlYXJjaEtleSwKKyAgICBGb250Q2hh
bmdlU2VhcmNoS2V5LAorICAgIEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSwKKyAgICBGcmFtZVNl
YXJjaEtleSwKKyAgICBHcmFwaGljU2VhcmNoS2V5LAorICAgIEhlYWRpbmdMZXZlbDFTZWFyY2hL
ZXksCisgICAgSGVhZGluZ0xldmVsMlNlYXJjaEtleSwKKyAgICBIZWFkaW5nTGV2ZWwzU2VhcmNo
S2V5LAorICAgIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXksCisgICAgSGVhZGluZ0xldmVsNVNlYXJj
aEtleSwKKyAgICBIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LAorICAgIEhlYWRpbmdTYW1lTGV2ZWxT
ZWFyY2hLZXksCisgICAgSGVhZGluZ1NlYXJjaEtleSwKKyAgICBJdGFsaWNGb250U2VhcmNoS2V5
LAorICAgIExhbmRtYXJrU2VhcmNoS2V5LAorICAgIExpbmtTZWFyY2hLZXksCisgICAgTGlzdFNl
YXJjaEtleSwKKyAgICBMaXZlUmVnaW9uU2VhcmNoS2V5LAorICAgIE1pc3NwZWxsZWRXb3JkU2Vh
cmNoS2V5LAorICAgIFBsYWluVGV4dFNlYXJjaEtleSwKKyAgICBSYWRpb0dyb3VwU2VhcmNoS2V5
LAorICAgIFNhbWVUeXBlU2VhcmNoS2V5LAorICAgIFN0YXRpY1RleHRTZWFyY2hLZXksCisgICAg
U3R5bGVDaGFuZ2VTZWFyY2hLZXksCisgICAgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXksCisgICAg
VGFibGVTZWFyY2hLZXksCisgICAgVGV4dEZpZWxkU2VhcmNoS2V5LAorICAgIFVuZGVybGluZVNl
YXJjaEtleSwKKyAgICBVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5LAorICAgIFZpc2l0ZWRMaW5rU2Vh
cmNoS2V5Cit9OworCitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSB7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogYXhDb250YWluZXJPYmplY3Q7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhTdGFydE9iamVjdDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
IGF4U2VhcmNoRGlyZWN0aW9uOworICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYXhTZWFyY2hL
ZXk7CisgICAgU3RyaW5nKiBzZWFyY2hUZXh0OworICAgIHVuc2lnbmVkIHJlc3VsdHNMaW1pdDsK
K307CisKIHN0cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7CiAKICAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnQ7CkBAIC0yNTMsNiArMzA4LDEwIEBAIHN0cnVjdCBQbGFpblRleHRSYW5nZSB7CiBj
bGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0
eU9iamVjdD4gewogcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKyAgICAK
KyAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgYWNjZXNzaWJsZU9iamVjdHNXaXRoQWNj
ZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSBmb3IgQWNjZXNzaWJpbGl0eU9iamVjdCBzZWFyY2hp
bmcuCisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUqKTsKKyAgICBz
dGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9i
amVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUqKTsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwpA
QCAtMjYzLDYgKzMyMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyAqKSBjb25z
dDsKKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmNob3IoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNDA4LDYgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiAwOyB9
CiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZy
b21Ob2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCBhY2Nlc3NpYmxlT2JqZWN0c1dp
dGhBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNh
dGUqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKIAogICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lv
biA5MjM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDE2MCBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZh
bHVlQXR0cmlidXRlIEAiQVhQbGFjZWhvbGRlclZhbHVlIgogI2VuZGlmCiAKKy8vIFNlYXJjaAor
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9yU2Vh
cmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYVUlFbGVtZW50c0ZvclNlYXJj
aFByZWRpY2F0ZSIKKyNlbmRpZgorCisvLyBTZWFyY2ggS2V5cworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlBbnlUeXBlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFy
Y2hLZXkgQCJBWEFueVR5cGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFy
Y2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNo
S2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXkgQCJBWEJsb2Nr
cXVvdGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlCb2xkRm9u
dFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNlYXJjaEtleSBAIkFY
Qm9sZEZvbnRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlCdXR0
b25TZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5IEAiQVhC
dXR0b25TZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlDaGVja0Jv
eFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNlYXJjaEtleSBAIkFY
Q2hlY2tCb3hTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlDb250
cm9sU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXkgQCJB
WENvbnRyb2xTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlEaWZm
ZXJlbnRUeXBlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVT
ZWFyY2hLZXkgQCJBWERpZmZlcmVudFR5cGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUZvbnRDaGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDaGFuZ2VTZWFyY2hLZXkiCisjZW5kaWYKKwor
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IEAiQVhGb250Q29sb3JDaGFu
Z2VTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSBAIkFYRnJhbWVTZWFy
Y2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5
CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXkgQCJBWEdyYXBoaWNTZWFy
Y2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXkgQCJB
WEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdM
ZXZlbDJTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkiCisjZW5kaWYKKworI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDNTZWFyY2hL
ZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNo
S2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXkgQCJBWEhl
YWRpbmdMZXZlbDRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWw1U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZl
bDVTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDZTZWFyY2hLZXki
CisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNo
S2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkgQCJB
WEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlIZWFkaW5nU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFy
Y2hLZXkgQCJBWEhlYWRpbmdTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlJdGFsaWNGb250U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUl0YWxpY0Zv
bnRTZWFyY2hLZXkgQCJBWEl0YWxpY0ZvbnRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlM
YW5kbWFya1NlYXJjaEtleSBAIkFYTGFuZG1hcmtTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxp
bmtTZWFyY2hLZXkgQCJBWExpbmtTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlMaXN0U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hL
ZXkgQCJBWExpc3RTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlM
aXZlUmVnaW9uU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFy
Y2hLZXkgQCJBWExpdmVSZWdpb25TZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlN
aXNzcGVsbGVkV29yZFNlYXJjaEtleSBAIkFYTWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkiCisjZW5k
aWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXkKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5IEAiQVhQbGFpblRleHRTZWFyY2hLZXki
CisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5Cisj
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXkgQCJBWFJhZGlvR3JvdXBT
ZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJjaEtleSBAIkFYU2FtZVR5
cGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0
U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXkgQCJB
WFN0YXRpY1RleHRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlT
dHlsZUNoYW5nZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNl
YXJjaEtleSBAIkFYU3R5bGVDaGFuZ2VTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSBAIkFYVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkiCisj
ZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleQorI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSBAIkFYVGFibGVTZWFyY2hLZXkiCisjZW5kaWYK
KworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXkKKyNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5IEAiQVhUZXh0RmllbGRTZWFyY2hLZXkiCisj
ZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lU2VhcmNoS2V5IEAiQVhVbmRlcmxpbmVTZWFyY2hL
ZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNo
S2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXkgQCJBWFVu
dmlzaXRlZExpbmtTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlW
aXNpdGVkTGlua1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlua1Nl
YXJjaEtleSBAIkFYVmlzaXRlZExpbmtTZWFyY2hLZXkiCisjZW5kaWYKKwogCiBAaW50ZXJmYWNl
IE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QXJyYXlDYXRlZ29yeSkKIApAQCAtMjc4LDYg
KzQzMiw3NSBAQCBzdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2VFbmQoaWQgcmFuZ2UpCiAgICAg
cmV0dXJuIENGQXV0b3JlbGVhc2VIZWxwZXIod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VFbmQocmFu
Z2UpKTsgICAgCiB9CiAKKyNwcmFnbWEgbWFyayBTZWFyY2ggaGVscGVycworCit0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5TWFwOworCitzdHJ1Y3QgU2VhcmNoS2V5RW50cnkgeworICAgIFN0cmluZyBrZXk7CisgICAg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleSB2YWx1ZTsKK307CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5TWFwKiBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCkKK3sKKyAgICBj
b25zdCBTZWFyY2hLZXlFbnRyeSBzZWFyY2hLZXlzW10gPSB7CisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5QW55VHlwZVNlYXJjaEtleSwgQW55VHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXksIEJsb2NrcXVvdGVTYW1l
TGV2ZWxTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2Vh
cmNoS2V5LCBCbG9ja3F1b3RlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
Qm9sZEZvbnRTZWFyY2hLZXksIEJvbGRGb250U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5LCBCdXR0b25TZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlDaGVja0JveFNlYXJjaEtleSwgQ2hlY2tCb3hTZWFyY2hLZXkgfSwKKyAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNoS2V5LCBDb250cm9sU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSwgRGlm
ZmVyZW50VHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFu
Z2VTZWFyY2hLZXksIEZvbnRDaGFuZ2VTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXksIEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSB9
LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5LCBGcmFtZVNlYXJjaEtl
eSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXksIEdyYXBoaWNT
ZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNo
S2V5LCBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
SGVhZGluZ0xldmVsMlNlYXJjaEtleSwgSGVhZGluZ0xldmVsMlNlYXJjaEtleSB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDNT
ZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNo
S2V5LCBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
SGVhZGluZ0xldmVsNVNlYXJjaEtleSwgSGVhZGluZ0xldmVsNVNlYXJjaEtleSB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDZT
ZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2Vh
cmNoS2V5LCBIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ1NlYXJjaEtleSwgSGVhZGluZ1NlYXJjaEtleSB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXksIEl0YWxpY0ZvbnRTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleSwgTGFuZG1hcmtTZWFy
Y2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5LCBMaW5rU2Vh
cmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSwgTGlzdFNl
YXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFyY2hLZXks
IExpdmVSZWdpb25TZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlNaXNzcGVs
bGVkV29yZFNlYXJjaEtleSwgTWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIFBsYWluVGV4dFNlYXJjaEtleSB9LAor
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXksIFJhZGlvR3JvdXBT
ZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJjaEtleSwg
U2FtZVR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0
U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXksIFN0eWxlQ2hhbmdlU2VhcmNoS2V5IH0sCisgICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXksIFRhYmxlU2FtZUxldmVs
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXksIFRh
YmxlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNo
S2V5LCBUZXh0RmllbGRTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlVbmRl
cmxpbmVTZWFyY2hLZXksIFVuZGVybGluZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIFVudmlzaXRlZExpbmtTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlua1NlYXJjaEtleSwgVmlzaXRlZExp
bmtTZWFyY2hLZXkgfQorICAgIH07CisgICAgCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1h
cCogc2VhcmNoS2V5TWFwID0gbmV3IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXA7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHNlYXJjaEtleXMpOyBpKyspCisg
ICAgICAgIHNlYXJjaEtleU1hcC0+c2V0KHNlYXJjaEtleXNbaV0ua2V5LCBzZWFyY2hLZXlzW2ld
LnZhbHVlKTsKKyAgICAKKyAgICByZXR1cm4gc2VhcmNoS2V5TWFwOworfQorCitzdGF0aWMgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOworICAgIAor
ICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAg
PSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCk7CisgICAgCisgICAgQWNjZXNzaWJp
bGl0eVNlYXJjaEtleSBzZWFyY2hLZXkgPSBzZWFyY2hLZXlNYXAtPmdldCh2YWx1ZSk7CisgICAg
CisgICAgcmV0dXJuIHNlYXJjaEtleSA/IHNlYXJjaEtleSA6IEFueVR5cGVTZWFyY2hLZXk7Cit9
CisKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJzCiAKIHN0YXRpYyBpZCB0ZXh0TWFy
a2VyRm9yVmlzaWJsZVBvc2l0aW9uKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3MpCkBAIC0yMjQxLDYgKzI0NjQsNyBAQCAtIChOU0FycmF5KiAp
YWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBCiAgICAgICAgICAgICAgICAgICAgICAgQCJBWExl
bmd0aEZvclRleHRNYXJrZXJSYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlLAogICAgICAgICAgICAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9y
U2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICBuaWxdOwogICAgIH0KIApAQCAtMjQ5Miw2ICsyNzE2LDcgQEAgLSAoaWQpYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IG5pbDsK
ICAgICBOU051bWJlciogbnVtYmVyID0gbmlsOwogICAgIE5TQXJyYXkqIGFycmF5ID0gbmlsOwor
ICAgIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IG5pbDsKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gdWlFbGVtZW50ID0gMDsKICAgICBOU1BvaW50IHBvaW50ID0gTlNaZXJvUG9p
bnQ7CiAgICAgYm9vbCBwb2ludFNldCA9IGZhbHNlOwpAQCAtMjUyMyw2ICsyNzQ4LDkgQEAgLSAo
aWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIGVsc2UgaWYgKFtwYXJh
bWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBzZWxmXV0pCiAgICAgICAgIGFycmF5ID0gcGFy
YW1ldGVyOwogCisgICAgZWxzZSBpZiAoW3BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU0RpY3Rp
b25hcnkgc2VsZl1dKQorICAgICAgICBkaWN0aW9uYXJ5ID0gcGFyYW1ldGVyOworCiAgICAgZWxz
ZSBpZiAoW3BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIHNlbGZdXSAmJiBzdHJjbXAo
WyhOU1ZhbHVlKilwYXJhbWV0ZXIgb2JqQ1R5cGVdLCBAZW5jb2RlKE5TUG9pbnQpKSA9PSAwKSB7
CiAgICAgICAgIHBvaW50U2V0ID0gdHJ1ZTsKICAgICAgICAgcG9pbnQgPSBbKE5TVmFsdWUqKXBh
cmFtZXRlciBwb2ludFZhbHVlXTsKQEAgLTI1MzYsNiArMjc2NCwzNCBAQCAtIChpZClhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgfQogICAgIAogICAgIC8vIGRpc3BhdGNo
CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVVJRWxl
bWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheFN0YXJ0T2JqZWN0ID0gMDsKKyAgICAgICAgaWYgKFtb
ZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGlzS2luZE9mQ2xhc3M6
W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNlbGZdXSkKKyAgICAgICAgICAgIGF4U3RhcnRP
YmplY3QgPSBbKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilbZGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGFjY2Vzc2liaWxpdHlPYmplY3RdOworICAgICAgICAK
KyAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBheFNlYXJjaERpcmVjdGlvbiA9
IFNlYXJjaERpcmVjdGlvbk5leHQ7CisgICAgICAgIGlmIChbW2RpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5OkAiQVhEaXJlY3Rpb24iXSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBzZWxmXV0pCisgICAg
ICAgICAgICBheFNlYXJjaERpcmVjdGlvbiA9IChbKE5TU3RyaW5nKilbZGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0aW9uTmV4
dCJdKSA/IFNlYXJjaERpcmVjdGlvbk5leHQgOiBTZWFyY2hEaXJlY3Rpb25QcmV2aW91czsKKyAg
ICAgICAgCisgICAgICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYXhTZWFyY2hLZXkgPSBBbnlU
eXBlU2VhcmNoS2V5OworICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFY
U2VhcmNoS2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQorICAgICAgICAgICAg
YXhTZWFyY2hLZXkgPSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKChDRlN0cmluZ1Jl
ZilbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFNlYXJjaEtleSJdKTsKKyAgICAgICAgCisg
ICAgICAgIFN0cmluZyBzZWFyY2hUZXh0OworICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpAIkFYU2VhcmNoVGV4dCJdIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIHNlbGZdXSkK
KyAgICAgICAgICAgIHNlYXJjaFRleHQgPSAoQ0ZTdHJpbmdSZWYpW2RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCByZXN1
bHRzTGltaXQgPSAwOworICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFY
UmVzdWx0c0xpbWl0Il0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgc2VsZl1dKQorICAgICAgICAg
ICAgcmVzdWx0c0xpbWl0ID0gWyhOU051bWJlciopW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAi
QVhSZXN1bHRzTGltaXQiXSB1bnNpZ25lZEludFZhbHVlXTsKKyAgICAgICAgCisgICAgICAgIEFj
Y2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUgYXhTZWFyY2hQcmVkaWNhdGUgPSB7bV9vYmplY3Qs
IGF4U3RhcnRPYmplY3QsIGF4U2VhcmNoRGlyZWN0aW9uLCBheFNlYXJjaEtleSwgJnNlYXJjaFRl
eHQsIHJlc3VsdHNMaW1pdH07CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBheFJlc3VsdHM7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFjY2Vzc2libGVPYmplY3RzV2l0aEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUoJmF4
U2VhcmNoUHJlZGljYXRlLCBheFJlc3VsdHMpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoYXhSZXN1bHRzKTsKKyAgICB9CisKICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiXSkgewogICAgICAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRN
YXJrZXI6KHRleHRNYXJrZXIpXTsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmpl
Y3QgPSBtX29iamVjdC0+YWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKHZpc2libGVQb3Mp
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gOTIzNzkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNiBAQAorMjAxMS0wOC0wNCAgU2FtIFdoaXRlICA8c2FtdWVsLndoaXRlQHJvY2hlc3Rl
ci5lZHU+CisKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCB0aGUgQWNjZXNzaWJp
bGl0eU9iamVjdCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ5OTQKKyAgICAgICAgCisgICAgICAgIEFkZGVkIHRlc3Rpbmcgc3VwcG9ydCBm
b3IgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBzZWFyY2hpbmcuIEN1cnJlbnRseSwKKyAgICAg
ICAgb25seSB0aGUgbWFjIHBsYXRmb3JtIGlzIGZ1bGwgc3VwcG9ydGVkIGFuZCBoYXMgaGFkIEFQ
SSBleHBvc2VkLiBPdGhlcgorICAgICAgICBwbGF0Zm9ybXMgaGF2ZSBvbmx5IGhhdmUgdGhpcyBu
ZXcgZnVuY3Rpb25hbGl0eSBzdHViYmVkLiBGdWxsIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlz
IGEgam9iIHN1aXRlZCBvbmx5IGZvciBhbiBhY2Nlc3NpYmlsaXR5IGV4cGVydCBvZiBlYWNoIHJl
c3BlY3RpdmUgcGxhdGZvcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoK
KyAgICAgICAgKHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZUNhbGxiYWNrKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CisgICAgICAgICh1aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6CisgICAgICAgICh1aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUpOgorCiAyMDExLTA4LTA0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1l
bmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gTWFrZSBuYXZpZ2F0aW9uIGFjdGlv
bnMgcHJvcGVybHkgdXNhYmxlIGluIFFNTC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MjM3MSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNiArMTg1LDMwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGF0dHJpYnV0ZWRTdHJpbmdS
YW5nZUkKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50
KHRoaXNPYmplY3QpLT5hdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQobG9jYXRpb24s
IGxlbmd0aCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50ID0gMDsKKyAgICBib29sIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CisgICAgSlNTdHJpbmdSZWYgc2VhcmNoS2V5ID0gMDsKKyAgICBKU1N0cmlu
Z1JlZiBzZWFyY2hUZXh0ID0gMDsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSA0KSB7CisgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IHRvQVhFbGVtZW50KEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBh
cmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CisgICAgICAgIGlmIChKU1ZhbHVl
SXNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzJdKSkKKyAgICAgICAgICAgIHNlYXJjaEtleSA9
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pOwor
ICAgICAgICBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1szXSkpCisgICAg
ICAgICAgICBzZWFyY2hUZXh0ID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVu
dHNbM10sIGV4Y2VwdGlvbik7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0UmVmIHJlc3VsdE9i
amVjdCA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hU
ZXh0KSk7CisgICAgaWYgKHNlYXJjaEtleSkKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNlYXJj
aEtleSk7CisgICAgaWYgKHNlYXJjaFRleHQpCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzZWFy
Y2hUZXh0KTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0T2JqZWN0OworfQorCiBzdGF0aWMgSlNW
YWx1ZVJlZiBpbmRleE9mQ2hpbGRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKQEAgLTk2Niw2ICs5OTAsNyBAQCBKU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgInN0cmluZ0Zv
clJhbmdlIiwgc3RyaW5nRm9yUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhdHRy
aWJ1dGVkU3RyaW5nRm9yUmFuZ2UiLCBhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2VDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQiLCBh
dHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAg
ICB7ICJ1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUiLCB1aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjaGlsZEF0SW5kZXgiLCBjaGlsZEF0
SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJsaW5rZWRVSUVsZW1lbnRBdEluZGV4
IiwgbGlua2VkVUlFbGVtZW50QXRJbmRleENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlu
ZGV4T2ZDaGlsZCIsIGluZGV4T2ZDaGlsZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiA5MjM3
MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5Miw3IEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1JlZiBz
dHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBK
U1N0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVu
c2lnbmVkIGxlbmd0aCk7CiAgICAgYm9vbCBhdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxs
ZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCB1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNTdHJpbmdSZWYgc2Vh
cmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0KTsKICAgICAKICAgICAvLyBUYWJsZS1zcGVj
aWZpYwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNp
Z25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCShyZXZpc2lvbiA5
MjM3MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDYgKzU4MCwxMiBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmlu
Z1JlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1u
LCB1bnNpZ25lZCByb3cpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQko
cmV2aXNpb24gOTIzNzEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTMyLDYgKzkzMiwyNiBAQCBib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFyY2hLZXksIEpTU3RyaW5n
UmVmIHNlYXJjaFRleHQpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNN
dXRhYmxlRGljdGlvbmFyeSogcGFyYW1ldGVyID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeV07CisgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6KGlzRGlyZWN0aW9uTmV4dCkgPyBAIkFY
RGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlvdXMiIGZvcktleTpAIkFYRGlyZWN0
aW9uIl07CisgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
MV0gZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICBpZiAoc3RhcnRFbGVtZW50KQorICAg
ICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxl
bWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07CisgICAgaWYgKHNlYXJjaEtleSkKKyAg
ICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1Jl
ZjpzZWFyY2hLZXldIGZvcktleTpAIkFYU2VhcmNoS2V5Il07CisgICAgaWYgKHNlYXJjaFRleHQp
CisgICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07CisgICAgCisgICAgaWQg
dWlFbGVtZW50ID0gW1ttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhV
SUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXSBsYXN0
T2JqZWN0XTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudCh1aUVsZW1lbnQpOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwogSlNT
dHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cygpCiB7CiAgICAgLy8gbm90IHlldCBkZWZpbmVkIGluIEFwcEtpdC4uLiBvZGQKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dFdpbi5jcHAJKHJldmlzaW9uIDkyMzcxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4
LDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0Rp
cmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4
dCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5z
aWduZWQgcm93KQogewogICAgIHJldHVybiAwOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTIzNzkpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxMS0wOC0wNCAgU2FtIFdoaXRlICA8c2FtdWVsLndoaXRlQHJvY2hlc3Rlci5lZHU+CisKKyAg
ICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBj
YWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5
OTQKKyAgICAgICAgCisgICAgICAgIFRlc3RzIGZvciB0aGUgbmV3IEFjY2Vzc2liaWxpdHlPYmpl
Y3QgY2FjaGUgc2VhcmNoIEFQSSBhbmQgdGhlIGFkZGl0aW9uYWwKKyAgICAgICAgZnVuY3Rpb25h
bGl0eSBpbiB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBjbGFzcyB0aGF0IG1ha2VzIEFjY2Vzc2li
aWxpdHlPYmplY3QKKyAgICAgICAgY2FjaGUgc2VhcmNoaW5nIHBvc3NpYmxlLgorICAgICAgICAK
KyAgICAgICAgQWRkaXRpb25hbCB0ZXN0cyBmb3IgZmluZGluZyBmcmFtZXMsIG1pc3NwZWxsaW5n
cywgYW5kIHZpc2l0ZWQgbGlua3Mgd2lsbCBiZQorICAgICAgICBpbmNsdWRlZCBpbiBhIHN1YnNl
cXVlbnQgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9ib3VuZHMtZm9yLXJhbmdlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJl
ZGljYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0wNCAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gTm9ybWFsaXplIHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlLgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5nZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
Ym91bmRzLWZvci1yYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyMzcxKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5nZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgQVhTdHlsZVRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIKIEFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlCiBBWEJvdW5kc0Zv
clJhbmdlCiBBWFN0cmluZ0ZvclJhbmdlCitBWFVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGUK
IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoge3stMS4wMDAwMDAsIC0xLjAwMDAwMH0sIHs1OS4w
MDAwMDAsIDE4LjAwMDAwMH19CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwNyBAQAorZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxCitzZWNvbmQgYmxvY2txdW90ZSBs
ZXZlbCAxCitzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZQorCitzZXJp
ZiBibHVlIGl0YWxpYyB0ZXh0CisKKworIGNoZWNrYm94CisKKworZmlyc3QgaGVhZGluZyBsZXZl
bCAxCisKK3NlY29uZCBoZWFkaW5nIGxldmVsIDEKKworaGVhZGluZyBsZXZlbCAyCisKK2hlYWRp
bmcgbGV2ZWwgMworCitoZWFkaW5nIGxldmVsIDQKKworaGVhZGluZyBsZXZlbCA1CisKK2hlYWRp
bmcgbGV2ZWwgNgorCitsYW5kbWFyaworCitsaW5rCitsaXN0IGl0ZW0KK2xpdmUgcmVnaW9uCisK
K3JhZGlvIGJ1dHRvbgorZmlyc3QgdGFibGUgaGVhZGluZyBsZXZlbCAxCitmaXJzdCB0YWJsZSBi
b2R5IGxldmVsIDEKK3NlY29uZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEKK3NlY29uZCB0YWJsZSBi
b2R5IGxldmVsIDEKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3Np
YmxlIGVsZW1lbnRzIGJ5IGtleSBvciB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0Jwor
UEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBmaXJzdCBibG9ja3F1
b3RlIGxldmVsIDEnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3Vw
JworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhW
YWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xl
IGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJworUEFT
UyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNhbnMtc2VyaWYg
YmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUg
aXMgJ0FYUm9sZTogQVhCdXR0b24nCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xl
OiBBWENoZWNrQm94JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhDaGVj
a0JveCcKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcK
K1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogZmlyc3QgYmxvY2tx
dW90ZSBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91
cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FY
VmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBp
cyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCcKK1BBU1MgcmVz
dWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYSW1hZ2UnCitQQVNTIHJlc3VsdEVsZW1lbnQu
cm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnCitQ
QVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3Vs
dEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5n
IGxldmVsIDInCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcn
CitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZh
bHVlOiBoZWFkaW5nIGxldmVsIDMnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xl
OiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDQnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9s
ZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDUnCitQQVNTIHJlc3Vs
dEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYn
CitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJl
c3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBzZWNv
bmQgaGVhZGluZyBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTog
QVhIZWFkaW5nJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogZmlyc3QgaGVhZGluZyBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50
LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnCitQ
QVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRF
bGVtZW50LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhMYW5kbWFya0Jhbm5lcicKK1BBU1MgcmVz
dWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYTGluaycKK1BBU1MgcmVzdWx0RWxlbWVudC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGxpbmsnCitQQVNTIHJlc3Vs
dEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWExpc3QnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9s
ZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKCdBWEFSSUFMaXZlJykgaXMgJ3BvbGl0ZScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xl
IGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVt
ZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhSYWRpb0dyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LnJv
bGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgo
MCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEnCitQ
QVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIHJl
c3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2
ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNT
IHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBz
ZXJpZiBibHVlIGl0YWxpYyB0ZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9s
ZTogQVhUYWJsZScKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdElu
ZGV4KDApLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2Vjb25kIHRh
YmxlIGhlYWRpbmcgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6
IEFYVGFibGUnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRl
eCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZpcnN0IHRhYmxl
IGhlYWRpbmcgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFY
VGV4dEZpZWxkJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcK
K1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJworUEFTUyByZXN1
bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhMaW5rJworUEFTUyByZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogbGluaycKK1BBU1MgcmVzdWx0
RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVu
dC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0
aCB1bmRlcmxpbmUnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2Vh
cmNoLXByZWRpY2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzODEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxibG9ja3F1b3RlPmZpcnN0
IGJsb2NrcXVvdGUgbGV2ZWwgMTwvYmxvY2txdW90ZT4KKzxibG9ja3F1b3RlPnNlY29uZCBibG9j
a3F1b3RlIGxldmVsIDE8L2Jsb2NrcXVvdGU+Cis8cCBzdHlsZT0iY29sb3I6YmxhY2s7IGZvbnQt
ZmFtaWx5OnNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjp1bmRl
cmxpbmU7Ij5zYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZTwvcD4KKzxw
IHN0eWxlPSJjb2xvcjpibHVlOyBmb250LWZhbWlseTpzZXJpZjsgZm9udC1zdHlsZTppdGFsaWM7
Ij5zZXJpZiBibHVlIGl0YWxpYyB0ZXh0PC9wPgorPGZvcm0+Cis8aW5wdXQgdHlwZT0idGV4dCIg
Lz48YnIgLz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IkNoZWNrYm94IiAvPiBjaGVj
a2JveDxiciAvPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgLz4KKzwvZm9y
bT4KKzxpbWcgaWQ9ImltYWdlIiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgLz4KKzxoMT5maXJz
dCBoZWFkaW5nIGxldmVsIDE8L2gxPgorPGgxPnNlY29uZCBoZWFkaW5nIGxldmVsIDE8L2gxPgor
PGgyPmhlYWRpbmcgbGV2ZWwgMjwvaDI+Cis8aDM+aGVhZGluZyBsZXZlbCAzPC9oMz4KKzxoND5o
ZWFkaW5nIGxldmVsIDQ8L2g0PgorPGg1PmhlYWRpbmcgbGV2ZWwgNTwvaDU+Cis8aDY+aGVhZGlu
ZyBsZXZlbCA2PC9oNj4KKzxwIGlkPSJiYW5uZXIiIHJvbGU9ImJhbm5lciI+bGFuZG1hcms8L3A+
Cis8YSBocmVmPSIjaW1hZ2UiPmxpbms8L2E+Cis8b2w+PGxpPmxpc3QgaXRlbTwvbGk+PC9vbD4K
KzxwIGFyaWEtbGl2ZT0icG9saXRlIj5saXZlIHJlZ2lvbjwvcD4KKzx1bCByb2xlPSJyYWRpb2dy
b3VwIj48bGkgcm9sZT0icmFkaW8iPnJhZGlvIGJ1dHRvbjwvbGk+PC91bD4KKzx0YWJsZT4KKzx0
aGVhZD48dHI+PHRkPmZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMTwvdGQ+PC90cj48L3RoZWFk
PgorPHRib2R5Pjx0cj48dGQ+Zmlyc3QgdGFibGUgYm9keSBsZXZlbCAxPC90ZD48L3RyPjwvdGJv
ZHk+Cis8L3RhYmxlPgorPHRhYmxlPgorPHRoZWFkPjx0cj48dGQ+c2Vjb25kIHRhYmxlIGhlYWRp
bmcgbGV2ZWwgMTwvdGQ+PC90cj48L3RoZWFkPgorPHRib2R5Pjx0cj48dGQ+c2Vjb25kIHRhYmxl
IGJvZHkgbGV2ZWwgMTwvdGQ+PC90cj48L3Rib2R5PgorPC90YWJsZT4KKworPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2li
bGUgZWxlbWVudHMgYnkga2V5IG9yIHRleHQuIik7CisgICAgCisgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Ym9keSIpLmZvY3VzKCk7CisgICAgICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQ7
CisgICAgICAgIHZhciBpc0RpcmVjdGlvbk5leHQ7CisgICAgICAgIHZhciBzZWFyY2hLZXk7Cisg
ICAgICAgIHZhciBzZWFyY2hUZXh0OworICAgICAgICB2YXIgcmVzdWx0RWxlbWVudDsKKyAgICAg
ICAgCisgICAgICAgIC8vIEFueSBlbGVtZW50LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEFueVR5
cGVTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4
dCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKKyAgICAgICAgCisgICAgICAgIC8v
IFNhbWUgbGV2ZWwgYmxvY2txdW90ZS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhCbG9ja3F1b3Rl
U2FtZUxldmVsU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdy
b3VwJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEnIik7Cisg
ICAgICAgIAorICAgICAgICAvLyBCbG9ja3F1b3RlLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7Cisg
ICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEJs
b2NrcXVvdGVTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAg
cmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQp
OworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3Jv
dXAnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIEJvbGQgZm9udC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhCb2xk
Rm9udFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7Cisg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCci
KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVy
bGluZSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEJ1dHRvbi4KKyAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkg
PSAiQVhCdXR0b25TZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
QnV0dG9uJyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgYm94LgorICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJj
aEtleSA9ICJBWENoZWNrQm94U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWENoZWNrQm94JyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ29udHJvbC4KKyAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKKyAgICAgICAgCisgICAgICAgIC8vIERpZmZlcmVu
dCB0eXBlIGVsZW1lbnQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rp
b25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRGlmZmVyZW50VHlwZVNlYXJj
aEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOwor
ICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
Zmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8gRm9udCBj
aGFuZ2UuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0g
dHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENoYW5nZVNlYXJjaEtleSI7CisgICAg
ICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVy
RWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVj
dGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBz
ZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gRm9udCBjb2xv
ciBjaGFuZ2UuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0
ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5
IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAgICAvLyBG
cmFtZS4KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHNlYXJjaCBrZXkuCisgICAgICAg
IAorICAgICAgICAvLyBHcmFwaGljLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlz
RGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEdyYXBoaWNTZWFy
Y2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxl
bWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSW1hZ2UnIik7CisgICAg
ICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDEuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsK
KyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFY
SGVhZGluZ0xldmVsMVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQ
cmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNo
VGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTog
QVhIZWFkaW5nJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMSciKTsK
KyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwgMi4KKyAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkg
PSAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWEhlYWRpbmcnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCAyJyIpOwor
ICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCAzLgorICAgICAgICBzdGFydEVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9
ICJBWEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
KyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYSGVhZGluZyciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDMnIik7Cisg
ICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDQuCisgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0g
IkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOwor
ICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2Vh
cmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9s
ZTogQVhIZWFkaW5nJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNCciKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwgNS4KKyAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAi
QVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7Cisg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWEhlYWRpbmcnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCA1JyIpOworICAg
ICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCA2LgorICAgICAgICBzdGFydEVsZW1lbnQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7
CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJB
WEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYSGVhZGluZyciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYnIik7CisgICAg
ICAgIAorICAgICAgICAvLyBTYW1lIGxldmVsIGhlYWRpbmcuCisgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCg2
KTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0g
IkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhIZWFkaW5nJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBoZWFkaW5nIGxldmVs
IDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nLgorICAgICAgICBzdGFydEVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9
ICJBWEhlYWRpbmdTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAg
ICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRl
eHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFY
SGVhZGluZyciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnIik7Cisg
ICAgICAgIAorICAgICAgICAvLyBJdGFsaWMgZm9udC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhJ
dGFsaWNGb250U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAg
IHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0
KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdy
b3VwJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CisgICAg
ICAgIAorICAgICAgICAvLyBMYW5kbWFyay4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhMYW5kbWFy
a1NlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsK
KyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBB
WExhbmRtYXJrQmFubmVyJyIpOworICAgICAgICAKKyAgICAgICAgLy8gTGluay4KKyAgICAgICAg
c3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBz
ZWFyY2hLZXkgPSAiQVhMaW5rU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7
CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBz
ZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhS
b2xlOiBBWExpbmsnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIExpc3QuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGlzdFNlYXJjaEtleSI7CisgICAg
ICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVy
RWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVj
dGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhMaXN0JyIpOworICAgICAgICAKKyAgICAgICAg
Ly8gTGl2ZSBSZWdpb24uCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rp
b25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGl2ZVJlZ2lvblNlYXJjaEtl
eSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0g
Y29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50
LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUxpdmUn
KSIsICIncG9saXRlJyIpOworICAgICAgICAKKyAgICAgICAgLy8gTWlzc3BlbGxlZCB3b3JkLgor
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHRoaXMgc2VhcmNoIGtleS4KKyAgICAgICAgCisgICAg
ICAgIC8vIFBsYWluIHRleHQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYUGxhaW5UZXh0U2VhcmNo
S2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7Cisg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBm
aXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBSYWRpbyBn
cm91cC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0
cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhSYWRpb0dyb3VwU2VhcmNoS2V5IjsKKyAgICAg
ICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJF
bGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0
aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFJhZGlvR3JvdXAnIik7CisgICAgICAgIAorICAg
ICAgICAvLyBTYW1lIHR5cGUgZWxlbWVudC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhTYW1lVHlw
ZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsK
KyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAK
KyAgICAgICAgLy8gU3RhdGljIHRleHQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
aXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3RhdGljVGV4
dFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0
JyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhW
YWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8g
U3R5bGUgY2hhbmdlLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMik7CisgICAgICAgIGlzRGlyZWN0aW9u
TmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5
IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBz
aG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAgICAvLyBT
YW1lIGxldmVsIHRhYmxlLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMTgpOworICAgICAgICBpc0RpcmVj
dGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNhbWVMZXZlbFNl
YXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRF
bGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSciKTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRl
eCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCB0YWJs
ZSBoZWFkaW5nIGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBUYWJsZS4KKyAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhUYWJsZSciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IGZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSciKTsKKyAgICAgICAgCisg
ICAgICAgIC8vIFRleHQgZmllbGQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYVGV4dEZpZWxkU2Vh
cmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1l
bnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVs
ZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRleHRGaWVsZCciKTsK
KyAgICAgICAgCisgICAgICAgIC8vIFVuZGVybGluZS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhV
bmRlcmxpbmVTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAg
cmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQp
OworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYR3Jv
dXAnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1
bmRlcmxpbmUnIik7CisgICAgICAgIAorICAgICAgICAvLyBVbnZpc2l0ZWQgbGluay4KKyAgICAg
ICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAg
ICBzZWFyY2hLZXkgPSAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNo
VGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwg
c2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWExpbmsnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIFZpc2l0ZWQgbGluay4KKyAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSB0aGlzIHNlYXJjaCBrZXkuCisgICAgICAgIAorICAgICAgICAvLyBQcmV2aW91cyB0ZXh0IHNl
YXJjaC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0g
ZmFsc2U7CisgICAgICAgIHNlYXJjaEtleSA9IG51bGw7CisgICAgICAgIHNlYXJjaFRleHQgPSAi
c2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUiOworICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7Cisg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNU
ZXh0JyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUnIik7Cisg
ICAgfQorICAgIAorICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="98371"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103162</attachid>
            <date>2011-08-06 13:27:29 -0700</date>
            <delta_ts>2011-08-07 02:48:18 -0700</delta_ts>
            <desc>Additional patch fixes.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>59485</size>
            <attacher name="Samuel White">samuel.white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNTU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMDYgIFNhbSBXaGl0
ZSAgPHNhbXVlbC53aGl0ZUByb2NoZXN0ZXIuZWR1PgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0
eSB0byBzZWFyY2ggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgY2FjaGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTk0CisgICAgICAgIAorICAgICAg
ICBOZXcgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBhbmQg
QVBJIGZvciB0aGUgbWFjCisgICAgICAgIHBsYXRmb3JtIHRvIGV4cG9zZSBpdC4gQXQgdGhpcyBw
b2ludCB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNoZSBjYW4KKyAgICAgICAgYmUgc2VhcmNo
ZWQgdXNpbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgc2VhcmNoIGtleXMgdGhhdCBoYXZlIGJlZW4g
ZGVmaW5lZAorICAgICAgICBpbiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgsIG9yIGJ5IHBhc3Npbmcg
c2VhcmNoIHRleHQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0ZS5o
dG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U2VhcmNoTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlPYmplY3RDb250YWluc1RleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU9iamVjdHNXaXRoQWNj
ZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5TWFwKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcpOgorICAg
ICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVy
aXplZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMTEt
MDgtMDYgIEFyb24gUm9zZW5iZXJnICA8YXJvc2VuYmVyZ0Bsb2dpdGVjaC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24g
OTI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4NywxNTkgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZXRhY2goKQogI2VuZGlmICAgIAogfQogCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGF4T2JqZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKiBheFNlYXJjaFByZWRp
Y2F0ZSkKK3sKKyAgICBpZiAoIWF4T2JqZWN0IHx8ICFheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHN3aXRjaCAoYXhTZWFyY2hQcmVkaWNhdGUtPmF4
U2VhcmNoS2V5KSB7CisgICAgLy8gVGhlIEFueVR5cGVTZWFyY2hLZXkgbWF0Y2hlcyBhbnkgbm9u
LW51bGwgQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICBjYXNlIEFueVR5cGVTZWFyY2hLZXk6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICBjYXNlIEJsb2NrcXVvdGVTYW1lTGV2
ZWxTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9i
amVjdAorICAgICAgICAgICAgJiYgYXhPYmplY3QtPmlzQmxvY2txdW90ZSgpCisgICAgICAgICAg
ICAmJiBheE9iamVjdC0+YmxvY2txdW90ZUxldmVsKCkgPT0gYXhTZWFyY2hQcmVkaWNhdGUtPmF4
U3RhcnRPYmplY3QtPmJsb2NrcXVvdGVMZXZlbCgpOworICAgICAgICAKKyAgICBjYXNlIEJsb2Nr
cXVvdGVTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNCbG9ja3F1b3RlKCk7
CisgICAgICAgIAorICAgIGNhc2UgQm9sZEZvbnRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aGFzQm9sZEZvbnQoKTsKKyAgICAgICAgCisgICAgY2FzZSBCdXR0b25TZWFyY2hL
ZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNCdXR0b24oKTsKKyAgICAgICAgCisgICAg
Y2FzZSBDaGVja0JveFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0NoZWNr
Ym94KCk7CisgICAgICAgIAorICAgIGNhc2UgQ29udHJvbFNlYXJjaEtleToKKyAgICAgICAgcmV0
dXJuIGF4T2JqZWN0LT5pc0NvbnRyb2woKTsKKyAgICAgICAgCisgICAgY2FzZSBEaWZmZXJlbnRU
eXBlU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRP
YmplY3QKKyAgICAgICAgICAgICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBheFNlYXJjaFBy
ZWRpY2F0ZS0+YXhTdGFydE9iamVjdC0+cm9sZVZhbHVlKCk7CisgICAgICAgIAorICAgIGNhc2Ug
Rm9udENoYW5nZVNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4U2VhcmNoUHJlZGljYXRlLT5h
eFN0YXJ0T2JqZWN0CisgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhhc1NhbWVGb250KGF4U2Vh
cmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKKyAgICAgICAgCisgICAg
Y2FzZSBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFBy
ZWRpY2F0ZS0+YXhTdGFydE9iamVjdAorICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1l
Rm9udENvbG9yKGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsK
KyAgICAgICAgCisgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHNlYXJjaCBrZXkuCisgICAgY2Fz
ZSBGcmFtZVNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBj
YXNlIEdyYXBoaWNTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNJbWFnZSgp
OworICAgICAgICAKKyAgICBjYXNlIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXk6CisgICAgICAgIHJl
dHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gMTsKKyAgICAgICAgCisgICAgY2FzZSBI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdM
ZXZlbCgpID09IDI7CisgICAgICAgIAorICAgIGNhc2UgSGVhZGluZ0xldmVsM1NlYXJjaEtleToK
KyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSAzOworICAgICAgICAK
KyAgICBjYXNlIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVj
dC0+aGVhZGluZ0xldmVsKCkgPT0gNDsKKyAgICAgICAgCisgICAgY2FzZSBIZWFkaW5nTGV2ZWw1
U2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDU7
CisgICAgICAgIAorICAgIGNhc2UgSGVhZGluZ0xldmVsNlNlYXJjaEtleToKKyAgICAgICAgcmV0
dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA2OworICAgICAgICAKKyAgICBjYXNlIEhl
YWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheFNlYXJjaFByZWRpY2F0
ZS0+YXhTdGFydE9iamVjdAorICAgICAgICAgICAgJiYgYXhPYmplY3QtPmlzSGVhZGluZygpCisg
ICAgICAgICAgICAmJiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gYXhTZWFyY2hQcmVkaWNh
dGUtPmF4U3RhcnRPYmplY3QtPmhlYWRpbmdMZXZlbCgpOworICAgICAgICAKKyAgICBjYXNlIEhl
YWRpbmdTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNIZWFkaW5nKCk7Cisg
ICAgICAgIAorICAgIGNhc2UgSXRhbGljRm9udFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5oYXNJdGFsaWNGb250KCk7CisgICAgICAgIAorICAgIGNhc2UgTGFuZG1hcmtTZWFy
Y2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMYW5kbWFyaygpOworICAgICAgICAK
KyAgICBjYXNlIExpbmtTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMaW5r
KCk7CisgICAgICAgIAorICAgIGNhc2UgTGlzdFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5pc0xpc3QoKTsKKyAgICAgICAgCisgICAgY2FzZSBMaXZlUmVnaW9uU2VhcmNoS2V5
OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKTsKKyAg
ICAgICAgCisgICAgY2FzZSBNaXNzcGVsbGVkV29yZFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJu
IGF4T2JqZWN0LT5oYXNNaXNzcGVsbGluZygpOworICAgICAgICAKKyAgICBjYXNlIFBsYWluVGV4
dFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNQbGFpblRleHQoKTsKKyAg
ICAgICAgCisgICAgY2FzZSBSYWRpb0dyb3VwU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhP
YmplY3QtPmlzUmFkaW9Hcm91cCgpOworICAgICAgICAKKyAgICBjYXNlIFNhbWVUeXBlU2VhcmNo
S2V5OgorICAgICAgICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QKKyAg
ICAgICAgICAgICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBheFNlYXJjaFByZWRpY2F0ZS0+
YXhTdGFydE9iamVjdC0+cm9sZVZhbHVlKCk7CisgICAgICAgIAorICAgIGNhc2UgU3RhdGljVGV4
dFNlYXJjaEtleToKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNTdGF0aWNUZXh0KCk7Cisg
ICAgICAgIAorICAgIGNhc2UgU3R5bGVDaGFuZ2VTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBh
eFNlYXJjaFByZWRpY2F0ZS0+YXhTdGFydE9iamVjdAorICAgICAgICAgICAgJiYgIWF4T2JqZWN0
LT5oYXNTYW1lU3R5bGUoYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QtPnJlbmRlcmVy
KCkpOworICAgICAgICAKKyAgICBjYXNlIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5OgorICAgICAg
ICByZXR1cm4gYXhTZWFyY2hQcmVkaWNhdGUtPmF4U3RhcnRPYmplY3QKKyAgICAgICAgICAgICYm
IGF4T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpCisgICAgICAgICAgICAmJiBheE9iamVj
dC0+dGFibGVMZXZlbCgpID09IGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0LT50YWJs
ZUxldmVsKCk7CisgICAgICAgIAorICAgIGNhc2UgVGFibGVTZWFyY2hLZXk6CisgICAgICAgIHJl
dHVybiBheE9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKTsKKyAgICAgICAgCisgICAgY2Fz
ZSBUZXh0RmllbGRTZWFyY2hLZXk6CisgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUZXh0Q29u
dHJvbCgpOworICAgICAgICAKKyAgICBjYXNlIFVuZGVybGluZVNlYXJjaEtleToKKyAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5oYXNVbmRlcmxpbmUoKTsKKyAgICAgICAgCisgICAgY2FzZSBVbnZp
c2l0ZWRMaW5rU2VhcmNoS2V5OgorICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVW52aXNpdGVk
KCk7CisgICAgICAgIAorICAgIGNhc2UgVmlzaXRlZExpbmtTZWFyY2hLZXk6CisgICAgICAgIHJl
dHVybiBheE9iamVjdC0+aXNWaXNpdGVkKCk7CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKiBheFNlYXJjaFByZWRpY2F0ZSkKK3sK
KyAgICBpZiAoIWF4T2JqZWN0IHx8ICFheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIHJldHVybiBheE9iamVjdC0+YWNjZXNzaWJpbGl0eU9iamVjdENv
bnRhaW5zVGV4dChheFNlYXJjaFByZWRpY2F0ZS0+c2VhcmNoVGV4dCk7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcq
IHRleHQpIGNvbnN0Cit7CisgICAgLy8gSWYgdGV4dCBpcyBudWxsIG9yIGVtcHR5IHdlIHJldHVy
biB0cnVlLgorICAgIHJldHVybiAhdGV4dAorICAgICAgICB8fCB0ZXh0LT5pc0VtcHR5KCkKKyAg
ICAgICAgfHwgdGl0bGUoKS5jb250YWlucygqdGV4dCwgZmFsc2UpCisgICAgICAgIHx8IGFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpLmNvbnRhaW5zKCp0ZXh0LCBmYWxzZSkKKyAgICAgICAgfHwg
c3RyaW5nVmFsdWUoKS5jb250YWlucygqdGV4dCwgZmFsc2UpOworfQorCiBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzQmxvY2txdW90ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5vZGUoKSAm
JiBub2RlKCktPmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZyk7CkBAIC0xOTUsNiArMzQ4LDQwIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICByZXR1cm4gYWNj
ZXNzaWJsZU9iamVjdDsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxl
T2JqZWN0c1dpdGhBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlTZWFy
Y2hQcmVkaWNhdGUqIGF4U2VhcmNoUHJlZGljYXRlLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGF4UmVzdWx0cykKK3sKKyAgICBBU1NFUlQoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSk7CisgICAgCisgICAgaWYgKCFheFNlYXJjaFByZWRpY2F0ZSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBheENoaWxkcmVu
OworICAgIGlmIChheFNlYXJjaFByZWRpY2F0ZS0+YXhDb250YWluZXJPYmplY3QpCisgICAgICAg
IGF4Q2hpbGRyZW4uYXBwZW5kKGF4U2VhcmNoUHJlZGljYXRlLT5heENvbnRhaW5lck9iamVjdCk7
CisgICAgCisgICAgYm9vbCBpc1NlYXJjaERpcmVjdGlvbk5leHQgPSAoYXhTZWFyY2hQcmVkaWNh
dGUtPmF4U2VhcmNoRGlyZWN0aW9uID09IFNlYXJjaERpcmVjdGlvbk5leHQpOworICAgIGJvb2wg
ZGlkRmluZEFYU3RhcnRPYmplY3QgPSAoIWF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0
KTsKKyAgICAKKyAgICAvLyBGSVhNRTogSXRlcmF0ZSB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBj
YWNoZSBjcmVhdGluZyBhbmQgYWRkaW5nIG9iamVjdHMgaWYgbmVzc2VzYXJ5LgorICAgIHdoaWxl
ICghYXhDaGlsZHJlbi5pc0VtcHR5KCkgJiYgYXhSZXN1bHRzLnNpemUoKSA8IGF4U2VhcmNoUHJl
ZGljYXRlLT5yZXN1bHRzTGltaXQpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhD
aGlsZCA9IGF4Q2hpbGRyZW4ubGFzdCgpLmdldCgpOworICAgICAgICBheENoaWxkcmVuLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChkaWRGaW5kQVhTdGFydE9iamVjdCkgewor
ICAgICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKGF4Q2hpbGQs
IGF4U2VhcmNoUHJlZGljYXRlKQorICAgICAgICAgICAgICAgICYmIGlzQWNjZXNzaWJpbGl0eVRl
eHRTZWFyY2hNYXRjaChheENoaWxkLCBheFNlYXJjaFByZWRpY2F0ZSkpCisgICAgICAgICAgICAg
ICAgYXhSZXN1bHRzLmFwcGVuZChheENoaWxkKTsKKyAgICAgICAgfSBlbHNlIGlmIChheENoaWxk
ID09IGF4U2VhcmNoUHJlZGljYXRlLT5heFN0YXJ0T2JqZWN0KQorICAgICAgICAgICAgZGlkRmlu
ZEFYU3RhcnRPYmplY3QgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGF4R3JhbmRjaGlsZHJlbiA9IGF4Q2hpbGQtPmNoaWxkcmVuKCk7CisgICAg
ICAgIHVuc2lnbmVkIGF4R3JhbmRjaGlsZHJlblNpemUgPSBheENoaWxkLT5jaGlsZHJlbigpLnNp
emUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gKGlzU2VhcmNoRGlyZWN0aW9uTmV4dCkg
PyBheEdyYW5kY2hpbGRyZW5TaXplIDogMDsgKGlzU2VhcmNoRGlyZWN0aW9uTmV4dCkgPyBpID4g
MCA6IGkgPCBheEdyYW5kY2hpbGRyZW5TaXplOyAoaXNTZWFyY2hEaXJlY3Rpb25OZXh0KSA/IGkt
LSA6IGkrKykKKyAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNobWVudHMuCisgICAg
ICAgICAgICBheENoaWxkcmVuLmFwcGVuZChheEdyYW5kY2hpbGRyZW4uYXQoKGlzU2VhcmNoRGly
ZWN0aW9uTmV4dCkgPyBpIC0gMSA6IGkpLmdldCgpKTsKKyAgICB9Cit9CisKIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQoQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUpCiB7
CiAgICAgcmV0dXJuIGFyaWFSb2xlID09IFJhZGlvQnV0dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBD
aGVja0JveFJvbGUgfHwgYXJpYVJvbGUgPT0gVGV4dEZpZWxkUm9sZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZp
c2lvbiA5MjU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFjY2Vz
c2liaWxpdHlPYmplY3Q7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZyYW1lOwpAQCAtMjE3LDYgKzIxOCw2MCBAQCBlbnVtIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uIHsKICAgICBTb3J0RGlyZWN0aW9uRGVzY2VuZGluZywKIH07CiAKK2VudW0gQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbiB7CisgICAgU2VhcmNoRGlyZWN0aW9uTmV4dCA9IDEsCisg
ICAgU2VhcmNoRGlyZWN0aW9uUHJldmlvdXMKK307CisKK2VudW0gQWNjZXNzaWJpbGl0eVNlYXJj
aEtleSB7CisgICAgQW55VHlwZVNlYXJjaEtleSA9IDEsCisgICAgQmxvY2txdW90ZVNhbWVMZXZl
bFNlYXJjaEtleSwKKyAgICBCbG9ja3F1b3RlU2VhcmNoS2V5LAorICAgIEJvbGRGb250U2VhcmNo
S2V5LAorICAgIEJ1dHRvblNlYXJjaEtleSwKKyAgICBDaGVja0JveFNlYXJjaEtleSwKKyAgICBD
b250cm9sU2VhcmNoS2V5LAorICAgIERpZmZlcmVudFR5cGVTZWFyY2hLZXksCisgICAgRm9udENo
YW5nZVNlYXJjaEtleSwKKyAgICBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXksCisgICAgRnJhbWVT
ZWFyY2hLZXksCisgICAgR3JhcGhpY1NlYXJjaEtleSwKKyAgICBIZWFkaW5nTGV2ZWwxU2VhcmNo
S2V5LAorICAgIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXksCisgICAgSGVhZGluZ0xldmVsM1NlYXJj
aEtleSwKKyAgICBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5LAorICAgIEhlYWRpbmdMZXZlbDVTZWFy
Y2hLZXksCisgICAgSGVhZGluZ0xldmVsNlNlYXJjaEtleSwKKyAgICBIZWFkaW5nU2FtZUxldmVs
U2VhcmNoS2V5LAorICAgIEhlYWRpbmdTZWFyY2hLZXksCisgICAgSXRhbGljRm9udFNlYXJjaEtl
eSwKKyAgICBMYW5kbWFya1NlYXJjaEtleSwKKyAgICBMaW5rU2VhcmNoS2V5LAorICAgIExpc3RT
ZWFyY2hLZXksCisgICAgTGl2ZVJlZ2lvblNlYXJjaEtleSwKKyAgICBNaXNzcGVsbGVkV29yZFNl
YXJjaEtleSwKKyAgICBQbGFpblRleHRTZWFyY2hLZXksCisgICAgUmFkaW9Hcm91cFNlYXJjaEtl
eSwKKyAgICBTYW1lVHlwZVNlYXJjaEtleSwKKyAgICBTdGF0aWNUZXh0U2VhcmNoS2V5LAorICAg
IFN0eWxlQ2hhbmdlU2VhcmNoS2V5LAorICAgIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5LAorICAg
IFRhYmxlU2VhcmNoS2V5LAorICAgIFRleHRGaWVsZFNlYXJjaEtleSwKKyAgICBVbmRlcmxpbmVT
ZWFyY2hLZXksCisgICAgVW52aXNpdGVkTGlua1NlYXJjaEtleSwKKyAgICBWaXNpdGVkTGlua1Nl
YXJjaEtleQorfTsKKworc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUgeworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q29udGFpbmVyT2JqZWN0OworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4U3RhcnRPYmplY3Q7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlv
biBheFNlYXJjaERpcmVjdGlvbjsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGF4U2VhcmNo
S2V5OworICAgIFN0cmluZyogc2VhcmNoVGV4dDsKKyAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQ7
Cit9OworCiBzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgewogCiAgICAgVmlzaWJsZVBvc2l0
aW9uIHN0YXJ0OwpAQCAtMjUzLDYgKzMwOCwxMCBAQCBzdHJ1Y3QgUGxhaW5UZXh0UmFuZ2Ugewog
Y2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisgICAg
CisgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGFjY2Vzc2libGVPYmplY3RzV2l0aEFj
Y2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3Qgc2VhcmNo
aW5nLgorICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFj
Y2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKik7CisgICAg
c3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlP
YmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKik7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eU9iamVjdCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
QEAgLTI2Myw2ICszMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJp
bGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IAorICAgIGJvb2wgYWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcgKikgY29u
c3Q7CisgICAgCiAgICAgdmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTQwOCw2ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gMDsg
fQogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RG
cm9tTm9kZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgYWNjZXNzaWJsZU9iamVjdHNX
aXRoQWNjZXNzaWJpbGl0eVNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGlj
YXRlKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAKICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9ic2VydmFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNp
b24gOTI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSwxNjAgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJW
YWx1ZUF0dHJpYnV0ZSBAIkFYUGxhY2Vob2xkZXJWYWx1ZSIKICNlbmRpZgogCisvLyBTZWFyY2gK
KyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNl
YXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFVJRWxlbWVudHNGb3JTZWFy
Y2hQcmVkaWNhdGUiCisjZW5kaWYKKworLy8gU2VhcmNoIEtleXMKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5QW55VHlwZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBbnlUeXBlU2Vh
cmNoS2V5IEAiQVhBbnlUeXBlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IEAiQVhCbG9ja3F1b3RlU2FtZUxldmVsU2Vh
cmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5IEAiQVhCbG9j
a3F1b3RlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZv
bnRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hLZXkgQCJB
WEJvbGRGb250U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QnV0
dG9uU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSBAIkFY
QnV0dG9uU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tC
b3hTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXkgQCJB
WENoZWNrQm94U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNoS2V5IEAi
QVhDb250cm9sU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RGlm
ZmVyZW50VHlwZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBl
U2VhcmNoS2V5IEAiQVhEaWZmZXJlbnRUeXBlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlGb250Q2hhbmdlU2VhcmNoS2V5IEAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IgorI2VuZGlmCisK
KyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5CisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSBAIkFYRm9udENvbG9yQ2hh
bmdlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFy
Y2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXkgQCJBWEZyYW1lU2Vh
cmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtl
eQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5IEAiQVhHcmFwaGljU2Vh
cmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNl
YXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IEAi
QVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
TGV2ZWwyU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IgorI2VuZGlmCisKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNo
S2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IEAiQVhI
ZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
SGVhZGluZ0xldmVsNVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2
ZWw1U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5
IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IEAi
QVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2Vh
cmNoS2V5IEAiQVhIZWFkaW5nU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5SXRhbGljRm9udFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlJdGFsaWNG
b250U2VhcmNoS2V5IEAiQVhJdGFsaWNGb250U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
TGFuZG1hcmtTZWFyY2hLZXkgQCJBWExhbmRtYXJrU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlM
aW5rU2VhcmNoS2V5IEAiQVhMaW5rU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5TGlzdFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNo
S2V5IEAiQVhMaXN0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
TGl2ZVJlZ2lvblNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMaXZlUmVnaW9uU2Vh
cmNoS2V5IEAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgQCJBWE1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5IgorI2Vu
ZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5CisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSBAIkFYUGxhaW5UZXh0U2VhcmNoS2V5
IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleQor
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5IEAiQVhSYWRpb0dyb3Vw
U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVTZWFy
Y2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVTZWFyY2hLZXkgQCJBWFNhbWVU
eXBlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4
dFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5IEAi
QVhTdGF0aWNUZXh0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
U3R5bGVDaGFuZ2VTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VT
ZWFyY2hLZXkgQCJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5Igor
I2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXkKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXkgQCJBWFRhYmxlU2VhcmNoS2V5IgorI2VuZGlm
CisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5CisjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleSBAIkFYVGV4dEZpZWxkU2VhcmNoS2V5Igor
I2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lU2VhcmNoS2V5CisjZGVm
aW5lIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSBAIkFYVW5kZXJsaW5lU2VhcmNo
S2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJj
aEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhV
bnZpc2l0ZWRMaW5rU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
VmlzaXRlZExpbmtTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtT
ZWFyY2hLZXkgQCJBWFZpc2l0ZWRMaW5rU2VhcmNoS2V5IgorI2VuZGlmCisKIAogQGludGVyZmFj
ZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFycmF5Q2F0ZWdvcnkpCiAKQEAgLTI3OCw2
ICs0MzIsNzUgQEAgc3RhdGljIGlkIEFYVGV4dE1hcmtlclJhbmdlRW5kKGlkIHJhbmdlKQogICAg
IHJldHVybiBDRkF1dG9yZWxlYXNlSGVscGVyKHdrQ29weUFYVGV4dE1hcmtlclJhbmdlRW5kKHJh
bmdlKSk7ICAgIAogfQogCisjcHJhZ21hIG1hcmsgU2VhcmNoIGhlbHBlcnMKKwordHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgQWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gQWNjZXNzaWJpbGl0eVNlYXJj
aEtleU1hcDsKKworc3RydWN0IFNlYXJjaEtleUVudHJ5IHsKKyAgICBTdHJpbmcga2V5OworICAg
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgdmFsdWU7Cit9OworCitzdGF0aWMgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleU1hcCogY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpCit7CisgICAg
Y29uc3QgU2VhcmNoS2V5RW50cnkgc2VhcmNoS2V5c1tdID0geworICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUFueVR5cGVTZWFyY2hLZXksIEFueVR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2Ft
ZUxldmVsU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNl
YXJjaEtleSwgQmxvY2txdW90ZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUJvbGRGb250U2VhcmNoS2V5LCBCb2xkRm9udFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwgQnV0dG9uU2VhcmNoS2V5IH0sCisgICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXksIENoZWNrQm94U2VhcmNoS2V5IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtl
eSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXksIERp
ZmZlcmVudFR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q2hh
bmdlU2VhcmNoS2V5LCBGb250Q2hhbmdlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSwgRnJhbWVTZWFyY2hL
ZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5LCBHcmFwaGlj
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNlYXJj
aEtleSwgSGVhZGluZ0xldmVsMVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJj
aEtleSwgSGVhZGluZ0xldmVsNFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw2
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNl
YXJjaEtleSwgSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEhlYWRpbmdTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5LCBJdGFsaWNGb250U2VhcmNoS2V5IH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXksIExhbmRtYXJrU2Vh
cmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSwgTGlua1Nl
YXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hLZXksIExpc3RT
ZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5
LCBMaXZlUmVnaW9uU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TWlzc3Bl
bGxlZFdvcmRTZWFyY2hLZXksIE1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5IH0sCisgICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5LCBQbGFpblRleHRTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5LCBSYWRpb0dyb3Vw
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVTZWFyY2hLZXks
IFNhbWVUeXBlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4
dFNlYXJjaEtleSwgU3RhdGljVGV4dFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5LCBTdHlsZUNoYW5nZVNlYXJjaEtleSB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxldmVsU2VhcmNoS2V5LCBUYWJsZVNhbWVMZXZl
bFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5LCBU
YWJsZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJj
aEtleSwgVGV4dEZpZWxkU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW5k
ZXJsaW5lU2VhcmNoS2V5LCBVbmRlcmxpbmVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXksIFZpc2l0ZWRM
aW5rU2VhcmNoS2V5IH0KKyAgICB9OworICAgIAorICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlN
YXAqIHNlYXJjaEtleU1hcCA9IG5ldyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChzZWFyY2hLZXlzKTsgaSsrKQor
ICAgICAgICBzZWFyY2hLZXlNYXAtPnNldChzZWFyY2hLZXlzW2ldLmtleSwgc2VhcmNoS2V5c1tp
XS52YWx1ZSk7CisgICAgCisgICAgcmV0dXJuIHNlYXJjaEtleU1hcDsKK30KKworc3RhdGljIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQoreworICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKKyAgICAK
KyAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFw
ID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOworICAgIAorICAgIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXkgc2VhcmNoS2V5ID0gc2VhcmNoS2V5TWFwLT5nZXQodmFsdWUpOworICAg
IAorICAgIHJldHVybiBzZWFyY2hLZXkgPyBzZWFyY2hLZXkgOiBBbnlUeXBlU2VhcmNoS2V5Owor
fQorCiAjcHJhZ21hIG1hcmsgVGV4dCBNYXJrZXIgaGVscGVycwogCiBzdGF0aWMgaWQgdGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zKQpAQCAtMjI0MSw2ICsyNDY0LDcgQEAgLSAoTlNBcnJheSog
KWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQQogICAgICAgICAgICAgICAgICAgICAgIEAiQVhM
ZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNz
aWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0Zv
clNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgbmlsXTsKICAgICB9CiAKQEAgLTI0OTIsNiArMjcxNiw3IEBAIC0gKGlkKWFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBuaWw7
CiAgICAgTlNOdW1iZXIqIG51bWJlciA9IG5pbDsKICAgICBOU0FycmF5KiBhcnJheSA9IG5pbDsK
KyAgICBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBuaWw7CiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IHVpRWxlbWVudCA9IDA7CiAgICAgTlNQb2ludCBwb2ludCA9IE5TWmVyb1Bv
aW50OwogICAgIGJvb2wgcG9pbnRTZXQgPSBmYWxzZTsKQEAgLTI1MjMsNiArMjc0OCw5IEBAIC0g
KGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICBlbHNlIGlmIChbcGFy
YW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgc2VsZl1dKQogICAgICAgICBhcnJheSA9IHBh
cmFtZXRlcjsKIAorICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNEaWN0
aW9uYXJ5IHNlbGZdXSkKKyAgICAgICAgZGljdGlvbmFyeSA9IHBhcmFtZXRlcjsKKwogICAgIGVs
c2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0gJiYgc3RyY21w
KFsoTlNWYWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1BvaW50KSkgPT0gMCkg
ewogICAgICAgICBwb2ludFNldCA9IHRydWU7CiAgICAgICAgIHBvaW50ID0gWyhOU1ZhbHVlKilw
YXJhbWV0ZXIgcG9pbnRWYWx1ZV07CkBAIC0yNTM2LDYgKzI3NjQsMzQgQEAgLSAoaWQpYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIH0KICAgICAKICAgICAvLyBkaXNwYXRj
aAorICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhTdGFydE9iamVjdCA9IDA7CisgICAgICAgIGlmIChb
W2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXSBpc0tpbmRPZkNsYXNz
OltBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzZWxmXV0pCisgICAgICAgICAgICBheFN0YXJ0
T2JqZWN0ID0gWyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopW2RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXSBhY2Nlc3NpYmlsaXR5T2JqZWN0XTsKKyAgICAgICAg
CisgICAgICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gYXhTZWFyY2hEaXJlY3Rpb24g
PSBTZWFyY2hEaXJlY3Rpb25OZXh0OworICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZv
cktleTpAIkFYRGlyZWN0aW9uIl0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQorICAg
ICAgICAgICAgYXhTZWFyY2hEaXJlY3Rpb24gPSAoWyhOU1N0cmluZyopW2RpY3Rpb25hcnkgb2Jq
ZWN0Rm9yS2V5OkAiQVhEaXJlY3Rpb24iXSBpc0VxdWFsVG9TdHJpbmc6QCJBWERpcmVjdGlvbk5l
eHQiXSkgPyBTZWFyY2hEaXJlY3Rpb25OZXh0IDogU2VhcmNoRGlyZWN0aW9uUHJldmlvdXM7Cisg
ICAgICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGF4U2VhcmNoS2V5ID0gQW55
VHlwZVNlYXJjaEtleTsKKyAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJB
WFNlYXJjaEtleSJdIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIHNlbGZdXSkKKyAgICAgICAgICAg
IGF4U2VhcmNoS2V5ID0gYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZygoQ0ZTdHJpbmdS
ZWYpW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXSk7CisgICAgICAgIAor
ICAgICAgICBTdHJpbmcgc2VhcmNoVGV4dDsKKyAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6QCJBWFNlYXJjaFRleHQiXSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBzZWxmXV0p
CisgICAgICAgICAgICBzZWFyY2hUZXh0ID0gKENGU3RyaW5nUmVmKVtkaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpAIkFYU2VhcmNoVGV4dCJdOworICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgcmVz
dWx0c0xpbWl0ID0gMDsKKyAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJB
WFJlc3VsdHNMaW1pdCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIHNlbGZdXSkKKyAgICAgICAg
ICAgIHJlc3VsdHNMaW1pdCA9IFsoTlNOdW1iZXIqKVtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpA
IkFYUmVzdWx0c0xpbWl0Il0gdW5zaWduZWRJbnRWYWx1ZV07CisgICAgICAgIAorICAgICAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlIGF4U2VhcmNoUHJlZGljYXRlID0ge21fb2JqZWN0
LCBheFN0YXJ0T2JqZWN0LCBheFNlYXJjaERpcmVjdGlvbiwgYXhTZWFyY2hLZXksICZzZWFyY2hU
ZXh0LCByZXN1bHRzTGltaXR9OworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXhSZXN1bHRzOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphY2Nlc3NpYmxlT2JqZWN0c1dpdGhBY2Nlc3NpYmlsaXR5U2VhcmNoUHJlZGljYXRlKCZh
eFNlYXJjaFByZWRpY2F0ZSwgYXhSZXN1bHRzKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGF4UmVzdWx0cyk7CisgICAgfQorCiAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0
TWFya2VyOih0ZXh0TWFya2VyKV07CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2Jq
ZWN0ID0gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlPYmplY3RGb3JQb3NpdGlvbih2aXNpYmxlUG9z
KTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDkyNTU2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTEtMDgtMDYgIFNhbSBXaGl0ZSAgPHNhbXVlbC53aGl0ZUByb2NoZXN0
ZXIuZWR1PgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBzZWFyY2ggdGhlIEFjY2Vzc2li
aWxpdHlPYmplY3QgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0OTk0CisgICAgICAgIAorICAgICAgICBBZGRlZCB0ZXN0aW5nIHN1cHBvcnQg
Zm9yIEFjY2Vzc2liaWxpdHlPYmplY3QgY2FjaGUgc2VhcmNoaW5nLiBDdXJyZW50bHksCisgICAg
ICAgIG9ubHkgdGhlIG1hYyBwbGF0Zm9ybSBpcyBmdWxsIHN1cHBvcnRlZCBhbmQgaGFzIGhhZCBB
UEkgZXhwb3NlZC4gT3RoZXIKKyAgICAgICAgcGxhdGZvcm1zIGhhdmUgb25seSBoYXZlIHRoaXMg
bmV3IGZ1bmN0aW9uYWxpdHkgc3R1YmJlZC4gRnVsbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBp
cyBhIGpvYiBzdWl0ZWQgb25seSBmb3IgYW4gYWNjZXNzaWJpbGl0eSBleHBlcnQgb2YgZWFjaCBy
ZXNwZWN0aXZlIHBsYXRmb3JtLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6
CisgICAgICAgICh1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGVDYWxsYmFjayk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3Bw
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKToKKwogMjAxMS0wOC0wNSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEZpeCB1bml0IHRlc3QgYnJlYWthZ2UgYnkgcGx1bWJpbmcgY29u
dmVydF80MDRfdG9fTm9uZSBpbiBNb2NrV2ViLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDkyNTU0KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NSw2ICsxODUsMzAgQEAgc3RhdGljIEpTVmFsdWVSZWYgYXR0cmlidXRlZFN0cmlu
Z1JhbmdlSQogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1l
bnQodGhpc09iamVjdCktPmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZChsb2NhdGlv
biwgbGVuZ3RoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQgPSAwOworICAgIGJvb2wgaXNEaXJlY3Rp
b25OZXh0ID0gdHJ1ZTsKKyAgICBKU1N0cmluZ1JlZiBzZWFyY2hLZXkgPSAwOworICAgIEpTU3Ry
aW5nUmVmIHNlYXJjaFRleHQgPSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDQpIHsKKyAg
ICAgICAgc3RhcnRFbGVtZW50ID0gdG9BWEVsZW1lbnQoSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IEpT
VmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzFdKTsKKyAgICAgICAgaWYgKEpTVmFs
dWVJc1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbMl0pKQorICAgICAgICAgICAgc2VhcmNoS2V5
ID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbik7
CisgICAgICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzNdKSkKKyAg
ICAgICAgICAgIHNlYXJjaFRleHQgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1szXSwgZXhjZXB0aW9uKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3RSZWYgcmVzdWx0
T2JqZWN0ID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxl
bWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+dWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpKTsKKyAgICBpZiAoc2VhcmNoS2V5KQorICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2Vh
cmNoS2V5KTsKKyAgICBpZiAoc2VhcmNoVGV4dCkKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNl
YXJjaFRleHQpOworICAgIAorICAgIHJldHVybiByZXN1bHRPYmplY3Q7Cit9CisKIHN0YXRpYyBK
U1ZhbHVlUmVmIGluZGV4T2ZDaGlsZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQpAQCAtOTY2LDYgKzk5MCw3IEBAIEpT
Q2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAic3RyaW5n
Rm9yUmFuZ2UiLCBzdHJpbmdGb3JSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImF0
dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSIsIGF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCIs
IGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZSIsIHVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNoaWxkQXRJbmRleCIsIGNoaWxk
QXRJbmRleENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImxpbmtlZFVJRWxlbWVudEF0SW5k
ZXgiLCBsaW5rZWRVSUVsZW1lbnRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
aW5kZXhPZkNoaWxkIiwgaW5kZXhPZkNoaWxkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDky
NTU0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAgcHVibGljOgogICAgIEpTU3RyaW5nUmVm
IHN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogICAg
IEpTU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICBib29sIGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3Bl
bGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBz
ZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQpOwogICAgIAogICAgIC8vIFRhYmxlLXNw
ZWNpZmljCiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHJldmlzaW9u
IDkyNTU0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNiArNTgwLDEyIEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9v
bCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2Vh
cmNoVGV4dCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdykKIHsKICAgICBpZiAoIW1f
ZWxlbWVudCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiA5MjU1NCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC05MzIsNiArOTMyLDI2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlZFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3Ry
aW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCkKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBwYXJhbWV0ZXIgPSBb
TlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBbcGFyYW1ldGVyIHNldE9iamVj
dDooaXNEaXJlY3Rpb25OZXh0KSA/IEAiQVhEaXJlY3Rpb25OZXh0IiA6IEAiQVhEaXJlY3Rpb25Q
cmV2aW91cyIgZm9yS2V5OkAiQVhEaXJlY3Rpb24iXTsKKyAgICBbcGFyYW1ldGVyIHNldE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOwor
ICAgIGlmIChzdGFydEVsZW1lbnQpCisgICAgICAgIFtwYXJhbWV0ZXIgc2V0T2JqZWN0OihpZClz
dGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQi
XTsKKyAgICBpZiAoc2VhcmNoS2V5KQorICAgICAgICBbcGFyYW1ldGVyIHNldE9iamVjdDpbTlNT
dHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtleV0gZm9yS2V5OkAiQVhTZWFyY2hL
ZXkiXTsKKyAgICBpZiAoc2VhcmNoVGV4dCkKKyAgICAgICAgW3BhcmFtZXRlciBzZXRPYmplY3Q6
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzZWFyY2hUZXh0XSBmb3JLZXk6QCJBWFNl
YXJjaFRleHQiXTsKKyAgICAKKyAgICBpZCB1aUVsZW1lbnQgPSBbW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGUiIGZv
clBhcmFtZXRlcjpwYXJhbWV0ZXJdIGxhc3RPYmplY3RdOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KHVpRWxlbWVudCk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwOworfQorCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKIHsKICAgICAvLyBub3QgeWV0IGRlZmluZWQg
aW4gQXBwS2l0Li4uIG9kZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gOTI1NTQpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4OCw2ICs0ODgsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9u
TmV4dCwgSlNTdHJpbmdSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0KQorewor
ICAgIHJldHVybiAwOworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCBy
b3cpCiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjU1NikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTA4
LTA2ICBTYW0gV2hpdGUgIDxzYW11ZWwud2hpdGVAcm9jaGVzdGVyLmVkdT4KKworICAgICAgICBB
ZGQgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGNhY2hlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDk5NAorICAg
ICAgICAKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBuZXcgQWNjZXNzaWJpbGl0eU9iamVjdCBjYWNo
ZSBzZWFyY2ggQVBJIGFuZCB0aGUgYWRkaXRpb25hbAorICAgICAgICBmdW5jdGlvbmFsaXR5IGlu
IHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGNsYXNzIHRoYXQgbWFrZXMgQWNjZXNzaWJpbGl0eU9i
amVjdAorICAgICAgICBjYWNoZSBzZWFyY2hpbmcgcG9zc2libGUuCisgICAgICAgIAorICAgICAg
ICBBZGRpdGlvbmFsIHRlc3RzIGZvciBmaW5kaW5nIGZyYW1lcywgbWlzc3BlbGxpbmdzLCBhbmQg
dmlzaXRlZCBsaW5rcyB3aWxsIGJlCisgICAgICAgIGluY2x1ZGVkIGluIGEgc3Vic2VxdWVudCBw
YXRjaC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2JvdW5kcy1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9zZWFyY2gtcHJlZGljYXRlLmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTA2ICBOaWtvbGFzIFpp
bW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIHN2Zy96b29tL3BhZ2Uv
em9vbS1zdmctdGhyb3VnaC1vYmplY3Qtd2l0aC0qLnhodG1sIGFyZSBmbGFreQpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5nZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvYm91bmRzLWZvci1yYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNTU0KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYm91bmRzLWZvci1yYW5nZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgQVhTdHlsZVRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIKIEFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlCiBBWEJv
dW5kc0ZvclJhbmdlCiBBWFN0cmluZ0ZvclJhbmdlCitBWFVJRWxlbWVudHNGb3JTZWFyY2hQcmVk
aWNhdGUKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoge3stMS4wMDAwMDAsIC0xLjAwMDAwMH0s
IHs1OS4wMDAwMDAsIDE4LjAwMDAwMH19CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWFyY2gtcHJlZGljYXRl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwNyBAQAorZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxCitzZWNvbmQgYmxvY2tx
dW90ZSBsZXZlbCAxCitzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZQor
CitzZXJpZiBibHVlIGl0YWxpYyB0ZXh0CisKKworIGNoZWNrYm94CisKKworZmlyc3QgaGVhZGlu
ZyBsZXZlbCAxCisKK3NlY29uZCBoZWFkaW5nIGxldmVsIDEKKworaGVhZGluZyBsZXZlbCAyCisK
K2hlYWRpbmcgbGV2ZWwgMworCitoZWFkaW5nIGxldmVsIDQKKworaGVhZGluZyBsZXZlbCA1CisK
K2hlYWRpbmcgbGV2ZWwgNgorCitsYW5kbWFyaworCitsaW5rCitsaXN0IGl0ZW0KK2xpdmUgcmVn
aW9uCisKK3JhZGlvIGJ1dHRvbgorZmlyc3QgdGFibGUgaGVhZGluZyBsZXZlbCAxCitmaXJzdCB0
YWJsZSBib2R5IGxldmVsIDEKK3NlY29uZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEKK3NlY29uZCB0
YWJsZSBib2R5IGxldmVsIDEKK1RoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBh
Y2Nlc3NpYmxlIGVsZW1lbnRzIGJ5IGtleSBvciB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNU
ZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBmaXJzdCBi
bG9ja3F1b3RlIGxldmVsIDEnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBB
WEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBp
cyAnQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVu
dC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAx
JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVz
dWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNhbnMt
c2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJworUEFTUyByZXN1bHRFbGVtZW50
LnJvbGUgaXMgJ0FYUm9sZTogQVhCdXR0b24nCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAn
QVhSb2xlOiBBWENoZWNrQm94JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTog
QVhDaGVja0JveCcKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGlj
VGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogZmlyc3Qg
YmxvY2txdW90ZSBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTog
QVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQu
cm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2VyaWYgYmx1ZSBpdGFsaWMgdGV4dCcKK1BB
U1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYSW1hZ2UnCitQQVNTIHJlc3VsdEVs
ZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVs
IDEnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNT
IHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBo
ZWFkaW5nIGxldmVsIDInCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhl
YWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDMnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAn
QVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0
cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDQnCitQQVNTIHJlc3VsdEVsZW1l
bnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDUnCitQQVNT
IHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQQVNTIHJlc3VsdEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBoZWFkaW5nIGxl
dmVsIDYnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEhlYWRpbmcnCitQ
QVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVl
OiBzZWNvbmQgaGVhZGluZyBsZXZlbCAxJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FY
Um9sZTogQVhIZWFkaW5nJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogZmlyc3QgaGVhZGluZyBsZXZlbCAxJworUEFTUyByZXN1bHRF
bGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRl
eHQnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBy
ZXN1bHRFbGVtZW50LnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhMYW5kbWFya0Jhbm5lcicKK1BB
U1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYTGluaycKK1BBU1MgcmVzdWx0RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGxpbmsnCitQQVNT
IHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWExpc3QnCitQQVNTIHJlc3VsdEVsZW1l
bnQucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ0F0
dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykgaXMgJ3BvbGl0ZScKK1BBU1MgcmVzdWx0RWxlbWVu
dC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJworUEFTUyByZXN1
bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhSYWRpb0dyb3VwJworUEFTUyByZXN1bHRFbGVt
ZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVs
IDEnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQ
QVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVv
dGUgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAn
CitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZh
bHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMg
J0FYUm9sZTogQVhUYWJsZScKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hp
bGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2Vj
b25kIHRhYmxlIGhlYWRpbmcgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdB
WFJvbGU6IEFYVGFibGUnCitQQVNTIHJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZpcnN0
IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJv
bGU6IEFYVGV4dEZpZWxkJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhH
cm91cCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMg
J0FYVmFsdWU6IHNhbnMtc2VyaWYgYmxhY2sgYm9sZCB0ZXh0IHdpdGggdW5kZXJsaW5lJworUEFT
UyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhMaW5rJworUEFTUyByZXN1bHRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogbGluaycKK1BBU1Mg
cmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0
RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRl
eHQgd2l0aCB1bmRlcmxpbmUnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvc2VhcmNoLXByZWRpY2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NlYXJjaC1wcmVkaWNh
dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzODEgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxibG9ja3F1b3Rl
PmZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwgMTwvYmxvY2txdW90ZT4KKzxibG9ja3F1b3RlPnNlY29u
ZCBibG9ja3F1b3RlIGxldmVsIDE8L2Jsb2NrcXVvdGU+Cis8cCBzdHlsZT0iY29sb3I6YmxhY2s7
IGZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlv
bjp1bmRlcmxpbmU7Ij5zYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRoIHVuZGVybGluZTwv
cD4KKzxwIHN0eWxlPSJjb2xvcjpibHVlOyBmb250LWZhbWlseTpzZXJpZjsgZm9udC1zdHlsZTpp
dGFsaWM7Ij5zZXJpZiBibHVlIGl0YWxpYyB0ZXh0PC9wPgorPGZvcm0+Cis8aW5wdXQgdHlwZT0i
dGV4dCIgLz48YnIgLz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IkNoZWNrYm94IiAv
PiBjaGVja2JveDxiciAvPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgLz4K
KzwvZm9ybT4KKzxpbWcgaWQ9ImltYWdlIiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgLz4KKzxo
MT5maXJzdCBoZWFkaW5nIGxldmVsIDE8L2gxPgorPGgxPnNlY29uZCBoZWFkaW5nIGxldmVsIDE8
L2gxPgorPGgyPmhlYWRpbmcgbGV2ZWwgMjwvaDI+Cis8aDM+aGVhZGluZyBsZXZlbCAzPC9oMz4K
KzxoND5oZWFkaW5nIGxldmVsIDQ8L2g0PgorPGg1PmhlYWRpbmcgbGV2ZWwgNTwvaDU+Cis8aDY+
aGVhZGluZyBsZXZlbCA2PC9oNj4KKzxwIGlkPSJiYW5uZXIiIHJvbGU9ImJhbm5lciI+bGFuZG1h
cms8L3A+Cis8YSBocmVmPSIjaW1hZ2UiPmxpbms8L2E+Cis8b2w+PGxpPmxpc3QgaXRlbTwvbGk+
PC9vbD4KKzxwIGFyaWEtbGl2ZT0icG9saXRlIj5saXZlIHJlZ2lvbjwvcD4KKzx1bCByb2xlPSJy
YWRpb2dyb3VwIj48bGkgcm9sZT0icmFkaW8iPnJhZGlvIGJ1dHRvbjwvbGk+PC91bD4KKzx0YWJs
ZT4KKzx0aGVhZD48dHI+PHRkPmZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMTwvdGQ+PC90cj48
L3RoZWFkPgorPHRib2R5Pjx0cj48dGQ+Zmlyc3QgdGFibGUgYm9keSBsZXZlbCAxPC90ZD48L3Ry
PjwvdGJvZHk+Cis8L3RhYmxlPgorPHRhYmxlPgorPHRoZWFkPjx0cj48dGQ+c2Vjb25kIHRhYmxl
IGhlYWRpbmcgbGV2ZWwgMTwvdGQ+PC90cj48L3RoZWFkPgorPHRib2R5Pjx0cj48dGQ+c2Vjb25k
IHRhYmxlIGJvZHkgbGV2ZWwgMTwvdGQ+PC90cj48L3Rib2R5PgorPC90YWJsZT4KKworPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFj
Y2Vzc2libGUgZWxlbWVudHMgYnkga2V5IG9yIHRleHQuIik7CisgICAgCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYm9keSIpLmZvY3VzKCk7CisgICAgICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciBzdGFydEVs
ZW1lbnQ7CisgICAgICAgIHZhciBpc0RpcmVjdGlvbk5leHQ7CisgICAgICAgIHZhciBzZWFyY2hL
ZXk7CisgICAgICAgIHZhciBzZWFyY2hUZXh0OworICAgICAgICB2YXIgcmVzdWx0RWxlbWVudDsK
KyAgICAgICAgCisgICAgICAgIC8vIEFueSBlbGVtZW50LgorICAgICAgICBzdGFydEVsZW1lbnQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7
CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJB
WEFueVR5cGVTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAg
cmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQp
OworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3Rh
dGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IGZpcnN0IGJsb2NrcXVvdGUgbGV2ZWwgMSciKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIFNhbWUgbGV2ZWwgYmxvY2txdW90ZS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAg
ICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhCbG9j
a3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7Cisg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWEdyb3VwJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBibG9ja3F1b3RlIGxldmVsIDEn
Iik7CisgICAgICAgIAorICAgICAgICAvLyBCbG9ja3F1b3RlLgorICAgICAgICBzdGFydEVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9
ICJBWEJsb2NrcXVvdGVTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Vjb25kIGJsb2NrcXVvdGUgbGV2ZWwgMSci
KTsKKyAgICAgICAgCisgICAgICAgIC8vIEJvbGQgZm9udC4KKyAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAi
QVhCb2xkRm9udFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhH
cm91cCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzYW5zLXNlcmlmIGJsYWNrIGJvbGQgdGV4dCB3aXRo
IHVuZGVybGluZSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEJ1dHRvbi4KKyAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhCdXR0b25TZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
KyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYQnV0dG9uJyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgYm94LgorICAgICAg
ICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAg
IHNlYXJjaEtleSA9ICJBWENoZWNrQm94U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWENoZWNrQm94JyIpOworICAgICAgICAKKyAgICAgICAgLy8gQ29udHJvbC4K
KyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwor
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhDaGVja0JveFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJj
aFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQs
IHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LnJvbGUiLCAiJ0FYUm9sZTogQVhDaGVja0JveCciKTsKKyAgICAgICAgCisgICAgICAgIC8vIERp
ZmZlcmVudCB0eXBlIGVsZW1lbnQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRGlmZmVyZW50VHlw
ZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3Rh
cnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0
JyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhW
YWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8g
Rm9udCBjaGFuZ2UuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENoYW5nZVNlYXJjaEtleSI7
CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBzZXJpZiBibHVlIGl0YWxpYyB0ZXh0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gRm9u
dCBjb2xvciBjaGFuZ2UuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgaXNEaXJlY3Rp
b25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYRm9udENvbG9yQ2hhbmdlU2Vh
cmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1l
bnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVs
ZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAg
ICAvLyBGcmFtZS4KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHNlYXJjaCBrZXkuCisg
ICAgICAgIAorICAgICAgICAvLyBHcmFwaGljLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWEdyYXBo
aWNTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0
YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJjaFRleHQpOworICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYSW1hZ2UnIik7
CisgICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDEuCisgICAgICAgIHN0YXJ0RWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5
ID0gIkFYSGVhZGluZ0xldmVsMVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxs
OworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwg
c2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FY
Um9sZTogQVhIZWFkaW5nJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IGhlYWRpbmcgbGV2ZWwg
MSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwgMi4KKyAgICAgICAgc3Rh
cnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFy
Y2hLZXkgPSAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWEhlYWRpbmcnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCAy
JyIpOworICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCAzLgorICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJj
aEtleSA9ICJBWEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0g
bnVsbDsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hL
ZXksIHNlYXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwg
IidBWFJvbGU6IEFYSGVhZGluZyciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDMn
Iik7CisgICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDQuCisgICAgICAgIHN0YXJ0
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNo
S2V5ID0gIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBu
dWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtl
eSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAi
J0FYUm9sZTogQVhIZWFkaW5nJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5j
aGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGhlYWRpbmcgbGV2ZWwgNCci
KTsKKyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwgNS4KKyAgICAgICAgc3RhcnRF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hL
ZXkgPSAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51
bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5
LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICIn
QVhSb2xlOiBBWEhlYWRpbmcnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogaGVhZGluZyBsZXZlbCA1JyIp
OworICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCA2LgorICAgICAgICBzdGFydEVs
ZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtl
eSA9ICJBWEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVs
bDsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXks
IHNlYXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYSGVhZGluZyciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hp
bGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBoZWFkaW5nIGxldmVsIDYnIik7
CisgICAgICAgIAorICAgICAgICAvLyBTYW1lIGxldmVsIGhlYWRpbmcuCisgICAgICAgIHN0YXJ0
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCg2KTsKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNo
S2V5ID0gIkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQg
PSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJj
aEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUi
LCAiJ0FYUm9sZTogQVhIZWFkaW5nJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVu
dC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29uZCBoZWFkaW5n
IGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nLgorICAgICAgICBzdGFy
dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCk7CisgICAgICAgIGlzRGlyZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJj
aEtleSA9ICJBWEhlYWRpbmdTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsK
KyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNl
YXJjaFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJv
bGU6IEFYSGVhZGluZyciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEn
Iik7CisgICAgICAgIAorICAgICAgICAvLyBJdGFsaWMgZm9udC4KKyAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkg
PSAiQVhJdGFsaWNGb250U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7Cisg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFy
Y2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xl
OiBBWEdyb3VwJyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7
CisgICAgICAgIAorICAgICAgICAvLyBMYW5kbWFyay4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhM
YW5kbWFya1NlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3Vicm9sZSIsICInQVhTdWJy
b2xlOiBBWExhbmRtYXJrQmFubmVyJyIpOworICAgICAgICAKKyAgICAgICAgLy8gTGluay4KKyAg
ICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAg
ICAgICBzZWFyY2hLZXkgPSAiQVhMaW5rU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9
IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNo
S2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIs
ICInQVhSb2xlOiBBWExpbmsnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayciKTsKKyAgICAgICAg
CisgICAgICAgIC8vIExpc3QuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNEaXJl
Y3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGlzdFNlYXJjaEtleSI7
CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBp
c0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhMaXN0JyIpOworICAgICAgICAKKyAg
ICAgICAgLy8gTGl2ZSBSZWdpb24uCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgaXNE
aXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYTGl2ZVJlZ2lvblNl
YXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRF
bGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJ
QUxpdmUnKSIsICIncG9saXRlJyIpOworICAgICAgICAKKyAgICAgICAgLy8gTWlzc3BlbGxlZCB3
b3JkLgorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHRoaXMgc2VhcmNoIGtleS4KKyAgICAgICAg
CisgICAgICAgIC8vIFBsYWluIHRleHQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
aXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYUGxhaW5UZXh0
U2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVs
ZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQn
Iik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBmaXJzdCBibG9ja3F1b3RlIGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBS
YWRpbyBncm91cC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5l
eHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhSYWRpb0dyb3VwU2VhcmNoS2V5IjsK
KyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlz
RGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUo
InJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFJhZGlvR3JvdXAnIik7CisgICAgICAg
IAorICAgICAgICAvLyBTYW1lIHR5cGUgZWxlbWVudC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhT
YW1lVHlwZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91
cCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBzZWNvbmQgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAg
ICAgICAKKyAgICAgICAgLy8gU3RhdGljIHRleHQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAg
ICAgICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYU3Rh
dGljVGV4dFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0
aWNUZXh0JyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogZmlyc3QgYmxvY2txdW90ZSBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAg
ICAgLy8gU3R5bGUgY2hhbmdlLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMik7CisgICAgICAgIGlzRGly
ZWN0aW9uTmV4dCA9IHRydWU7CisgICAgICAgIHNlYXJjaEtleSA9ICJBWFN0eWxlQ2hhbmdlU2Vh
cmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1l
bnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVs
ZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAg
c2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAg
ICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IHNlcmlmIGJsdWUgaXRhbGljIHRleHQnIik7CisgICAgICAgIAorICAgICAg
ICAvLyBTYW1lIGxldmVsIHRhYmxlLgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMTgpOworICAgICAgICBp
c0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNhbWVM
ZXZlbFNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRleHQgPSBudWxsOworICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUo
c3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCk7Cisg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhUYWJsZSci
KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IHNlY29u
ZCB0YWJsZSBoZWFkaW5nIGxldmVsIDEnIik7CisgICAgICAgIAorICAgICAgICAvLyBUYWJsZS4K
KyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwor
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhUYWJsZVNlYXJjaEtleSI7CisgICAgICAgIHNlYXJjaFRl
eHQgPSBudWxsOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVs
ZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNl
YXJjaEtleSwgc2VhcmNoVGV4dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJv
bGUiLCAiJ0FYUm9sZTogQVhUYWJsZSciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IGZpcnN0IHRhYmxlIGhlYWRpbmcgbGV2ZWwgMSciKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFRleHQgZmllbGQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAg
ICAgaXNEaXJlY3Rpb25OZXh0ID0gdHJ1ZTsKKyAgICAgICAgc2VhcmNoS2V5ID0gIkFYVGV4dEZp
ZWxkU2VhcmNoS2V5IjsKKyAgICAgICAgc2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIGlzRGlyZWN0aW9uTmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFRleHRGaWVs
ZCciKTsKKyAgICAgICAgCisgICAgICAgIC8vIFVuZGVybGluZS4KKyAgICAgICAgc3RhcnRFbGVt
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOworICAgICAgICBzZWFyY2hLZXkg
PSAiQVhVbmRlcmxpbmVTZWFyY2hLZXkiOworICAgICAgICBzZWFyY2hUZXh0ID0gbnVsbDsKKyAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCBzZWFyY2hLZXksIHNlYXJj
aFRleHQpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQg
d2l0aCB1bmRlcmxpbmUnIik7CisgICAgICAgIAorICAgICAgICAvLyBVbnZpc2l0ZWQgbGluay4K
KyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICBpc0RpcmVjdGlvbk5leHQgPSB0cnVlOwor
ICAgICAgICBzZWFyY2hLZXkgPSAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IjsKKyAgICAgICAg
c2VhcmNoVGV4dCA9IG51bGw7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGlzRGlyZWN0aW9u
TmV4dCwgc2VhcmNoS2V5LCBzZWFyY2hUZXh0KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWExpbmsnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogbGluayci
KTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2l0ZWQgbGluay4KKyAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSB0aGlzIHNlYXJjaCBrZXkuCisgICAgICAgIAorICAgICAgICAvLyBQcmV2aW91cyB0
ZXh0IHNlYXJjaC4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEwKTsKKyAgICAgICAgaXNEaXJlY3Rpb25O
ZXh0ID0gZmFsc2U7CisgICAgICAgIHNlYXJjaEtleSA9IG51bGw7CisgICAgICAgIHNlYXJjaFRl
eHQgPSAic2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUiOworICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBpc0RpcmVjdGlvbk5leHQsIHNlYXJjaEtleSwgc2VhcmNoVGV4
dCk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhT
dGF0aWNUZXh0JyIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogc2Fucy1zZXJpZiBibGFjayBib2xkIHRleHQgd2l0aCB1bmRlcmxpbmUn
Iik7CisgICAgfQorICAgIAorICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103194</attachid>
            <date>2011-08-07 18:38:22 -0700</date>
            <delta_ts>2011-08-08 08:31:11 -0700</delta_ts>
            <desc>Consistency patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>1685</size>
            <attacher name="Samuel White">samuel.white</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNTc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDgtMDcgIFNhbSBXaGl0
ZSAgPHNhbXVlbC53aGl0ZUByb2NoZXN0ZXIuZWR1PgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0
eSB0byBzZWFyY2ggdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgY2FjaGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTk0CisgICAgICAgIAorICAgICAg
ICBUaGUgdGFibGVMZXZlbCgpIGZ1bmN0aW9uIG5vdyBjb3JyZWN0bHkgcmVwb3J0cyBhIHRhYmxl
IGxldmVsCisgICAgICAgIG9mIDEgd2hlbiBjYWxsZWQgb24gYSB0YWJsZSB0aGF0IGlzbid0IGlu
c2lkZSBhbnkgb3RoZXIgdGFibGUuCisgICAgICAgIFByZXZpb3VzbHksIHRhYmxlTGV2ZWwoKSB3
b3VsZCByZXBvcnQgMCB3aGljaCBpc24ndCBjb25zaXN0ZW50CisgICAgICAgIHdpdGggdGhlIGhl
YWRpbmdMZXZlbCgpIGFuZCBibG9ja3F1b3RlTGV2ZWwoKSBmdW5jdGlvbnMuIDAKKyAgICAgICAg
c2hvdWxkIG9ubHkgYmUgcmV0dXJuZWQgd2hlbiBhIGxldmVsIGZ1bmN0aW9uIGlzIGNhbGxlZCBv
biBhbgorICAgICAgICBvYmplY3Qgb2YgdGhlIHdyb25nIHR5cGUuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRh
YmxlTGV2ZWwpOgorCiAyMDExLTA4LTA3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdh
bGlhLmNvbT4KIAogICAgICAgICBEaXN0cmlidXRpb24gZml4IGZvciBHVEsrLgpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cAkocmV2aXNpb24gOTI1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MCw3ICs0NTAsNyBAQCB1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd0NvdW50KCkKIGludCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OnRhYmxlTGV2ZWwoKSBjb25zdAogewogICAgIGludCBsZXZlbCA9IDA7Ci0gICAgZm9yIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBwYXJlbnRPYmplY3QoKTsgb2JqOyBvYmogPSBvYmot
PnBhcmVudE9iamVjdCgpKSB7CisgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1fcmVuZGVyZXIpOyBvYmo7IG9iaiA9IG9iai0+
cGFyZW50T2JqZWN0KCkpIHsKICAgICAgICAgaWYgKG9iai0+aXNBY2Nlc3NpYmlsaXR5VGFibGUo
KSkKICAgICAgICAgICAgICsrbGV2ZWw7CiAgICAgfQo=
</data>
<flag name="review"
          id="98701"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>