<?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>115069</bug_id>
          
          <creation_ts>2013-04-23 17:42:36 -0700</creation_ts>
          <short_desc>AX: MathML multiscripts not exposed in Accessibility</short_desc>
          <delta_ts>2013-06-04 01:48:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>117184</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbarton</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jdiggs</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>880200</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-04-23 17:42:36 -0700</bug_when>
    <thetext>Multiscripts allow you to have pre and post (sub and superscript) objects. And any number of them

http://www.w3.org/TR/REC-MathML/chap3_4.html#sec3.4.7

Like

 &lt;mmultiscripts&gt;
      &lt;mi&gt; F &lt;/mi&gt;
      &lt;mn&gt; 1 &lt;/mn&gt;
      &lt;none/&gt;
      &lt;mprescripts/&gt;
      &lt;mn&gt; 0 &lt;/mn&gt;
&lt;/mmultiscripts&gt;

These do NOT render correctly in WebKit yet, but we can make them accessible!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880201</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-04-23 17:43:00 -0700</bug_when>
    <thetext>The best plan seems to be to return an array of dictionaries that specify the sub/superscript object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880202</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-04-23 17:43:08 -0700</bug_when>
    <thetext>rdar://13687511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880335</commentid>
    <comment_count>3</comment_count>
      <attachid>199389</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-04-23 23:02:12 -0700</bug_when>
    <thetext>Created attachment 199389
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880338</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-04-23 23:15:43 -0700</bug_when>
    <thetext>Adding Tim to help with review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884311</commentid>
    <comment_count>5</comment_count>
      <attachid>199389</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-03 13:42:00 -0700</bug_when>
    <thetext>Comment on attachment 199389
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3729
&gt; +            AccessibilityObject* axChild = axObjectCache()-&gt;getOrCreate(child);

I&apos;m a bit unclear on how this doesn&apos;t go ahead and search tons of irrelevant nodes after the first time it finds an mprescripts.

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1490
&gt; +static NSString *_convertMathMultiscriptPairsToString(NSArray *pairs)

Drop the leading underscore, we don&apos;t do that.

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1497
&gt; +        index++;

This is fine but could use enumerateObjectsUsingBlock instead of manually keeping track of the index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885047</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-05-06 09:13:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 199389 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199389&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3729
&gt; &gt; +            AccessibilityObject* axChild = axObjectCache()-&gt;getOrCreate(child);
&gt; 
&gt; I&apos;m a bit unclear on how this doesn&apos;t go ahead and search tons of irrelevant nodes after the first time it finds an mprescripts.
&gt; 

After it finds the prescript, at that point we want to add the rest of the (first-level children) as accessibility objects (as long as their math elements). 

This is essentially what we do for every dom/render object in the tree anyway, so it&apos;s no different than the rest of the AX structure in this case

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1490
&gt; &gt; +static NSString *_convertMathMultiscriptPairsToString(NSArray *pairs)
&gt; 
&gt; Drop the leading underscore, we don&apos;t do that.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:1497
&gt; &gt; +        index++;
&gt; 
&gt; This is fine but could use enumerateObjectsUsingBlock instead of manually keeping track of the index.

Will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885606</commentid>
    <comment_count>7</comment_count>
      <attachid>200871</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-05-06 22:17:25 -0700</bug_when>
    <thetext>Created attachment 200871
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885610</commentid>
    <comment_count>8</comment_count>
      <attachid>200871</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 22:30:10 -0700</bug_when>
    <thetext>Comment on attachment 200871
patch

Attachment 200871 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/281312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885614</commentid>
    <comment_count>9</comment_count>
      <attachid>200873</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-05-06 22:48:43 -0700</bug_when>
    <thetext>Created attachment 200873
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885617</commentid>
    <comment_count>10</comment_count>
      <attachid>200873</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 23:15:05 -0700</bug_when>
    <thetext>Comment on attachment 200873
patch

Attachment 200873 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/328251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885618</commentid>
    <comment_count>11</comment_count>
      <attachid>200875</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-05-06 23:25:01 -0700</bug_when>
    <thetext>Created attachment 200875
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885621</commentid>
    <comment_count>12</comment_count>
      <attachid>200875</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 23:32:03 -0700</bug_when>
    <thetext>Comment on attachment 200875
patch

Attachment 200875 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/325273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885628</commentid>
    <comment_count>13</comment_count>
      <attachid>200875</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-07 00:06:23 -0700</bug_when>
    <thetext>Comment on attachment 200875
patch

Attachment 200875 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/431251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885766</commentid>
    <comment_count>14</comment_count>
      <attachid>200913</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-05-07 09:16:24 -0700</bug_when>
    <thetext>Created attachment 200913
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896124</commentid>
    <comment_count>15</comment_count>
      <attachid>200913</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-06-01 13:32:36 -0700</bug_when>
    <thetext>Comment on attachment 200913
patch

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

ok

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3774
&gt; +                postscriptPair.first = postscriptPair.second = 0;

We don&apos;t do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896574</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-06-03 12:35:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/151123</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199389</attachid>
            <date>2013-04-23 23:02:12 -0700</date>
            <delta_ts>2013-05-06 22:17:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32829</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA0LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBtdWx0
aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0aCBtdWx0aXNjcmlwdCB0YWdzIGFsbG93
IGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHByZXNjcmlwdHMgYW5kIHBvc3RzY3JpcHRzCisg
ICAgICAgIGFyb3VuZCBhIGJhc2Ugb2JqZWN0LiAKKworICAgICAgICBUaGlzIE1hdGhNTCB0YWcg
Y3VycmVudGx5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHJlbmRlciB0cmVlLCBidXQgdGhhdCBk
b2Vzbid0IG5lZWQgdG8gCisgICAgICAgIHN0b3AgaXQgZnJvbSBiZWluZyBleHBvc2VkIHRocm91
Z2ggYWNjZXNzaWJpbGl0eSwgYXMgYSBiYXNlIG9iamVjdCB3aXRoIGFuIGFycmF5IG9mIHBvc3Rz
Y3JpcHRzCisgICAgICAgIGFuZCBhbiBhcnJheSBvZiBwcmVzY3JpcHRzLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0KToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0lnbm9yZWRFbGVt
ZW50V2l0aGluTWF0aFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bU1hdGhTdXBlcnNjcmlwdEtleV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c10pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0
aE92ZXJPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eU1hdGhUeXBlXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoY29u
dmVydE1hdGhQYWlyc1RvTlNBcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzXSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
TWF0aFByZXNjcmlwdFBhaXJzXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2Ny
aXB0S2V5XSk6CisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmluOgorCiAyMDEzLTA0LTIzICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsIHRoZSBjb3Jy
ZWN0IHN1cGVyY2xhc3MgaW4gUmVuZGVyU2xpZGVyOjpsYXlvdXQoKS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZp
c2lvbiAxNDg3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzkxLDcgKzc5MSw4IEBACiAgICAgdmlydHVh
bCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKICAgICAvLyBSb290IGNvbXBvbmVudHMuCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgeyByZXR1cm4gMDsgfQpA
QCAtODE0LDYgKzgxNSwxMSBAQAogICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBpbnQgbWF0aExp
bmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgCisgICAgLy8gTXVsdGlzY3Jp
cHRzIGNvbXBvbmVudHMuCisgICAgdHlwZWRlZiBWZWN0b3I8cGFpcjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+ID4gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dFBhaXJzOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0
aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRz
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIHsgfQorCiAjaWYgSEFWRShBQ0NF
U1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAJKHJldmlzaW9uIDE0ODcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MjIs
NiArMzUyMiwxMSBAQAogICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1h
dGhNTE5hbWVzOjptaVRhZyk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdAoreworICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgp
LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptbXVsdGlzY3JpcHRzVGFnKTsKK30KKyAgICAKIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFibGUoKSBjb25zdAogewogICAg
IHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdGFibGVU
YWcpOwpAQCAtMzU2MCw3ICszNTY1LDcgQEAKICAgICAgICAgaWYgKGlzTWF0aEZyYWN0aW9uKCkg
fHwgaXNNYXRoRmVuY2VkKCkgfHwgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSB8fCBpc01h
dGhSb3coKQogICAgICAgICAgICAgfHwgaXNNYXRoVW5kZXJPdmVyKCkgfHwgaXNNYXRoUm9vdCgp
IHx8IGlzTWF0aFRleHQoKSB8fCBpc01hdGhOdW1iZXIoKQogICAgICAgICAgICAgfHwgaXNNYXRo
T3BlcmF0b3IoKSB8fCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgfHwgaXNNYXRoU2VwYXJhdG9yT3Bl
cmF0b3IoKQotICAgICAgICAgICAgfHwgaXNNYXRoSWRlbnRpZmllcigpIHx8IGlzTWF0aFRhYmxl
KCkgfHwgaXNNYXRoVGFibGVSb3coKSB8fCBpc01hdGhUYWJsZUNlbGwoKSkKKyAgICAgICAgICAg
IHx8IGlzTWF0aElkZW50aWZpZXIoKSB8fCBpc01hdGhUYWJsZSgpIHx8IGlzTWF0aFRhYmxlUm93
KCkgfHwgaXNNYXRoVGFibGVDZWxsKCkgfHwgaXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzY1Myw3
ICszNjU4LDcgQEAKIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bWF0aEJhc2VPYmplY3QoKQogewotICAgIGlmICghaXNNYXRoU3Vic2NyaXB0U3VwZXJz
Y3JpcHQoKSAmJiAhaXNNYXRoVW5kZXJPdmVyKCkpCisgICAgaWYgKCFpc01hdGhTdWJzY3JpcHRT
dXBlcnNjcmlwdCgpICYmICFpc01hdGhVbmRlck92ZXIoKSAmJiAhaXNNYXRoTXVsdGlzY3JpcHQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKQEAgLTM3MTEsNyArMzcxNiw2NyBAQAog
ICAgIAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmNsb3NlQXR0cik7CiB9
CisgICAgCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhQcmVzY3JpcHRzKEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcHJlc2NyaXB0cykKK3sKKyAgICBpZiAo
IWlzTWF0aE11bHRpc2NyaXB0KCkgfHwgIW5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGJvb2wgZm91bmRQcmVzY3JpcHQgPSBmYWxzZTsKKyAgICBwYWlyPEFjY2Vzc2liaWxpdHlP
YmplY3QqLCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gcHJlc2NyaXB0UGFpcjsKKyAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gbm9kZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChmb3VuZFByZXNjcmlwdCkgeworICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhDaGlsZCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoY2hpbGQpOworICAgICAgICAgICAgaWYgKGF4Q2hpbGQgJiYgYXhDaGlsZC0+aXNNYXRo
RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcmVzY3JpcHRQYWlyLmZpcnN0KQor
ICAgICAgICAgICAgICAgICAgICBwcmVzY3JpcHRQYWlyLmZpcnN0ID0gYXhDaGlsZDsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJlc2NyaXB0UGFpci5zZWNv
bmQgPSBheENoaWxkOworICAgICAgICAgICAgICAgICAgICBwcmVzY3JpcHRzLmFwcGVuZChwcmVz
Y3JpcHRQYWlyKTsKKyAgICAgICAgICAgICAgICAgICAgcHJlc2NyaXB0UGFpci5maXJzdCA9IHBy
ZXNjcmlwdFBhaXIuc2Vjb25kID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1wcmVz
Y3JpcHRzVGFnKSkKKyAgICAgICAgICAgIGZvdW5kUHJlc2NyaXB0ID0gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgLy8gSGFuZGxlIHRoZSBvZGQgbnVtYmVyIG9mIHByZSBzY3JpcHRzIGNhc2UuCisg
ICAgaWYgKHByZXNjcmlwdFBhaXIuZmlyc3QpCisgICAgICAgIHByZXNjcmlwdHMuYXBwZW5kKHBy
ZXNjcmlwdFBhaXIpOworfQogCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhQ
b3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHBvc3RzY3JpcHRz
KQoreworICAgIGlmICghaXNNYXRoTXVsdGlzY3JpcHQoKSB8fCAhbm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBJbiBNdWx0aXNjcmlwdHMsIHRoZSBwb3N0LXNjcmlwdCBlbGVtZW50
cyBzdGFydCBhZnRlciB0aGUgZmlyc3QgZWxlbWVudCAod2hpY2ggaXMgdGhlIGJhc2UpCisgICAg
Ly8gYW5kIGNvbnRpbnVlIHVudGlsIGEgPG1wcmVzY3JpcHRzPiB0YWcgaXMgZm91bmQKKyAgICBw
YWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gcG9zdHNjcmlw
dFBhaXI7CisgICAgYm9vbCBmb3VuZEJhc2VFbGVtZW50ID0gZmFsc2U7CisgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1wcmVzY3JpcHRzVGFnKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4Q2hpbGQgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNoaWxk
KTsKKyAgICAgICAgaWYgKGF4Q2hpbGQgJiYgYXhDaGlsZC0+aXNNYXRoRWxlbWVudCgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWZvdW5kQmFzZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgZm91bmRC
YXNlRWxlbWVudCA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmICghcG9zdHNjcmlwdFBhaXIu
Zmlyc3QpCisgICAgICAgICAgICAgICAgcG9zdHNjcmlwdFBhaXIuZmlyc3QgPSBheENoaWxkOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcG9zdHNjcmlwdFBhaXIuc2Vjb25k
ID0gYXhDaGlsZDsKKyAgICAgICAgICAgICAgICBwb3N0c2NyaXB0cy5hcHBlbmQocG9zdHNjcmlw
dFBhaXIpOworICAgICAgICAgICAgICAgIHBvc3RzY3JpcHRQYWlyLmZpcnN0ID0gcG9zdHNjcmlw
dFBhaXIuc2Vjb25kID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIEhhbmRsZSB0aGUgb2RkIG51bWJlciBvZiBwb3N0IHNjcmlwdHMgY2FzZS4KKyAgICBpZiAo
cG9zdHNjcmlwdFBhaXIuZmlyc3QpCisgICAgICAgIHBvc3RzY3JpcHRzLmFwcGVuZChwb3N0c2Ny
aXB0UGFpcik7Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoTGluZVRo
aWNrbmVzcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6
bGluZXRoaWNrbmVzc0F0dHIpLnRvSW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNp
b24gMTQ4NzExKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw2ICsyOTksNyBAQAogICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhU
YWJsZVJvdygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdDsKICAgICAKICAg
ICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBtYXRoQmFzZU9iamVjdCgpOwpAQCAtMzI0LDYgKzMyNSwxMCBAQAogICAgIHZpcnR1YWwgU3Ry
aW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG1hdGhM
aW5lVGhpY2tuZXNzKCkgY29uc3Q7CiAKKyAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4K
KyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdFBhaXJzJik7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmls
aXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKTsKKyAgICAKICAgICBib29sIGlzSWdub3JlZEVsZW1l
bnRXaXRoaW5NYXRoVHJlZSgpIGNvbnN0OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDE0ODcxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcyLDYgKzIwNzIsNDAgQEAKICAgICByZXR1cm4gbV9v
YmplY3QtPm1hdGhPdmVyT2JqZWN0KCkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKS0+d3Jh
cHBlcigpIDogMDsKIH0KIAorLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRo
U3Vic2NyaXB0S2V5Cit7CisgICAgcmV0dXJuIEAiQVhNU3Vic2NyaXB0T2JqZWN0IjsKK30KKwor
LSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXkKK3sK
KyAgICByZXR1cm4gQCJBWE1TdXBlcnNjcmlwdE9iamVjdCI7Cit9CisKKy0gKE5TQXJyYXkgKilh
Y2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzCit7CisgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFj
Y2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4g
W3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnNdOworfQorCistIChOU0FycmF5
ICopYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRzCit7CisgICAgaWYgKCFbc2VsZiBfcHJlcGFy
ZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1
cm4gW3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlyc107Cit9CisKKy0gKE5TQXJy
YXkgKilhY2Nlc3NpYmlsaXR5TWF0aE92ZXJPYmplY3QKK3sKKyAgICBpZiAoIVtzZWxmIF9wcmVw
YXJlQWNjZXNzaWJpbGl0eUNhbGxdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJl
dHVybiBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKSA/IG1fb2JqZWN0LT5tYXRoT3Zlck9iamVj
dCgpLT53cmFwcGVyKCkgOiAwOworfQorCiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlNYXRo
RmVuY2VkT3BlblN0cmluZwogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pCkBAIC0yMTQyLDYgKzIxNzYsOCBAQAogICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRo
U2VwYXJhdG9yT3BlcmF0b3IiOwogICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aE9wZXJhdG9y
KCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRvciI7CisgICAgICAgIGlmICht
X29iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKKyAgICAgICAgICAgIHJldHVybiBAIkFYTWF0
aE11bHRpc2NyaXB0IjsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG5pbDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oCShyZXZpc2lvbiAxNDg3MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTAgQEAKIC0gKENHUGF0aFJl
Ziljb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2U6KFdlYkNvcmU6OlBhdGggJilwYXRoOwogLSAoQ0dQ
b2ludCljb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOihXZWJDb3JlOjpGbG9hdFBvaW50ICYpcG9p
bnQ7CiAKKy8vIE1hdGggcmVsYXRlZCBmdW5jdGlvbnMKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmls
aXR5TWF0aFBvc3RzY3JpcHRQYWlyczsKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFBy
ZXNjcmlwdFBhaXJzOworCiBAZW5kCiAKICNlbmRpZiAvLyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbQkocmV2aXNpb24gMTQ4NzExKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw2ICs3NywyMiBAQAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKK3N0YXRpYyBOU0FycmF5ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWly
cyYgcGFpcnMsIE5TU3RyaW5nICpzdWJzY3JpcHRLZXksIE5TU3RyaW5nICpzdXBlcnNjcmlwdEtl
eSkKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBwYWlycy5zaXplKCk7CisgICAgTlNNdXRhYmxl
QXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Omxlbmd0aF07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKnBhaXJEaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeV07CisgICAgICAgIHBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2li
aWxpdHlPYmplY3QqPiBwYWlyID0gcGFpcnNbaV07CisgICAgICAgIGlmIChwYWlyLmZpcnN0ICYm
IHBhaXIuZmlyc3QtPndyYXBwZXIoKSkKKyAgICAgICAgICAgIFtwYWlyRGljdGlvbmFyeSBzZXRP
YmplY3Q6cGFpci5maXJzdC0+d3JhcHBlcigpIGZvcktleTpzdWJzY3JpcHRLZXldOworICAgICAg
ICBpZiAocGFpci5zZWNvbmQgJiYgcGFpci5zZWNvbmQtPndyYXBwZXIoKSkKKyAgICAgICAgICAg
IFtwYWlyRGljdGlvbmFyeSBzZXRPYmplY3Q6cGFpci5zZWNvbmQtPndyYXBwZXIoKSBmb3JLZXk6
c3VwZXJzY3JpcHRLZXldOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnBhaXJEaWN0aW9uYXJ5
XTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5OworfQorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlCiAKIC0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0
eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3QKQEAgLTI5Miw2ICszMDgsMzIg
QEAKICAgICByZXR1cm4gQ0dQb2ludFplcm87CiB9CiAKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJp
bGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYXRm
b3JtTWF0aFN1cGVyc2NyaXB0S2V5Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG5pbDsgICAgCit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFBvc3Rz
Y3JpcHRQYWlycworeworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRQYWlycyBwYWlyczsKKyAgICBtX29iamVjdC0+bWF0aFBvc3RzY3JpcHRzKHBh
aXJzKTsKKyAgICByZXR1cm4gY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShwYWlycywgW3NlbGYg
YWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleV0sIFtzZWxmIGFjY2Vzc2liaWxp
dHlQbGF0Zm9ybU1hdGhTdXBlcnNjcmlwdEtleV0pOworfQorCistIChOU0FycmF5ICopYWNjZXNz
aWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlycworeworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWlyczsKKyAgICBtX29iamVjdC0+bWF0
aFByZXNjcmlwdHMocGFpcnMpOworICAgIHJldHVybiBjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5
KHBhaXJzLCBbc2VsZiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSwgW3Nl
bGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5XSk7Cit9CisKIC8vIFRo
aXMgaXMgc2V0IGJ5IERSVCB3aGVuIGl0IHdhbnRzIHRvIGxpc3RlbiBmb3Igbm90aWZpY2F0aW9u
cy4KIHN0YXRpYyBCT09MIGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOwog
KyAodm9pZClhY2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczooQk9PTCly
ZXBvc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZp
c2lvbiAxNDg3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcyLDYgKzM3
Miw4IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRlIEAi
QVhNYXRoRmVuY2VkT3BlbiIKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3Nl
QXR0cmlidXRlIEAiQVhNYXRoRmVuY2VkQ2xvc2UiCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1h
dGhMaW5lVGhpY2tuZXNzQXR0cmlidXRlIEAiQVhNYXRoTGluZVRoaWNrbmVzcyIKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdHNBdHRyaWJ1dGUgQCJBWE1hdGhQcmVzY3JpcHRz
IgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdHNBdHRyaWJ1dGUgQCJBWE1h
dGhQb3N0c2NyaXB0cyIKIAogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyCiAKQEAgLTEwNDIsNiArMTA0NCwxMCBAQAogICAgIH0gZWxzZSBpZiAobV9vYmplY3Qt
PmlzTWF0aEZlbmNlZCgpKSB7CiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV07CiAgICAgICAgIFthZGRpdGlvbmFsIGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkQ2xvc2VBdHRyaWJ1dGVdOworICAgIH0g
ZWxzZSBpZiAobV9vYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0KCkpIHsKKyAgICAgICAgW2FkZGl0
aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXTsKKyAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRzQXR0
cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1h
dGhQb3N0c2NyaXB0c0F0dHJpYnV0ZV07CiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVjdC0+
c3VwcG9ydHNQYXRoKCkpCkBAIC0xODU1LDYgKzE4NjEsOCBAQAogICAgICAgICAgICAgcmV0dXJu
IEAiQVhNYXRoU2VwYXJhdG9yT3BlcmF0b3IiOwogICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0
aE9wZXJhdG9yKCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRvciI7CisgICAg
ICAgIGlmIChtX29iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKKyAgICAgICAgICAgIHJldHVy
biBAIkFYTWF0aE11bHRpc2NyaXB0IjsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5p
c01lZGlhVGltZWxpbmUoKSkKQEAgLTI3NDAsNiArMjc0OCwxMCBAQAogICAgICAgICAgICAgcmV0
dXJuIG1fb2JqZWN0LT5tYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKTsKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoTGluZVRoaWNrbmVz
c0F0dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnRl
Z2VyOm1fb2JqZWN0LT5tYXRoTGluZVRoaWNrbmVzcygpXTsKKyAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdHNBdHRy
aWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNj
cmlwdFBhaXJzXTsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c0F0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1
cm4gW3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlyc107CiAgICAgfQogICAgIAog
ICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIGZvciB0ZXN0aW5nCkBA
IC0yNzczLDYgKzI3ODUsMTYgQEAKICAgICByZXR1cm4gbmlsOwogfQogCistIChOU1N0cmluZyAq
KWFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXkKK3sKKyAgICByZXR1cm4gTlNB
Y2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZTsKK30KKworLSAoTlNTdHJpbmcgKilh
Y2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXkKK3sKKyAgICByZXR1cm4gTlNB
Y2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlOworfQorCiAtIChpZClhY2Nlc3Np
YmlsaXR5Rm9jdXNlZFVJRWxlbWVudAogewogICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFj
a2luZ1N0b3JlXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4JKHJldmlzaW9uIDE0
ODcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsOCBAQAogbXRhYmxlIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudAogbXRyIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudAogbXRkIGludGVy
ZmFjZU5hbWU9TWF0aE1MRWxlbWVudAorbW11bHRpc2NyaXB0cyBpbnRlcmZhY2VOYW1lPU1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQKK21wcmVzY3JpcHRzIGludGVyZmFjZU5hbWU9TWF0aE1M
RWxlbWVudAogCiAjaWYgMCAvLyBDdXJlbnRseSBvbmx5IGZvciBNYXRoTUxOYW1lcyB1c2VkIGJ5
IEhUTUxUcmVlQnVpbGRlci4KIG1zCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDkwMTEpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0w
NC0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFY
OiBNYXRoTUwgbXVsdGlzY3JpcHRzIG5vdCBleHBvc2VkIGluIEFjY2Vzc2liaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTA2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0
bWw6IEFkZGVkLgorCiAyMDEzLTA0LTIzICBNaWhhaSBUaWNhICA8bWl0aWNhQGFkb2JlLmNvbT4K
IAogICAgICAgICBBZGQgcGxhdGZvcm0gc3VwcG9ydCBmb3IgLXdlYmtpdC1iYWNrZ3JvdW5kLWJs
ZW5kLW1vZGUgdG8gQ0cgY29udGV4dCB3aXRoIGJhY2tncm91bmQgY29sb3IKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorQSAxIDIgIAorQSAx
IDIgMyAgCitBIDQgNSAgCitBIDQgNSA2ICAKK0EgMSAyIDMgNCA1IDYgIAorQQorVGhpcyB0ZXN0
cyBjaGVja3MgdGhhdCBtbXVsdGlzY3JpcHQgdGFncyB3aWxsIGNyZWF0ZSB0aGUgY29ycmVjdCBh
Y2Nlc3NpYmlsaXR5IG1hdGggaGllcmFyY2h5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBtc2NyaXB0LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgbXNjcmlw
dC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aE11bHRpc2NyaXB0JworCitDaGVjayBtdWx0
aXNjcmlwdCB3aXRoIG9uZSBwb3N0LXNjcmlwdCBwYWlyCitQb3N0c2NyaXB0czoKKwkwLiBBWE1h
dGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBB
WE1hdGhOdW1iZXIKKworUHJlc2NyaXB0czoKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoIG9k
ZCBudW1iZXIgb2YgcG9zdC1zY3JpcHQgcGFpcnMKK1Bvc3RzY3JpcHRzOgorCTAuIEFYTWF0aFN1
cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0
aE51bWJlcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVzY3JpcHRz
OgorCisKK0NoZWNrIG11bHRpc2NyaXB0IHdpdGggYSBwcmVzY3JpcHQgcGFpcgorUG9zdHNjcmlw
dHM6CisKK1ByZXNjcmlwdHM6CisJMC4gQVhNYXRoU3VwZXJzY3JpcHQgPSBBWE1hdGhJZGVudGlm
aWVyCisJMC4gQVhNYXRoU3Vic2NyaXB0ID0gQVhNYXRoTnVtYmVyCisKKworQ2hlY2sgbXVsdGlz
Y3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHByZS1zY3JpcHQgcGFpcnMKK1Bvc3RzY3JpcHRzOgor
CitQcmVzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgor
CTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9
IEFYTWF0aE51bWJlcgorCisKK0NoZWNrIG11bHRpc2NyaXB0IHdpdGggcHJlIGFuZCBwb3N0IHNj
cmlwdCBwYWlycy4KK1Bvc3RzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRo
SWRlbnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCTEuIEFYTWF0
aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVy
c2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51
bWJlcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCisKK0NoZWNrIG11bHRp
c2NyaXB0IHdpdGggbm8gcHJlc2NyaXB0IG9yIHBvc3RzY3JpcHQgcGFpcnMuCitQb3N0c2NyaXB0
czoKKworUHJlc2NyaXB0czoKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11
bHRpc2NyaXB0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKzwhRE9DVFlQ
RSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0
aCBvbmUgcG9zdC1zY3JpcHQgcGFpciAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0MSI+Cis8bW11bHRp
c2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtbj4gMSA8L21uPgorICA8bWk+IDIgPC9taT4K
KzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0aD4KKworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIHR3byBw
b3N0LXNjcmlwdCBwYWlycywgb25lIHdpdGggYW4gb2RkIG51bWJlciAtLT4KKzxtYXRoIGlkPSJt
c2NyaXB0MiI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtbj4gMSA8L21u
PgorICA8bWk+IDIgPC9taT4KKyAgPG1uPiAzIDwvbW4+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21h
dGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0aCBvbmUgcHJlLXNjcmlwdCBwYWlyIC0tPgorPG1h
dGggaWQ9Im1zY3JpcHQzIj4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1w
cmVzY3JpcHRzLz4KKyAgPG1uPiA0IDwvbW4+CisgIDxtaT4gNSA8L21pPgorPC9tbXVsdGlzY3Jp
cHRzPgorPC9tYXRoPgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGggdHdvIHByZS1zY3JpcHQgcGFp
cnMsIG9uZSB3aXRoIGFuIG9kZCBudW1iZXIgLS0+Cis8bWF0aCBpZD0ibXNjcmlwdDQiPgorPG1t
dWx0aXNjcmlwdHM+CisgIDxtaT4gQSA8L21pPgorICA8bXByZXNjcmlwdHMvPgorICA8bW4+IDQg
PC9tbj4KKyAgPG1pPiA1IDwvbWk+CisgIDxtbj4gNiA8L21uPgorPC9tbXVsdGlzY3JpcHRzPgor
PC9tYXRoPgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGggcG9zdC1zY3JpcHQgYW5kIHByZS1zY3Jp
cHQgcGFpcnMgLS0+Cis8bWF0aCBpZD0ibXNjcmlwdDUiPgorPG1tdWx0aXNjcmlwdHM+CisgIDxt
aT4gQSA8L21pPgorICA8bW4+IDEgPC9tbj4KKyAgPG1pPiAyIDwvbWk+CisgIDxtbj4gMyA8L21u
PgorICA8bXByZXNjcmlwdHMvPgorICA8bW4+IDQgPC9tbj4KKyAgPG1pPiA1IDwvbWk+CisgIDxt
bj4gNiA8L21uPgorPC9tbXVsdGlzY3JpcHRzPgorPC9tYXRoPgorCis8IS0tIG11bHRpc2NyaXB0
IG5vIHBvc3Qtc2NyaXB0IG9yIHByZS1zY3JpcHQgcGFpcnMgLS0+Cis8bWF0aCBpZD0ibXNjcmlw
dDYiPgorPG1tdWx0aXNjcmlwdHM+CisgIDxtaT4gQSA8L21pPgorPC9tbXVsdGlzY3JpcHRzPgor
PC9tYXRoPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIGNoZWNrcyB0aGF0IG1tdWx0aXNjcmlwdCB0YWdzIHdpbGwgY3JlYXRl
IHRoZSBjb3JyZWN0IGFjY2Vzc2liaWxpdHkgbWF0aCBoaWVyYXJjaHkuIikKKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICB2
YXIgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgibXNjcmlwdDEiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgibXNjcmlwdC5yb2xl
IiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgibXNjcmlwdC5zdWJyb2xlIiwg
IidBWFN1YnJvbGU6IEFYTWF0aE11bHRpc2NyaXB0JyIpOworICAgZGVidWcoIlxuQ2hlY2sgbXVs
dGlzY3JpcHQgd2l0aCBvbmUgcG9zdC1zY3JpcHQgcGFpciIpOworICAgZGVidWcoIlBvc3RzY3Jp
cHRzOlxuIiArIG1zY3JpcHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWco
IlByZXNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKwor
ICAgZGVidWcoIlxuQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHBvc3Qtc2Ny
aXB0IHBhaXJzIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJtc2NyaXB0MiIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIGRlYnVnKCJQ
b3N0c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAg
IGRlYnVnKCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlv
bik7CisKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggYSBwcmVzY3JpcHQgcGFp
ciIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgibXNjcmlwdDMiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlw
dHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1Zygi
UHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworCisg
ICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIG9kZCBudW1iZXIgb2YgcHJlLXNjcmlw
dCBwYWlycyIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgibXNjcmlwdDQiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9z
dHNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBk
ZWJ1ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24p
OworCisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIHByZSBhbmQgcG9zdCBzY3Jp
cHQgcGFpcnMuIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJtc2NyaXB0NSIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIGRlYnVnKCJQ
b3N0c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAg
IGRlYnVnKCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlv
bik7CisKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggbm8gcHJlc2NyaXB0IG9y
IHBvc3RzY3JpcHQgcGFpcnMuIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtc2NyaXB0NiIpLmNoaWxkQXRJbmRleCgwKTsKKyAg
IGRlYnVnKCJQb3N0c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0
aW9uKTsKKyAgIGRlYnVnKCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbik7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE0OTAxNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM0IEBACisyMDEzLTA0LTIzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBtdWx0aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4g
QWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIG1ldGhvZHMgdG8gaGVscCBvdXRwdXQgY29tcG9uZW50cyBvZiBtYXRoIG11bHRp
c2NyaXB0cyBmb3IgYWNjZXNzaWJpbGl0eS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAobWF0aFBvc3RzY3JpcHRzRGVzY3Jp
cHRpb25DYWxsYmFjayk6CisgICAgICAgIChtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJh
Y2spOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChfY29udmVydE1hdGhNdWx0aXNj
cmlwdFBhaXJzVG9TdHJpbmcpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0
aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2Ny
aXB0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKFdUUjo6
X2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKToKKyAgICAgICAgKFdUUik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2Ny
aXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNj
cmlwdHNEZXNjcmlwdGlvbik6CisKIDIwMTMtMDQtMjMgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbW92ZSBteXNlbGYgZnJvbSB3
YXRjaGxpc3QuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ4NzExKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzYsNiArMTA3
NiwxOSBAQAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB2YWx1ZVN0cmluZyhBZG9wdCwg
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPnN1cHBvcnRlZEFjdGlvbnMoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsKIH0KKworc3Rh
dGljIEpTVmFsdWVSZWYgbWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb25DYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHZhbHVlU3RyaW5nKEFkb3B0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+bWF0aFBv
c3RzY3JpcHRzRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNv
bnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgbWF0aFBy
ZXNjcmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVTdHJpbmcoQWRv
cHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkp
OworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCB2YWx1ZVN0cmluZy5nZXQo
KSk7Cit9CisKICNlbmRpZgogCiAvLyBJbXBsZW1lbnRhdGlvbgpAQCAtMTI2Miw2ICsxMjc1LDgg
QEAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oSU9TKQogICAgICAgICB7ICJzdXBwb3J0ZWRBY3Rpb25zIiwgc3VwcG9ydGVkQWN0aW9uc0Nh
bGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9u
IiwgbWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb25DYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAg
ICB7ICJtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uIiwgbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlv
bkNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAjZW5kaWYKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAg
ICB9OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAkocmV2aXNpb24gMTQ4NzExKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNiArMjU5LDEwIEBACiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFJldHVybnMgYW4gb3JkZXJl
ZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVtZW50LgogICAgIEpTU3RyaW5n
UmVmIHN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAKKyAgICAvLyBBIGdlbmVyYWwgZGVzY3JpcHRp
b24gb2YgdGhlIGVsZW1lbnRzIG1ha2luZyB1cCBtdWx0aXNjcmlwdCBwcmUvcG9zdCBvYmplY3Rz
LgorICAgIEpTU3RyaW5nUmVmIG1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3Q7Cisg
ICAgSlNTdHJpbmdSZWYgbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0OwogI2VuZGlm
CiAgICAgCiBwcml2YXRlOgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDE0ODcxMSkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIxLDYgKzE1MjEsNDAgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3Rh
dGljIE5TU3RyaW5nICpfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcoTlNBcnJh
eSAqcGFpcnMpCit7CisgICAgTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxlU3Ry
aW5nIHN0cmluZ107CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoTlNEaWN0aW9u
YXJ5ICpwYWlyIGluIHBhaXJzKSB7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBwYWly
KQorICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCJcdCVkLiAlQCA9ICVAXG4iLCBp
bmRleCwga2V5LCBbW3BhaXIgb2JqZWN0Rm9yS2V5OmtleV0gYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdXTsKKyAgICAgICAgaW5kZXgr
KzsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNTdHJpbmdSZWYgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAor
eworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkgKnBhaXJzID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE1hdGhQb3N0c2NyaXB0cyJd
OworICAgIHJldHVybiBbX2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBhaXJz
KSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAor
ICAgIHJldHVybiAwOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpt
YXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUHJlc2NyaXB0cyJdOworICAgIHJldHVybiBbX2NvbnZlcnRN
YXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBhaXJzKSBjcmVhdGVKU1N0cmluZ1JlZl07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCisKIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0ODcxMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MSw2ICsxODEsOCBAQAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCkgeyByZXR1cm4gMDsgfQog
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkgeyB9CiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVk
QWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNj
cmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogI2VuZGlmCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTQ4NzExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMSw2ICsyMzEsOCBAQAogCiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qg
b2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFuIGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gbWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhdGhEZXNjcmlwdGlvbigpIGNvbnN0OwogICAg
IApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAxNDg3MTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsNiArMTY4LDggQEAKIAogICAgIC8vIFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1
cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVtZW50LgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgc3VwcG9ydGVkQWN0aW9uczsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIG1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbjsKIAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgcGF0aERlc2NyaXB0aW9uOwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAxNDg3MTEpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDYgKzE0ODcsMzkgQEAKICAgICByZXR1
cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogfQogCitzdGF0aWMgTlNTdHJpbmcgKl9jb252ZXJ0TWF0
aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhOU0FycmF5ICpwYWlycykKK3sKKyAgICBOU011dGFi
bGVTdHJpbmcgKnJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnBhaXIgaW4gcGFpcnMpIHsKKyAg
ICAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIHBhaXIpCisgICAgICAgICAgICBbcmVzdWx0IGFw
cGVuZEZvcm1hdDpAIlx0JWQuICVAID0gJUBcbiIsIGluZGV4LCBrZXksIFtbcGFpciBvYmplY3RG
b3JLZXk6a2V5XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vi
cm9sZUF0dHJpYnV0ZV1dOworICAgICAgICBpbmRleCsrOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorICAgIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUG9zdHNjcmlwdHMiXTsKKyAgICBy
ZXR1cm4gW19jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRl
SlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkgKnBhaXJzID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWE1hdGhQcmVzY3JpcHRzIl07CisgICAgcmV0dXJuIFtfY29u
dmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0ZUpTU3RyaW5nUmVm
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9Cisg
ICAgCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0
aERlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200871</attachid>
            <date>2013-05-06 22:17:25 -0700</date>
            <delta_ts>2013-05-06 22:48:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33673</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA1LTA2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBtdWx0
aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0aCBtdWx0aXNjcmlwdCB0YWdzIGFsbG93
IGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHByZXNjcmlwdHMgYW5kIHBvc3RzY3JpcHRzCisg
ICAgICAgIGFyb3VuZCBhIGJhc2Ugb2JqZWN0LiAKKworICAgICAgICBUaGlzIE1hdGhNTCB0YWcg
Y3VycmVudGx5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHJlbmRlciB0cmVlLCBidXQgdGhhdCBk
b2Vzbid0IG5lZWQgdG8gCisgICAgICAgIHN0b3AgaXQgZnJvbSBiZWluZyBleHBvc2VkIHRocm91
Z2ggYWNjZXNzaWJpbGl0eSwgYXMgYSBiYXNlIG9iamVjdCB3aXRoIGFuIGFycmF5IG9mIHBvc3Rz
Y3JpcHRzCisgICAgICAgIGFuZCBhbiBhcnJheSBvZiBwcmVzY3JpcHRzLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0KToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0lnbm9yZWRFbGVt
ZW50V2l0aGluTWF0aFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bU1hdGhTdXBlcnNjcmlwdEtleV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c10pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0
aE92ZXJPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eU1hdGhUeXBlXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoY29u
dmVydE1hdGhQYWlyc1RvTlNBcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzXSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
TWF0aFByZXNjcmlwdFBhaXJzXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2Ny
aXB0S2V5XSk6CisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmluOgorCiAyMDEzLTA1LTA2ICBW
w61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW3RleG1hcF0gZHJhdyBjb250ZW50IGlmIGdyYXBoaWNzIGxheWVyIGRpc3BsYXlzIGEgdmlk
ZW8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzkxLDcgKzc5
MSw4IEBACiAgICAgdmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBSb290IGNvbXBvbmVudHMuCiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmplY3QoKSB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0
KCkgeyByZXR1cm4gMDsgfQpAQCAtODE0LDYgKzgxNSwxMSBAQAogICAgIHZpcnR1YWwgU3RyaW5n
IG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
dmlydHVhbCBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
CisgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCisgICAgdHlwZWRlZiBWZWN0b3I8cGFp
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+ID4gQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0
cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIHsg
fQorCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oRUZMKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1MjYsNiArMzUyNiwxMSBAQAogICAgIHJldHVybiBub2RlKCkgJiYgbm9k
ZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZyk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdAoreworICAgIHJldHVy
biBub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptbXVsdGlzY3JpcHRz
VGFnKTsKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNYXRoVGFi
bGUoKSBjb25zdAogewogICAgIHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKE1h
dGhNTE5hbWVzOjptdGFibGVUYWcpOwpAQCAtMzU2NCw3ICszNTY5LDcgQEAKICAgICAgICAgaWYg
KGlzTWF0aEZyYWN0aW9uKCkgfHwgaXNNYXRoRmVuY2VkKCkgfHwgaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSB8fCBpc01hdGhSb3coKQogICAgICAgICAgICAgfHwgaXNNYXRoVW5kZXJPdmVy
KCkgfHwgaXNNYXRoUm9vdCgpIHx8IGlzTWF0aFRleHQoKSB8fCBpc01hdGhOdW1iZXIoKQogICAg
ICAgICAgICAgfHwgaXNNYXRoT3BlcmF0b3IoKSB8fCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgfHwg
aXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKQotICAgICAgICAgICAgfHwgaXNNYXRoSWRlbnRpZmll
cigpIHx8IGlzTWF0aFRhYmxlKCkgfHwgaXNNYXRoVGFibGVSb3coKSB8fCBpc01hdGhUYWJsZUNl
bGwoKSkKKyAgICAgICAgICAgIHx8IGlzTWF0aElkZW50aWZpZXIoKSB8fCBpc01hdGhUYWJsZSgp
IHx8IGlzTWF0aFRhYmxlUm93KCkgfHwgaXNNYXRoVGFibGVDZWxsKCkgfHwgaXNNYXRoTXVsdGlz
Y3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMzY1Nyw3ICszNjYyLDcgQEAKIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aEJhc2VPYmplY3QoKQogewotICAgIGlmICghaXNN
YXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSAmJiAhaXNNYXRoVW5kZXJPdmVyKCkpCisgICAgaWYg
KCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpICYmICFpc01hdGhVbmRlck92ZXIoKSAmJiAh
aXNNYXRoTXVsdGlzY3JpcHQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKQEAgLTM3
MTUsNyArMzcyMCw2NyBAQAogICAgIAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFt
ZXM6OmNsb3NlQXR0cik7CiB9CisgICAgCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcHJlc2Ny
aXB0cykKK3sKKyAgICBpZiAoIWlzTWF0aE11bHRpc2NyaXB0KCkgfHwgIW5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGJvb2wgZm91bmRQcmVzY3JpcHQgPSBmYWxzZTsKKyAgICBw
YWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gcHJlc2NyaXB0
UGFpcjsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZSgpLT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChmb3VuZFByZXNj
cmlwdCkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhDaGlsZCA9IGF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY2hpbGQpOworICAgICAgICAgICAgaWYgKGF4Q2hpbGQg
JiYgYXhDaGlsZC0+aXNNYXRoRWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcmVz
Y3JpcHRQYWlyLmZpcnN0KQorICAgICAgICAgICAgICAgICAgICBwcmVzY3JpcHRQYWlyLmZpcnN0
ID0gYXhDaGlsZDsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJlc2NyaXB0UGFpci5zZWNvbmQgPSBheENoaWxkOworICAgICAgICAgICAgICAgICAgICBwcmVz
Y3JpcHRzLmFwcGVuZChwcmVzY3JpcHRQYWlyKTsKKyAgICAgICAgICAgICAgICAgICAgcHJlc2Ny
aXB0UGFpci5maXJzdCA9IHByZXNjcmlwdFBhaXIuc2Vjb25kID0gMDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPmhhc1RhZ05hbWUo
TWF0aE1MTmFtZXM6Om1wcmVzY3JpcHRzVGFnKSkKKyAgICAgICAgICAgIGZvdW5kUHJlc2NyaXB0
ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLy8gSGFuZGxlIHRoZSBvZGQgbnVtYmVyIG9mIHBy
ZSBzY3JpcHRzIGNhc2UuCisgICAgaWYgKHByZXNjcmlwdFBhaXIuZmlyc3QpCisgICAgICAgIHBy
ZXNjcmlwdHMuYXBwZW5kKHByZXNjcmlwdFBhaXIpOworfQogCit2b2lkIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6Om1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcnMmIHBvc3RzY3JpcHRzKQoreworICAgIGlmICghaXNNYXRoTXVsdGlzY3JpcHQoKSB8fCAh
bm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJbiBNdWx0aXNjcmlwdHMsIHRoZSBw
b3N0LXNjcmlwdCBlbGVtZW50cyBzdGFydCBhZnRlciB0aGUgZmlyc3QgZWxlbWVudCAod2hpY2gg
aXMgdGhlIGJhc2UpCisgICAgLy8gYW5kIGNvbnRpbnVlIHVudGlsIGEgPG1wcmVzY3JpcHRzPiB0
YWcgaXMgZm91bmQKKyAgICBwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4gcG9zdHNjcmlwdFBhaXI7CisgICAgYm9vbCBmb3VuZEJhc2VFbGVtZW50ID0gZmFs
c2U7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGQtPmhhc1Rh
Z05hbWUoTWF0aE1MTmFtZXM6Om1wcmVzY3JpcHRzVGFnKSkKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2hpbGQgPSBheE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKGNoaWxkKTsKKyAgICAgICAgaWYgKGF4Q2hpbGQgJiYgYXhDaGlsZC0+aXNN
YXRoRWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoIWZvdW5kQmFzZUVsZW1lbnQpCisgICAg
ICAgICAgICAgICAgZm91bmRCYXNlRWxlbWVudCA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlm
ICghcG9zdHNjcmlwdFBhaXIuZmlyc3QpCisgICAgICAgICAgICAgICAgcG9zdHNjcmlwdFBhaXIu
Zmlyc3QgPSBheENoaWxkOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcG9z
dHNjcmlwdFBhaXIuc2Vjb25kID0gYXhDaGlsZDsKKyAgICAgICAgICAgICAgICBwb3N0c2NyaXB0
cy5hcHBlbmQocG9zdHNjcmlwdFBhaXIpOworICAgICAgICAgICAgICAgIHBvc3RzY3JpcHRQYWly
LmZpcnN0ID0gcG9zdHNjcmlwdFBhaXIuc2Vjb25kID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIEhhbmRsZSB0aGUgb2RkIG51bWJlciBvZiBwb3N0IHNjcmlw
dHMgY2FzZS4KKyAgICBpZiAocG9zdHNjcmlwdFBhaXIuZmlyc3QpCisgICAgICAgIHBvc3RzY3Jp
cHRzLmFwcGVuZChwb3N0c2NyaXB0UGFpcik7Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjptYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEF0dHJp
YnV0ZShNYXRoTUxOYW1lczo6bGluZXRoaWNrbmVzc0F0dHIpLnRvSW50KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAkocmV2aXNpb24gMTQ5NjAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw2
ICsyOTksNyBAQAogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01h
dGhUYWJsZUNlbGwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQo
KSBjb25zdDsKICAgICAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCiAgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpOwpAQCAtMzI0LDYgKzMyNSwxMCBA
QAogICAgIHZpcnR1YWwgU3RyaW5nIG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0OwogICAg
IHZpcnR1YWwgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3Q7CiAKKyAgICAvLyBNdWx0aXNj
cmlwdHMgY29tcG9uZW50cy4KKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNz
aWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJik7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0
c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKTsKKyAgICAKICAgICBi
b29sIGlzSWdub3JlZEVsZW1lbnRXaXRoaW5NYXRoVHJlZSgpIGNvbnN0OwogI2VuZGlmCiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDE0
OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgzLDYgKzIwODMsNDAg
QEAKICAgICByZXR1cm4gbV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCkgPyBtX29iamVjdC0+bWF0
aE92ZXJPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKIH0KIAorLSAoTlNTdHJpbmcgKilhY2Nlc3Np
YmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5Cit7CisgICAgcmV0dXJuIEAiQVhNU3Vic2Ny
aXB0T2JqZWN0IjsKK30KKworLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRo
U3VwZXJzY3JpcHRLZXkKK3sKKyAgICByZXR1cm4gQCJBWE1TdXBlcnNjcmlwdE9iamVjdCI7Cit9
CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzCit7CisgICAgaWYg
KCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAKKyAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnNd
OworfQorCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRzCit7CisgICAg
aWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAKKyAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWly
c107Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aE92ZXJPYmplY3QKK3sKKyAg
ICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIHJldHVybiBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKSA/IG1fb2Jq
ZWN0LT5tYXRoT3Zlck9iamVjdCgpLT53cmFwcGVyKCkgOiAwOworfQorCiAtIChOU1N0cmluZyAq
KWFjY2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlblN0cmluZwogewogICAgIGlmICghW3NlbGYgX3By
ZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCkBAIC0yMTUzLDYgKzIxODcsOCBAQAogICAgICAgICAg
ICAgcmV0dXJuIEAiQVhNYXRoU2VwYXJhdG9yT3BlcmF0b3IiOwogICAgICAgICBpZiAobV9vYmpl
Y3QtPmlzTWF0aE9wZXJhdG9yKCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRv
ciI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTWF0aE11bHRpc2NyaXB0IjsKICAgICB9CiAgICAgCiAgICAgcmV0dXJu
IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oCShyZXZp
c2lvbiAxNDk2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEs
MTAgQEAKIC0gKENHUGF0aFJlZiljb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2U6KFdlYkNvcmU6OlBh
dGggJilwYXRoOwogLSAoQ0dQb2ludCljb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOihXZWJDb3Jl
OjpGbG9hdFBvaW50ICYpcG9pbnQ7CiAKKy8vIE1hdGggcmVsYXRlZCBmdW5jdGlvbnMKKy0gKE5T
QXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRQYWlyczsKKy0gKE5TQXJyYXkgKilh
Y2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdFBhaXJzOworCiBAZW5kCiAKICNlbmRpZiAvLyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQkocmV2aXNpb24gMTQ5NjAwKQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywyMiBAQAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKK3N0YXRpYyBOU0FycmF5ICpjb252ZXJ0TWF0
aFBhaXJzVG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRQYWlycyYgcGFpcnMsIE5TU3RyaW5nICpzdWJzY3JpcHRLZXksIE5TU3Ry
aW5nICpzdXBlcnNjcmlwdEtleSkKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBwYWlycy5zaXpl
KCk7CisgICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5Omxlbmd0aF07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhaXJEaWN0aW9uYXJ5ID0gW05T
TXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisgICAgICAgIHBhaXI8QWNjZXNzaWJpbGl0
eU9iamVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPiBwYWlyID0gcGFpcnNbaV07CisgICAgICAg
IGlmIChwYWlyLmZpcnN0ICYmIHBhaXIuZmlyc3QtPndyYXBwZXIoKSAmJiAhcGFpci5maXJzdC0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgW3BhaXJEaWN0aW9uYXJ5IHNl
dE9iamVjdDpwYWlyLmZpcnN0LT53cmFwcGVyKCkgZm9yS2V5OnN1YnNjcmlwdEtleV07CisgICAg
ICAgIGlmIChwYWlyLnNlY29uZCAmJiBwYWlyLnNlY29uZC0+d3JhcHBlcigpICYmICFwYWlyLnNl
Y29uZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgW3BhaXJEaWN0aW9u
YXJ5IHNldE9iamVjdDpwYWlyLnNlY29uZC0+d3JhcHBlcigpIGZvcktleTpzdXBlcnNjcmlwdEtl
eV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6cGFpckRpY3Rpb25hcnldOworICAgIH0KKyAg
ICByZXR1cm4gYXJyYXk7Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UKIAogLSAoaWQpaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0OihBY2Nl
c3NpYmlsaXR5T2JqZWN0KilheE9iamVjdApAQCAtMzQyLDYgKzM1OCwzMiBAQAogICAgIH0KIH0K
IAorLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNT
dHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXkKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmlsOyAgICAKK30KKworLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzCit7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzIHBhaXJzOworICAgIG1f
b2JqZWN0LT5tYXRoUG9zdHNjcmlwdHMocGFpcnMpOworICAgIHJldHVybiBjb252ZXJ0TWF0aFBh
aXJzVG9OU0FycmF5KHBhaXJzLCBbc2VsZiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2Ny
aXB0S2V5XSwgW3NlbGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5XSk7
Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdFBhaXJzCit7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJz
IHBhaXJzOworICAgIG1fb2JqZWN0LT5tYXRoUHJlc2NyaXB0cyhwYWlycyk7CisgICAgcmV0dXJu
IGNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkocGFpcnMsIFtzZWxmIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybU1hdGhTdWJzY3JpcHRLZXldLCBbc2VsZiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vw
ZXJzY3JpcHRLZXldKTsKK30KKwogLy8gVGhpcyBpcyBzZXQgYnkgRFJUIHdoZW4gaXQgd2FudHMg
dG8gbGlzdGVuIGZvciBub3RpZmljYXRpb25zLgogc3RhdGljIEJPT0wgYWNjZXNzaWJpbGl0eVNo
b3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM7CiArICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRTaG91bGRS
ZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzIsNiArMzcyLDggQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
TWF0aEZlbmNlZE9wZW5BdHRyaWJ1dGUgQCJBWE1hdGhGZW5jZWRPcGVuIgogI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlNYXRoRmVuY2VkQ2xvc2VBdHRyaWJ1dGUgQCJBWE1hdGhGZW5jZWRDbG9zZSIK
ICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aExpbmVUaGlja25lc3NBdHRyaWJ1dGUgQCJBWE1h
dGhMaW5lVGhpY2tuZXNzIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c0F0
dHJpYnV0ZSBAIkFYTWF0aFByZXNjcmlwdHMiCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhQ
b3N0c2NyaXB0c0F0dHJpYnV0ZSBAIkFYTWF0aFBvc3RzY3JpcHRzIgogCiBAaW1wbGVtZW50YXRp
b24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKIApAQCAtMTA0Miw2ICsxMDQ0LDEwIEBA
CiAgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpIHsKICAgICAgICAgW2Fk
ZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRl
XTsKICAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5j
ZWRDbG9zZUF0dHJpYnV0ZV07CisgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRoTXVsdGlz
Y3JpcHQoKSkgeworICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TWF0aEJhc2VBdHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5TWF0aFByZXNjcmlwdHNBdHRyaWJ1dGVdOworICAgICAgICBbYWRkaXRpb25hbCBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzQXR0cmlidXRlXTsKICAgICB9
CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c1BhdGgoKSkKQEAgLTE4NTUsNiArMTg2
MSw4IEBACiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhTZXBhcmF0b3JPcGVyYXRvciI7CiAg
ICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoT3BlcmF0b3IoKSkKICAgICAgICAgICAgIHJldHVy
biBAIkFYTWF0aE9wZXJhdG9yIjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhNdWx0aXNj
cmlwdCgpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoTXVsdGlzY3JpcHQiOwogICAgIH0K
ICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzTWVkaWFUaW1lbGluZSgpKQpAQCAtMjcwOCw2ICsy
NzE2LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gbV9vYmplY3QtPm1hdGhGZW5jZWRDbG9zZVN0
cmluZygpOwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU1hdGhMaW5lVGhpY2tuZXNzQXR0cmlidXRlXSkKICAgICAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6bV9vYmplY3QtPm1hdGhMaW5lVGhpY2tuZXNz
KCldOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eU1hdGhQb3N0c2NyaXB0c0F0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1cm4gW3Nl
bGYgYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnNdOworICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRzQXR0
cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiBbc2VsZiBhY2Nlc3NpYmlsaXR5TWF0aFByZXNj
cmlwdFBhaXJzXTsKICAgICB9CiAgICAgCiAgICAgLy8gdGhpcyBpcyB1c2VkIG9ubHkgYnkgRHVt
cFJlbmRlclRyZWUgZm9yIHRlc3RpbmcKQEAgLTI3NDEsNiArMjc1MywxNiBAQAogICAgIHJldHVy
biBuaWw7CiB9CiAKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNj
cmlwdEtleQoreworICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlNYXRoU3Vic2NyaXB0QXR0cmli
dXRlOworfQorCistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdXBlcnNj
cmlwdEtleQoreworICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlNYXRoU3VwZXJzY3JpcHRBdHRy
aWJ1dGU7Cit9CisKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50CiB7CiAgICAg
aWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQpJbmRleDogU291cmNlL1dlYkNv
cmUvbWF0aG1sL21hdGh0YWdzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGht
bC9tYXRodGFncy5pbgkocmV2aXNpb24gMTQ5NjAwKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1s
L21hdGh0YWdzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw5IEBACiBtdGFibGUgaW50
ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtdHIgaW50ZXJmYWNlTmFt
ZT1NYXRoTUxFbGVtZW50CiBtdGQgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50CittbXVsdGlz
Y3JpcHRzIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXByZXNj
cmlwdHMgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50Citub25lIGludGVyZmFjZU5hbWU9TWF0
aE1MRWxlbWVudAogCiAjaWYgMCAvLyBDdXJlbnRseSBvbmx5IGZvciBNYXRoTUxOYW1lcyB1c2Vk
IGJ5IEhUTUxUcmVlQnVpbGRlci4KIG1zCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMy0wNS0wNiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBNYXRoTUwgbXVsdGlz
Y3JpcHRzIG5vdCBleHBvc2VkIGluIEFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTA2OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZXRob2RzIHRvIGhlbHAgb3V0cHV0IGNv
bXBvbmVudHMgb2YgbWF0aCBtdWx0aXNjcmlwdHMgZm9yIGFjY2Vzc2liaWxpdHkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAg
KG1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2spOgorICAgICAgICAobWF0aFByZXNj
cmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAg
ICAoX2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0
c2NyaXB0c0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW06CisgICAgICAgIChXVFI6Ol9jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmlu
Zyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0
c0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0
aFByZXNjcmlwdHNEZXNjcmlwdGlvbik6CisKIDIwMTMtMDUtMDYgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkIHR3byBmaWxlcyBJIG5lZ2xlY3RlZCB0byBj
b21taXQgaW4gcjE0OTU4OS4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4
MSw4IEBACiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50KSB7IHJldHVybiAwOyB9CiB2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKSB7IH0KIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdXBwb3J0ZWRBY3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1
cm4gMDsgfQorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMxLDYgKzIzMSw4IEBACiAKICAgICAvLyBSZXR1cm5zIGFuIG9yZGVyZWQgbGlzdCBvZiBzdXBw
b3J0ZWQgYWN0aW9ucyBmb3IgYW4gZWxlbWVudC4KICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gc3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBtYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGF0aERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlz
aW9uIDE0OTYwMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2
ICsxNjgsOCBAQAogCiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVk
IGFjdGlvbnMgZm9yIGFuIGVsZW1lbnQuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBzdXBwb3J0ZWRBY3Rpb25zOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWF0
aFBvc3RzY3JpcHRzRGVzY3JpcHRpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBwYXRoRGVzY3JpcHRpb247CiAgICAgCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDE0OTYwMCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0ODcsNiArMTQ4NywzNyBAQAogICAgIHJldHVybiAwOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiB9CiAKK3N0YXRpYyBOU1N0cmluZyAqX2NvbnZlcnRNYXRoTXVsdGlz
Y3JpcHRQYWlyc1RvU3RyaW5nKE5TQXJyYXkgKnBhaXJzKQoreworICAgIF9fYmxvY2sgTlNNdXRh
YmxlU3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgW3BhaXJz
IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgcGFpciwgTlNVSW50ZWdlciBpbmRleCwg
Qk9PTCAqc3RvcCkgeworICAgICAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gcGFpcikKKyAgICAg
ICAgICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiXHQlZC4gJUAgPSAlQFxuIiwgaW5kZXgsIGtl
eSwgW1twYWlyIG9iamVjdEZvcktleTprZXldIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXV07CisgICAgfV07CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKyAgICAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSAqcGFpcnMgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWF0aFBvc3RzY3JpcHRzIl07CisgICAg
cmV0dXJuIFtfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUHJlc2NyaXB0cyJdOworICAgIHJldHVybiBbX2Nv
bnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBhaXJzKSBjcmVhdGVKU1N0cmluZ1Jl
Zl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQor
ICAgIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBh
dGhEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzYsNiArMTA3NiwxOSBAQAogICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB2YWx1ZVN0cmluZyhBZG9wdCwgdG9BWEVsZW1lbnQo
dGhpc09iamVjdCktPnN1cHBvcnRlZEFjdGlvbnMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsKIH0KKworc3RhdGljIEpTVmFsdWVS
ZWYgbWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVl
U3RyaW5nKEFkb3B0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+bWF0aFBvc3RzY3JpcHRzRGVz
Y3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHZhbHVl
U3RyaW5nLmdldCgpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgbWF0aFByZXNjcmlwdHNEZXNj
cmlwdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVTdHJpbmcoQWRvcHQsIHRvQVhFbGVt
ZW50KHRoaXNPYmplY3QpLT5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkpOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCB2YWx1ZVN0cmluZy5nZXQoKSk7Cit9CisKICNl
bmRpZgogCiAvLyBJbXBsZW1lbnRhdGlvbgpAQCAtMTI2Miw2ICsxMjc1LDggQEAKICNlbmRpZiAv
LyBQTEFURk9STShJT1MpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAg
ICAgICB7ICJzdXBwb3J0ZWRBY3Rpb25zIiwgc3VwcG9ydGVkQWN0aW9uc0NhbGxiYWNrLCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCisgICAgICAgIHsgIm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uIiwgbWF0aFBvc3Rz
Y3JpcHRzRGVzY3JpcHRpb25DYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJtYXRoUHJl
c2NyaXB0c0Rlc2NyaXB0aW9uIiwgbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrLCAw
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAjZW5kaWYKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ5NjAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNiArMjU5LDEwIEBACiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1
cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVtZW50LgogICAgIEpTU3RyaW5nUmVmIHN1cHBvcnRl
ZEFjdGlvbnMoKTsKKyAgICAKKyAgICAvLyBBIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgdGhlIGVs
ZW1lbnRzIG1ha2luZyB1cCBtdWx0aXNjcmlwdCBwcmUvcG9zdCBvYmplY3RzLgorICAgIEpTU3Ry
aW5nUmVmIG1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgSlNTdHJpbmdS
ZWYgbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0OwogI2VuZGlmCiAgICAgCiBwcml2
YXRlOgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDE0OTYwMCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIxLDYgKzE1MjEsNDAgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIE5TU3RyaW5n
ICpjb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhOU0FycmF5ICpwYWlycykKK3sK
KyAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnBhaXIgaW4g
cGFpcnMpIHsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIHBhaXIpCisgICAgICAgICAg
ICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIlx0JWQuICVAID0gJUBcbiIsIGluZGV4LCBrZXksIFtb
cGFpciBvYmplY3RGb3JLZXk6a2V5XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV1dOworICAgICAgICBpbmRleCsrOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSAqcGFpcnMgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWF0aFBvc3RzY3JpcHRzIl07CisgICAgcmV0dXJu
IFtjb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRlSlNTdHJp
bmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSAqcGFpcnMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTWF0aFByZXNjcmlwdHMiXTsKKyAgICByZXR1cm4gW2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQ
YWlyc1RvU3RyaW5nKHBhaXJzKSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCisKIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDk2MDApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0wNiAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBNYXRoTUwgbXVs
dGlzY3JpcHRzIG5vdCBleHBvc2VkIGluIEFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTA2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvbWF0aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0bWw6IEFkZGVkLgor
CiAyMDEzLTA1LTA2ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAg
IFtDU1MgRXhjbHVzaW9uc10gc2hhcGUtaW5zaWRlIHJvdW5kZWQgcmVjdGFuZ2xlIHRlc3RzIGZh
aWwgd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMgZGlzYWJsZWQKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0
aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorQSAxIDIgIAorQSAxIDIgMyAgCitB
IDQgNSAgCitBIDQgNSA2ICAKK0EgMSAyIDMgNCA1IDYgIAorQSAgCitBIDEgMyA1IDYKK1RoaXMg
dGVzdHMgY2hlY2tzIHRoYXQgbW11bHRpc2NyaXB0IHRhZ3Mgd2lsbCBjcmVhdGUgdGhlIGNvcnJl
Y3QgYWNjZXNzaWJpbGl0eSBtYXRoIGhpZXJhcmNoeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgbXNjcmlwdC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIG1z
Y3JpcHQuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhNdWx0aXNjcmlwdCcKKworQ2hlY2sg
bXVsdGlzY3JpcHQgd2l0aCBvbmUgcG9zdC1zY3JpcHQgcGFpcgorUG9zdHNjcmlwdHM6CisJMC4g
QVhNYXRoU3VwZXJzY3JpcHQgPSBBWE1hdGhJZGVudGlmaWVyCisJMC4gQVhNYXRoU3Vic2NyaXB0
ID0gQVhNYXRoTnVtYmVyCisKK1ByZXNjcmlwdHM6CisKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0
aCBvZGQgbnVtYmVyIG9mIHBvc3Qtc2NyaXB0IHBhaXJzCitQb3N0c2NyaXB0czoKKwkwLiBBWE1h
dGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBB
WE1hdGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworUHJlc2Ny
aXB0czoKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoIGEgcHJlc2NyaXB0IHBhaXIKK1Bvc3Rz
Y3JpcHRzOgorCitQcmVzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRl
bnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCisKK0NoZWNrIG11
bHRpc2NyaXB0IHdpdGggb2RkIG51bWJlciBvZiBwcmUtc2NyaXB0IHBhaXJzCitQb3N0c2NyaXB0
czoKKworUHJlc2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZp
ZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3Jp
cHQgPSBBWE1hdGhOdW1iZXIKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoIHByZSBhbmQgcG9z
dCBzY3JpcHQgcGFpcnMuCitQb3N0c2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFY
TWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBB
WE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworUHJlc2NyaXB0czoKKwkwLiBBWE1hdGhT
dXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1h
dGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworCitDaGVjayBt
dWx0aXNjcmlwdCB3aXRoIG5vIHByZXNjcmlwdCBvciBwb3N0c2NyaXB0IHBhaXJzLgorUG9zdHNj
cmlwdHM6CisKK1ByZXNjcmlwdHM6CisKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCAnbm9uZScg
dGFncy4KK1Bvc3RzY3JpcHRzOgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgor
CTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVzY3JpcHRzOgorCTAuIEFY
TWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9
IEFYTWF0aE51bWJlcgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
bWF0aG1sLW11bHRpc2NyaXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtbXVsdGlz
Y3JpcHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIG9u
ZSBwb3N0LXNjcmlwdCBwYWlyIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQxIj4KKzxtbXVsdGlzY3Jp
cHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1uPiAxIDwvbW4+CisgIDxtaT4gMiA8L21pPgorPC9t
bXVsdGlzY3JpcHRzPgorPC9tYXRoPgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGggdHdvIHBvc3Qt
c2NyaXB0IHBhaXJzLCBvbmUgd2l0aCBhbiBvZGQgbnVtYmVyIC0tPgorPG1hdGggaWQ9Im1zY3Jp
cHQyIj4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1uPiAxIDwvbW4+Cisg
IDxtaT4gMiA8L21pPgorICA8bW4+IDMgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0aD4K
KworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIG9uZSBwcmUtc2NyaXB0IHBhaXIgLS0+Cis8bWF0aCBp
ZD0ibXNjcmlwdDMiPgorPG1tdWx0aXNjcmlwdHM+CisgIDxtaT4gQSA8L21pPgorICA8bXByZXNj
cmlwdHMvPgorICA8bW4+IDQgPC9tbj4KKyAgPG1pPiA1IDwvbWk+Cis8L21tdWx0aXNjcmlwdHM+
Cis8L21hdGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0aCB0d28gcHJlLXNjcmlwdCBwYWlycywg
b25lIHdpdGggYW4gb2RkIG51bWJlciAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NCI+Cis8bW11bHRp
c2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtcHJlc2NyaXB0cy8+CisgIDxtbj4gNCA8L21u
PgorICA8bWk+IDUgPC9taT4KKyAgPG1uPiA2IDwvbW4+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21h
dGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0aCBwb3N0LXNjcmlwdCBhbmQgcHJlLXNjcmlwdCBw
YWlycyAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NSI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBB
IDwvbWk+CisgIDxtbj4gMSA8L21uPgorICA8bWk+IDIgPC9taT4KKyAgPG1uPiAzIDwvbW4+Cisg
IDxtcHJlc2NyaXB0cy8+CisgIDxtbj4gNCA8L21uPgorICA8bWk+IDUgPC9taT4KKyAgPG1uPiA2
IDwvbW4+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21hdGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgbm8g
cG9zdC1zY3JpcHQgb3IgcHJlLXNjcmlwdCBwYWlycyAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NiI+
Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21h
dGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgdXNpbmcgPG5vbmU+IHRhZyAtLT4KKzxtYXRoIGlkPSJt
c2NyaXB0NyI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtbj4gMSA8L21u
PgorICA8bm9uZS8+CisgIDxtbj4gMyA8L21uPgorICA8bXByZXNjcmlwdHMvPgorICA8bm9uZS8+
CisgIDxtaT4gNSA8L21pPgorICA8bW4+IDYgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0
aD4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyBjaGVja3MgdGhhdCBtbXVsdGlzY3JpcHQgdGFncyB3aWxsIGNyZWF0ZSB0aGUg
Y29ycmVjdCBhY2Nlc3NpYmlsaXR5IG1hdGggaGllcmFyY2h5LiIpCisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgdmFyIG1z
Y3JpcHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1z
Y3JpcHQxIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoIm1zY3JpcHQucm9sZSIsICIn
QVhSb2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxkQmUoIm1zY3JpcHQuc3Vicm9sZSIsICInQVhT
dWJyb2xlOiBBWE1hdGhNdWx0aXNjcmlwdCciKTsKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2Ny
aXB0IHdpdGggb25lIHBvc3Qtc2NyaXB0IHBhaXIiKTsKKyAgIGRlYnVnKCJQb3N0c2NyaXB0czpc
biIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAgIGRlYnVnKCJQcmVz
Y3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik7CisKKyAgIGRl
YnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggb2RkIG51bWJlciBvZiBwb3N0LXNjcmlwdCBw
YWlycyIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibXNjcmlwdDIiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1
ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOwor
CisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIGEgcHJlc2NyaXB0IHBhaXIiKTsK
KyAgIG1zY3JpcHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoIm1zY3JpcHQzIikuY2hpbGRBdEluZGV4KDApOworICAgZGVidWcoIlBvc3RzY3JpcHRzOlxu
IiArIG1zY3JpcHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWcoIlByZXNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKworICAgZGVi
dWcoIlxuQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHByZS1zY3JpcHQgcGFp
cnMiKTsKKyAgIG1zY3JpcHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoIm1zY3JpcHQ0IikuY2hpbGRBdEluZGV4KDApOworICAgZGVidWcoIlBvc3RzY3Jp
cHRzOlxuIiArIG1zY3JpcHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWco
IlByZXNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKwor
ICAgZGVidWcoIlxuQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBwcmUgYW5kIHBvc3Qgc2NyaXB0IHBh
aXJzLiIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibXNjcmlwdDUiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1
ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOwor
CisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIG5vIHByZXNjcmlwdCBvciBwb3N0
c2NyaXB0IHBhaXJzLiIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgibXNjcmlwdDYiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1
ZygiUG9zdHNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7
CisgICBkZWJ1ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3Jp
cHRpb24pOworCisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoICdub25lJyB0YWdz
LiIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgibXNjcmlwdDciKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlw
dHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1Zygi
UHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworfQor
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="222150"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200873</attachid>
            <date>2013-05-06 22:48:43 -0700</date>
            <delta_ts>2013-05-06 23:25:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33658</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTY2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA1LTA2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBtdWx0
aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0aCBtdWx0aXNjcmlwdCB0YWdzIGFsbG93
IGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHByZXNjcmlwdHMgYW5kIHBvc3RzY3JpcHRzCisg
ICAgICAgIGFyb3VuZCBhIGJhc2Ugb2JqZWN0LiAKKworICAgICAgICBUaGlzIE1hdGhNTCB0YWcg
Y3VycmVudGx5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHJlbmRlciB0cmVlLCBidXQgdGhhdCBk
b2Vzbid0IG5lZWQgdG8gCisgICAgICAgIHN0b3AgaXQgZnJvbSBiZWluZyBleHBvc2VkIHRocm91
Z2ggYWNjZXNzaWJpbGl0eSwgYXMgYSBiYXNlIG9iamVjdCB3aXRoIGFuIGFycmF5IG9mIHBvc3Rz
Y3JpcHRzCisgICAgICAgIGFuZCBhbiBhcnJheSBvZiBwcmVzY3JpcHRzLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0KToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0lnbm9yZWRFbGVt
ZW50V2l0aGluTWF0aFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bU1hdGhTdXBlcnNjcmlwdEtleV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c10pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0
aE92ZXJPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eU1hdGhUeXBlXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoY29u
dmVydE1hdGhQYWlyc1RvTlNBcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzXSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
TWF0aFByZXNjcmlwdFBhaXJzXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2Ny
aXB0S2V5XSk6CisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmluOgorCiAyMDEzLTA1LTA2ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT3duUHRyIGluc3Rl
YWQgb2YgZGVsZXRlQWxsVmFsdWVzIGluIEtleWZyYW1lVmFsdWVMaXN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2
aXNpb24gMTQ5NjAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5MSw3ICs3OTEsOCBAQAogICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCiAgICAgLy8gUm9vdCBjb21wb25lbnRzLgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIHsgcmV0dXJuIDA7IH0K
QEAgLTgxNCw2ICs4MTUsMTEgQEAKICAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgaW50IG1hdGhM
aW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIAorICAgIC8vIE11bHRpc2Ny
aXB0cyBjb21wb25lbnRzLgorICAgIHR5cGVkZWYgVmVjdG9yPHBhaXI8QWNjZXNzaWJpbGl0eU9i
amVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPiA+IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRQYWlyczsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdFBhaXJzJikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0
cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0KKwogI2lmIEhBVkUoQUND
RVNTSUJJTElUWSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTI2
LDYgKzM1MjYsMTEgQEAKICAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bWlUYWcpOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUo
KS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW11bHRpc2NyaXB0c1RhZyk7Cit9CisgICAgCiBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFRhYmxlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXRhYmxl
VGFnKTsKQEAgLTM1NjQsNyArMzU2OSw3IEBACiAgICAgICAgIGlmIChpc01hdGhGcmFjdGlvbigp
IHx8IGlzTWF0aEZlbmNlZCgpIHx8IGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgfHwgaXNN
YXRoUm93KCkKICAgICAgICAgICAgIHx8IGlzTWF0aFVuZGVyT3ZlcigpIHx8IGlzTWF0aFJvb3Qo
KSB8fCBpc01hdGhUZXh0KCkgfHwgaXNNYXRoTnVtYmVyKCkKICAgICAgICAgICAgIHx8IGlzTWF0
aE9wZXJhdG9yKCkgfHwgaXNNYXRoRmVuY2VPcGVyYXRvcigpIHx8IGlzTWF0aFNlcGFyYXRvck9w
ZXJhdG9yKCkKLSAgICAgICAgICAgIHx8IGlzTWF0aElkZW50aWZpZXIoKSB8fCBpc01hdGhUYWJs
ZSgpIHx8IGlzTWF0aFRhYmxlUm93KCkgfHwgaXNNYXRoVGFibGVDZWxsKCkpCisgICAgICAgICAg
ICB8fCBpc01hdGhJZGVudGlmaWVyKCkgfHwgaXNNYXRoVGFibGUoKSB8fCBpc01hdGhUYWJsZVJv
dygpIHx8IGlzTWF0aFRhYmxlQ2VsbCgpIHx8IGlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM2NTcs
NyArMzY2Miw3IEBACiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Om1hdGhCYXNlT2JqZWN0KCkKIHsKLSAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVy
c2NyaXB0KCkgJiYgIWlzTWF0aFVuZGVyT3ZlcigpKQorICAgIGlmICghaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSAmJiAhaXNNYXRoVW5kZXJPdmVyKCkgJiYgIWlzTWF0aE11bHRpc2NyaXB0
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CkBAIC0zNzE1LDcgKzM3MjAsNjcgQEAK
ICAgICAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpjbG9zZUF0dHIpOwog
fQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUHJlc2NyaXB0cyhB
Y2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHByZXNjcmlwdHMpCit7CisgICAgaWYg
KCFpc01hdGhNdWx0aXNjcmlwdCgpIHx8ICFub2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBib29sIGZvdW5kUHJlc2NyaXB0ID0gZmFsc2U7CisgICAgcGFpcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+IHByZXNjcmlwdFBhaXI7CisgICAgZm9yIChO
b2RlKiBjaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoZm91bmRQcmVzY3JpcHQpIHsKKyAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2hpbGQgPSBheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKGNoaWxkKTsKKyAgICAgICAgICAgIGlmIChheENoaWxkICYmIGF4Q2hpbGQtPmlzTWF0
aEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGlmICghcHJlc2NyaXB0UGFpci5maXJzdCkK
KyAgICAgICAgICAgICAgICAgICAgcHJlc2NyaXB0UGFpci5maXJzdCA9IGF4Q2hpbGQ7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuc2Vj
b25kID0gYXhDaGlsZDsKKyAgICAgICAgICAgICAgICAgICAgcHJlc2NyaXB0cy5hcHBlbmQocHJl
c2NyaXB0UGFpcik7CisgICAgICAgICAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuZmlyc3QgPSBw
cmVzY3JpcHRQYWlyLnNlY29uZCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptcHJl
c2NyaXB0c1RhZykpCisgICAgICAgICAgICBmb3VuZFByZXNjcmlwdCA9IHRydWU7CisgICAgfQor
ICAgIAorICAgIC8vIEhhbmRsZSB0aGUgb2RkIG51bWJlciBvZiBwcmUgc2NyaXB0cyBjYXNlLgor
ICAgIGlmIChwcmVzY3JpcHRQYWlyLmZpcnN0KQorICAgICAgICBwcmVzY3JpcHRzLmFwcGVuZChw
cmVzY3JpcHRQYWlyKTsKK30KIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRo
UG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJiBwb3N0c2NyaXB0
cykKK3sKKyAgICBpZiAoIWlzTWF0aE11bHRpc2NyaXB0KCkgfHwgIW5vZGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSW4gTXVsdGlzY3JpcHRzLCB0aGUgcG9zdC1zY3JpcHQgZWxlbWVu
dHMgc3RhcnQgYWZ0ZXIgdGhlIGZpcnN0IGVsZW1lbnQgKHdoaWNoIGlzIHRoZSBiYXNlKQorICAg
IC8vIGFuZCBjb250aW51ZSB1bnRpbCBhIDxtcHJlc2NyaXB0cz4gdGFnIGlzIGZvdW5kCisgICAg
cGFpcjxBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+IHBvc3RzY3Jp
cHRQYWlyOworICAgIGJvb2wgZm91bmRCYXNlRWxlbWVudCA9IGZhbHNlOworICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBub2RlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
OjptcHJlc2NyaXB0c1RhZykpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheENoaWxkID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjaGls
ZCk7CisgICAgICAgIGlmIChheENoaWxkICYmIGF4Q2hpbGQtPmlzTWF0aEVsZW1lbnQoKSkgewor
ICAgICAgICAgICAgaWYgKCFmb3VuZEJhc2VFbGVtZW50KQorICAgICAgICAgICAgICAgIGZvdW5k
QmFzZUVsZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIXBvc3RzY3JpcHRQYWly
LmZpcnN0KQorICAgICAgICAgICAgICAgIHBvc3RzY3JpcHRQYWlyLmZpcnN0ID0gYXhDaGlsZDsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHBvc3RzY3JpcHRQYWlyLnNlY29u
ZCA9IGF4Q2hpbGQ7CisgICAgICAgICAgICAgICAgcG9zdHNjcmlwdHMuYXBwZW5kKHBvc3RzY3Jp
cHRQYWlyKTsKKyAgICAgICAgICAgICAgICBwb3N0c2NyaXB0UGFpci5maXJzdCA9IHBvc3RzY3Jp
cHRQYWlyLnNlY29uZCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBIYW5kbGUgdGhlIG9kZCBudW1iZXIgb2YgcG9zdCBzY3JpcHRzIGNhc2UuCisgICAgaWYg
KHBvc3RzY3JpcHRQYWlyLmZpcnN0KQorICAgICAgICBwb3N0c2NyaXB0cy5hcHBlbmQocG9zdHNj
cmlwdFBhaXIpOworfQorCiBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aExpbmVU
aGlja25lc3MoKSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmxpbmV0aGlja25lc3NBdHRyKS50b0ludCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlz
aW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDcgQEAKICAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRo
VGFibGVSb3coKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3Q7CiAgICAgCiAg
ICAgLy8gR2VuZXJpYyBjb21wb25lbnRzLgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogbWF0aEJhc2VPYmplY3QoKTsKQEAgLTMyNCw2ICszMjUsMTAgQEAKICAgICB2aXJ0dWFsIFN0
cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBtYXRo
TGluZVRoaWNrbmVzcygpIGNvbnN0OwogCisgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMu
CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRQYWlycyYpOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJik7CisgICAgCiAgICAgYm9vbCBpc0lnbm9yZWRFbGVt
ZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA4Myw2ICsyMDgzLDQwIEBACiAgICAgcmV0dXJuIG1f
b2JqZWN0LT5tYXRoT3Zlck9iamVjdCgpID8gbV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCktPndy
YXBwZXIoKSA6IDA7CiB9CiAKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0
aFN1YnNjcmlwdEtleQoreworICAgIHJldHVybiBAIkFYTVN1YnNjcmlwdE9iamVjdCI7Cit9CisK
Ky0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5Cit7
CisgICAgcmV0dXJuIEAiQVhNU3VwZXJzY3JpcHRPYmplY3QiOworfQorCistIChOU0FycmF5ICop
YWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0cworeworICAgIGlmICghW3NlbGYgX3ByZXBhcmVB
Y2Nlc3NpYmlsaXR5Q2FsbF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJu
IFtzZWxmIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzXTsKK30KKworLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0cworeworICAgIGlmICghW3NlbGYgX3ByZXBh
cmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0
dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnNdOworfQorCistIChOU0Fy
cmF5ICopYWNjZXNzaWJpbGl0eU1hdGhPdmVyT2JqZWN0Cit7CisgICAgaWYgKCFbc2VsZiBfcHJl
cGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBy
ZXR1cm4gbV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmpl
Y3QoKS0+d3JhcHBlcigpIDogMDsKK30KKwogLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5TWF0
aEZlbmNlZE9wZW5TdHJpbmcKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0
eUNhbGxdKQpAQCAtMjE1Myw2ICsyMTg3LDggQEAKICAgICAgICAgICAgIHJldHVybiBAIkFYTWF0
aFNlcGFyYXRvck9wZXJhdG9yIjsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhPcGVyYXRv
cigpKQogICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoT3BlcmF0b3IiOworICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0KCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1h
dGhNdWx0aXNjcmlwdCI7CiAgICAgfQogICAgIAogICAgIHJldHVybiBuaWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAkocmV2aXNpb24gMTQ5NjAwKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBACiAtIChDR1BhdGhS
ZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihXZWJDb3JlOjpQYXRoICYpcGF0aDsKIC0gKENH
UG9pbnQpY29udmVydFBvaW50VG9TY3JlZW5TcGFjZTooV2ViQ29yZTo6RmxvYXRQb2ludCAmKXBv
aW50OwogCisvLyBNYXRoIHJlbGF0ZWQgZnVuY3Rpb25zCistIChOU0FycmF5ICopYWNjZXNzaWJp
bGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7CistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRQYWlyczsKKwogQGVuZAogCiAjZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UubW0JKHJldmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMjIgQEAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCitzdGF0aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFp
cnMmIHBhaXJzLCBOU1N0cmluZyAqc3Vic2NyaXB0S2V5LCBOU1N0cmluZyAqc3VwZXJzY3JpcHRL
ZXkpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gcGFpcnMuc2l6ZSgpOworICAgIE5TTXV0YWJs
ZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsZW5ndGhd
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpwYWlyRGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnldOworICAgICAgICBwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4gcGFpciA9IHBhaXJzW2ldOworICAgICAgICBpZiAocGFpci5maXJzdCAm
JiBwYWlyLmZpcnN0LT53cmFwcGVyKCkgJiYgIXBhaXIuZmlyc3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKKyAgICAgICAgICAgIFtwYWlyRGljdGlvbmFyeSBzZXRPYmplY3Q6cGFpci5maXJz
dC0+d3JhcHBlcigpIGZvcktleTpzdWJzY3JpcHRLZXldOworICAgICAgICBpZiAocGFpci5zZWNv
bmQgJiYgcGFpci5zZWNvbmQtPndyYXBwZXIoKSAmJiAhcGFpci5zZWNvbmQtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgIFtwYWlyRGljdGlvbmFyeSBzZXRPYmplY3Q6cGFp
ci5zZWNvbmQtPndyYXBwZXIoKSBmb3JLZXk6c3VwZXJzY3JpcHRLZXldOworICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OnBhaXJEaWN0aW9uYXJ5XTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5Owor
fQorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlCiAK
IC0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCop
YXhPYmplY3QKQEAgLTM0Miw2ICszNTgsMzIgQEAKICAgICB9CiB9CiAKKy0gKE5TU3RyaW5nICop
YWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJp
bGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG5pbDsgICAgCit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5
TWF0aFBvc3RzY3JpcHRQYWlycworeworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWlyczsKKyAgICBtX29iamVjdC0+bWF0aFBvc3Rz
Y3JpcHRzKHBhaXJzKTsKKyAgICByZXR1cm4gY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShwYWly
cywgW3NlbGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleV0sIFtzZWxmIGFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdXBlcnNjcmlwdEtleV0pOworfQorCistIChOU0FycmF5
ICopYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlycworeworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWlyczsKKyAgICBtX29i
amVjdC0+bWF0aFByZXNjcmlwdHMocGFpcnMpOworICAgIHJldHVybiBjb252ZXJ0TWF0aFBhaXJz
VG9OU0FycmF5KHBhaXJzLCBbc2VsZiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0
S2V5XSwgW3NlbGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5XSk7Cit9
CisKIC8vIFRoaXMgaXMgc2V0IGJ5IERSVCB3aGVuIGl0IHdhbnRzIHRvIGxpc3RlbiBmb3Igbm90
aWZpY2F0aW9ucy4KIHN0YXRpYyBCT09MIGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmlj
YXRpb25zOwogKyAodm9pZClhY2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9u
czooQk9PTClyZXBvc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzcyLDYgKzM3Miw4IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0
cmlidXRlIEAiQVhNYXRoRmVuY2VkT3BlbiIKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZl
bmNlZENsb3NlQXR0cmlidXRlIEAiQVhNYXRoRmVuY2VkQ2xvc2UiCiAjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eU1hdGhMaW5lVGhpY2tuZXNzQXR0cmlidXRlIEAiQVhNYXRoTGluZVRoaWNrbmVzcyIK
KyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdHNBdHRyaWJ1dGUgQCJBWE1hdGhQ
cmVzY3JpcHRzIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdHNBdHRyaWJ1
dGUgQCJBWE1hdGhQb3N0c2NyaXB0cyIKIAogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyCiAKQEAgLTEwNDIsNiArMTA0NCwxMCBAQAogICAgIH0gZWxzZSBpZiAo
bV9vYmplY3QtPmlzTWF0aEZlbmNlZCgpKSB7CiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV07CiAgICAgICAgIFthZGRp
dGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkQ2xvc2VBdHRyaWJ1dGVd
OworICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0KCkpIHsKKyAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRl
XTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhQcmVz
Y3JpcHRzQXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU1hdGhQb3N0c2NyaXB0c0F0dHJpYnV0ZV07CiAgICAgfQogICAgIAogICAgIGlmICht
X29iamVjdC0+c3VwcG9ydHNQYXRoKCkpCkBAIC0xODU1LDYgKzE4NjEsOCBAQAogICAgICAgICAg
ICAgcmV0dXJuIEAiQVhNYXRoU2VwYXJhdG9yT3BlcmF0b3IiOwogICAgICAgICBpZiAobV9vYmpl
Y3QtPmlzTWF0aE9wZXJhdG9yKCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRv
ciI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTWF0aE11bHRpc2NyaXB0IjsKICAgICB9CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc01lZGlhVGltZWxpbmUoKSkKQEAgLTI3MDgsNiArMjcxNiwxMCBAQAogICAgICAg
ICAgICAgcmV0dXJuIG1fb2JqZWN0LT5tYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKTsKICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoTGlu
ZVRoaWNrbmVzc0F0dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOm1fb2JqZWN0LT5tYXRoTGluZVRoaWNrbmVzcygpXTsKKyAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNj
cmlwdHNBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlN
YXRoUG9zdHNjcmlwdFBhaXJzXTsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c0F0dHJpYnV0ZV0pCisgICAgICAg
ICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlyc107CiAgICAg
fQogICAgIAogICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIGZvciB0
ZXN0aW5nCkBAIC0yNzQxLDYgKzI3NTMsMTYgQEAKICAgICByZXR1cm4gbmlsOwogfQogCistIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXkKK3sKKyAgICBy
ZXR1cm4gTlNBY2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZTsKK30KKworLSAoTlNT
dHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXkKK3sKKyAgICBy
ZXR1cm4gTlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlOworfQorCiAtIChp
ZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudAogewogICAgIGlmICghW3NlbGYgdXBkYXRl
T2JqZWN0QmFja2luZ1N0b3JlXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFn
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4JKHJl
dmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOSBAQAogbXRhYmxlIGludGVyZmFjZU5hbWU9TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudAogbXRyIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudAog
bXRkIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudAorbW11bHRpc2NyaXB0cyBpbnRlcmZhY2VO
YW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21wcmVzY3JpcHRzIGludGVyZmFjZU5h
bWU9TWF0aE1MRWxlbWVudAorbm9uZSBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQKIAogI2lm
IDAgLy8gQ3VyZW50bHkgb25seSBmb3IgTWF0aE1MTmFtZXMgdXNlZCBieSBIVE1MVHJlZUJ1aWxk
ZXIuCiBtcwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMDUtMDYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogTWF0aE1MIG11bHRpc2NyaXB0cyBub3QgZXhwb3Nl
ZCBpbiBBY2Nlc3NpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTUwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgbWV0aG9kcyB0byBoZWxwIG91dHB1dCBjb21wb25lbnRzIG9mIG1hdGgg
bXVsdGlzY3JpcHRzIGZvciBhY2Nlc3NpYmlsaXR5LgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChtYXRoUG9zdHNjcmlwdHNE
ZXNjcmlwdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKG1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb25D
YWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKF9jb252ZXJ0TWF0aE11
bHRpc2NyaXB0UGFpcnNUb1N0cmluZyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlv
bik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRz
RGVzY3JpcHRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAo
V1RSOjpfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3Jp
cHRpb24pOgorCiAyMDEzLTA1LTA2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGRlZCB0d28gZmlsZXMgSSBuZWdsZWN0ZWQgdG8gY29tbWl0IGluIHIxNDk1ODku
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0OTYwMCkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsOCBAQAogUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlckZvckluZGV4KGludCkgeyByZXR1cm4gMDsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkgeyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpt
YXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rl
c2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KIAogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ5NjAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw2ICsyMzEsOCBAQAog
CiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9y
IGFuIGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlv
bnMoKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWF0aFBvc3RzY3JpcHRz
RGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWF0aFBy
ZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBhdGhEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNDk2MDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAKIAogICAg
IC8vIFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBl
bGVtZW50LgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3VwcG9ydGVkQWN0aW9u
czsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1hdGhQb3N0c2NyaXB0c0Rlc2Ny
aXB0aW9uOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aERlc2Ny
aXB0aW9uOwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDg3LDYgKzE0ODcsMzcgQEAKICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
fQogCitzdGF0aWMgTlNTdHJpbmcgKl9jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmlu
ZyhOU0FycmF5ICpwYWlycykKK3sKKyAgICBfX2Jsb2NrIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0
ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIFtwYWlycyBlbnVtZXJhdGVPYmplY3Rz
VXNpbmdCbG9jazpeKGlkIHBhaXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKKyAg
ICAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIHBhaXIpCisgICAgICAgICAgICBbcmVzdWx0IGFw
cGVuZEZvcm1hdDpAIlx0JWxkLiAlQCA9ICVAXG4iLCBpbmRleCwga2V5LCBbW3BhaXIgb2JqZWN0
Rm9yS2V5OmtleV0gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1
YnJvbGVBdHRyaWJ1dGVdXTsKKyAgICB9XTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
ICAgIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
dGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUG9zdHNjcmlwdHMiXTsKKyAgICByZXR1cm4gW19jb252ZXJ0
TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRlSlNTdHJpbmdSZWZdOwor
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3Jp
cHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TQXJyYXkgKnBhaXJzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWE1hdGhQcmVzY3JpcHRzIl07CisgICAgcmV0dXJuIFtfY29udmVydE1hdGhNdWx0aXNj
cmlwdFBhaXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDk2
MDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA3Niw2ICsxMDc2LDE5IEBACiAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHZhbHVlU3RyaW5nKEFkb3B0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+c3Vw
cG9ydGVkQWN0aW9ucygpKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwg
dmFsdWVTdHJpbmcuZ2V0KCkpOwogfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBtYXRoUG9zdHNjcmlw
dHNEZXNjcmlwdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVTdHJpbmcoQWRvcHQsIHRv
QVhFbGVtZW50KHRoaXNPYmplY3QpLT5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdmFsdWVTdHJpbmcuZ2V0KCkpOwor
fQorCitzdGF0aWMgSlNWYWx1ZVJlZiBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiB2YWx1ZVN0cmluZyhBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCkt
Pm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3Ry
aW5nKGNvbnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsKK30KKwogI2VuZGlmCiAKIC8vIEltcGxl
bWVudGF0aW9uCkBAIC0xMjYyLDYgKzEyNzUsOCBAQAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
ICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgICAgIHsgInN1cHBvcnRl
ZEFjdGlvbnMiLCBzdXBwb3J0ZWRBY3Rpb25zQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAibWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24iLCBtYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlv
bkNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRp
b24iLCBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICNlbmRp
ZgogICAgICAgICB7IDAsIDAsIDAsIDAgfQogICAgIH07CkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAxNDk2MDApCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1OSw2ICsyNTksMTAgQEAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJ
T1MpCiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMg
Zm9yIGFuIGVsZW1lbnQuCiAgICAgSlNTdHJpbmdSZWYgc3VwcG9ydGVkQWN0aW9ucygpOworICAg
IAorICAgIC8vIEEgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiB0aGUgZWxlbWVudHMgbWFraW5nIHVw
IG11bHRpc2NyaXB0IHByZS9wb3N0IG9iamVjdHMuCisgICAgSlNTdHJpbmdSZWYgbWF0aFBvc3Rz
Y3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBKU1N0cmluZ1JlZiBtYXRoUHJlc2NyaXB0
c0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYKICAgICAKIHByaXZhdGU6CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQkocmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MjEsNiArMTUyMSw0
MCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKmNvbnZlcnRNYXRoTXVs
dGlzY3JpcHRQYWlyc1RvU3RyaW5nKE5TQXJyYXkgKnBhaXJzKQoreworICAgIE5TTXV0YWJsZVN0
cmluZyAqcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqcGFpciBpbiBwYWlycykgeworICAgICAg
ICBmb3IgKE5TU3RyaW5nICprZXkgaW4gcGFpcikKKyAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5k
Rm9ybWF0OkAiXHQlbGQuICVAID0gJUBcbiIsIGluZGV4LCBrZXksIFtbcGFpciBvYmplY3RGb3JL
ZXk6a2V5XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9s
ZUF0dHJpYnV0ZV1dOworICAgICAgICBpbmRleCsrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9z
dHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNBcnJheSAqcGFpcnMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYTWF0aFBvc3RzY3JpcHRzIl07CisgICAgcmV0dXJuIFtjb252ZXJ0TWF0aE11
bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNTdHJpbmdS
ZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNv
bnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSAqcGFpcnMg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWF0aFByZXNjcmlw
dHMiXTsKKyAgICByZXR1cm4gW2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBh
aXJzKSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IAorICAgIHJldHVybiAwOworfQorCisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Ny
b2xsVG9NYWtlVmlzaWJsZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDk2MDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0wNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBNYXRoTUwgbXVsdGlzY3JpcHRzIG5vdCBl
eHBvc2VkIGluIEFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRp
c2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTA1LTA2ICBI
YW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9u
c10gc2hhcGUtaW5zaWRlIHJvdW5kZWQgcmVjdGFuZ2xlIHRlc3RzIGZhaWwgd2hlbiBzdWJwaXhl
bCBsYXlvdXQgaXMgZGlzYWJsZWQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4MCBAQAorQSAxIDIgIAorQSAxIDIgMyAgCitBIDQgNSAgCitBIDQgNSA2
ICAKK0EgMSAyIDMgNCA1IDYgIAorQSAgCitBIDEgMyA1IDYKK1RoaXMgdGVzdHMgY2hlY2tzIHRo
YXQgbW11bHRpc2NyaXB0IHRhZ3Mgd2lsbCBjcmVhdGUgdGhlIGNvcnJlY3QgYWNjZXNzaWJpbGl0
eSBtYXRoIGhpZXJhcmNoeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bXNjcmlwdC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIG1zY3JpcHQuc3Vicm9sZSBp
cyAnQVhTdWJyb2xlOiBBWE1hdGhNdWx0aXNjcmlwdCcKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0
aCBvbmUgcG9zdC1zY3JpcHQgcGFpcgorUG9zdHNjcmlwdHM6CisJMC4gQVhNYXRoU3VwZXJzY3Jp
cHQgPSBBWE1hdGhJZGVudGlmaWVyCisJMC4gQVhNYXRoU3Vic2NyaXB0ID0gQVhNYXRoTnVtYmVy
CisKK1ByZXNjcmlwdHM6CisKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9m
IHBvc3Qtc2NyaXB0IHBhaXJzCitQb3N0c2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9
IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkx
LiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworUHJlc2NyaXB0czoKKworCitDaGVj
ayBtdWx0aXNjcmlwdCB3aXRoIGEgcHJlc2NyaXB0IHBhaXIKK1Bvc3RzY3JpcHRzOgorCitQcmVz
Y3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTAuIEFY
TWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCisKK0NoZWNrIG11bHRpc2NyaXB0IHdpdGgg
b2RkIG51bWJlciBvZiBwcmUtc2NyaXB0IHBhaXJzCitQb3N0c2NyaXB0czoKKworUHJlc2NyaXB0
czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhT
dWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1i
ZXIKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoIHByZSBhbmQgcG9zdCBzY3JpcHQgcGFpcnMu
CitQb3N0c2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIK
KwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3JpcHQg
PSBBWE1hdGhOdW1iZXIKKworUHJlc2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFY
TWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBB
WE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRo
IG5vIHByZXNjcmlwdCBvciBwb3N0c2NyaXB0IHBhaXJzLgorUG9zdHNjcmlwdHM6CisKK1ByZXNj
cmlwdHM6CisKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCAnbm9uZScgdGFncy4KK1Bvc3RzY3Jp
cHRzOgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCTEuIEFYTWF0aFN1YnNj
cmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0
ID0gQVhNYXRoSWRlbnRpZmllcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2Ny
aXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtbXVsdGlzY3JpcHQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIG9uZSBwb3N0LXNjcmlwdCBw
YWlyIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQxIj4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+IEEg
PC9taT4KKyAgPG1uPiAxIDwvbW4+CisgIDxtaT4gMiA8L21pPgorPC9tbXVsdGlzY3JpcHRzPgor
PC9tYXRoPgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGggdHdvIHBvc3Qtc2NyaXB0IHBhaXJzLCBv
bmUgd2l0aCBhbiBvZGQgbnVtYmVyIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQyIj4KKzxtbXVsdGlz
Y3JpcHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1uPiAxIDwvbW4+CisgIDxtaT4gMiA8L21pPgor
ICA8bW4+IDMgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0aD4KKworPCEtLSBtdWx0aXNj
cmlwdCB3aXRoIG9uZSBwcmUtc2NyaXB0IHBhaXIgLS0+Cis8bWF0aCBpZD0ibXNjcmlwdDMiPgor
PG1tdWx0aXNjcmlwdHM+CisgIDxtaT4gQSA8L21pPgorICA8bXByZXNjcmlwdHMvPgorICA8bW4+
IDQgPC9tbj4KKyAgPG1pPiA1IDwvbWk+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21hdGg+CisKKzwh
LS0gbXVsdGlzY3JpcHQgd2l0aCB0d28gcHJlLXNjcmlwdCBwYWlycywgb25lIHdpdGggYW4gb2Rk
IG51bWJlciAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NCI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1p
PiBBIDwvbWk+CisgIDxtcHJlc2NyaXB0cy8+CisgIDxtbj4gNCA8L21uPgorICA8bWk+IDUgPC9t
aT4KKyAgPG1uPiA2IDwvbW4+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21hdGg+CisKKzwhLS0gbXVs
dGlzY3JpcHQgd2l0aCBwb3N0LXNjcmlwdCBhbmQgcHJlLXNjcmlwdCBwYWlycyAtLT4KKzxtYXRo
IGlkPSJtc2NyaXB0NSI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtbj4g
MSA8L21uPgorICA8bWk+IDIgPC9taT4KKyAgPG1uPiAzIDwvbW4+CisgIDxtcHJlc2NyaXB0cy8+
CisgIDxtbj4gNCA8L21uPgorICA8bWk+IDUgPC9taT4KKyAgPG1uPiA2IDwvbW4+Cis8L21tdWx0
aXNjcmlwdHM+Cis8L21hdGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgbm8gcG9zdC1zY3JpcHQgb3Ig
cHJlLXNjcmlwdCBwYWlycyAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NiI+Cis8bW11bHRpc2NyaXB0
cz4KKyAgPG1pPiBBIDwvbWk+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21hdGg+CisKKzwhLS0gbXVs
dGlzY3JpcHQgdXNpbmcgPG5vbmU+IHRhZyAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NyI+Cis8bW11
bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtbj4gMSA8L21uPgorICA8bm9uZS8+Cisg
IDxtbj4gMyA8L21uPgorICA8bXByZXNjcmlwdHMvPgorICA8bm9uZS8+CisgIDxtaT4gNSA8L21p
PgorICA8bW4+IDYgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0aD4KKworPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBjaGVj
a3MgdGhhdCBtbXVsdGlzY3JpcHQgdGFncyB3aWxsIGNyZWF0ZSB0aGUgY29ycmVjdCBhY2Nlc3Np
YmlsaXR5IG1hdGggaGllcmFyY2h5LiIpCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgdmFyIG1zY3JpcHQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1zY3JpcHQxIikuY2hpbGRB
dEluZGV4KDApOworICAgc2hvdWxkQmUoIm1zY3JpcHQucm9sZSIsICInQVhSb2xlOiBBWEdyb3Vw
JyIpOworICAgc2hvdWxkQmUoIm1zY3JpcHQuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE1hdGhN
dWx0aXNjcmlwdCciKTsKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggb25lIHBv
c3Qtc2NyaXB0IHBhaXIiKTsKKyAgIGRlYnVnKCJQb3N0c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1h
dGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAgIGRlYnVnKCJQcmVzY3JpcHRzOlxuIiArIG1z
Y3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik7CisKKyAgIGRlYnVnKCJcbkNoZWNrIG11
bHRpc2NyaXB0IHdpdGggb2RkIG51bWJlciBvZiBwb3N0LXNjcmlwdCBwYWlycyIpOworICAgbXNj
cmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXNj
cmlwdDIiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlwdHM6XG4iICsgbXNj
cmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1ZygiUHJlc2NyaXB0czpc
biIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworCisgICBkZWJ1ZygiXG5D
aGVjayBtdWx0aXNjcmlwdCB3aXRoIGEgcHJlc2NyaXB0IHBhaXIiKTsKKyAgIG1zY3JpcHQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1zY3JpcHQzIiku
Y2hpbGRBdEluZGV4KDApOworICAgZGVidWcoIlBvc3RzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0
aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWcoIlByZXNjcmlwdHM6XG4iICsgbXNj
cmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKworICAgZGVidWcoIlxuQ2hlY2sgbXVs
dGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHByZS1zY3JpcHQgcGFpcnMiKTsKKyAgIG1zY3Jp
cHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1zY3Jp
cHQ0IikuY2hpbGRBdEluZGV4KDApOworICAgZGVidWcoIlBvc3RzY3JpcHRzOlxuIiArIG1zY3Jp
cHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWcoIlByZXNjcmlwdHM6XG4i
ICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKworICAgZGVidWcoIlxuQ2hl
Y2sgbXVsdGlzY3JpcHQgd2l0aCBwcmUgYW5kIHBvc3Qgc2NyaXB0IHBhaXJzLiIpOworICAgbXNj
cmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXNj
cmlwdDUiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlwdHM6XG4iICsgbXNj
cmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1ZygiUHJlc2NyaXB0czpc
biIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworCisgICBkZWJ1ZygiXG5D
aGVjayBtdWx0aXNjcmlwdCB3aXRoIG5vIHByZXNjcmlwdCBvciBwb3N0c2NyaXB0IHBhaXJzLiIp
OworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgibXNjcmlwdDYiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlwdHM6
XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1ZygiUHJl
c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworCisgICBk
ZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoICdub25lJyB0YWdzLiIpOworICAgbXNjcmlw
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXNjcmlw
dDciKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlwdHM6XG4iICsgbXNjcmlw
dC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1ZygiUHJlc2NyaXB0czpcbiIg
KyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworfQorCis8L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="222154"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200875</attachid>
            <date>2013-05-06 23:25:01 -0700</date>
            <delta_ts>2013-05-07 09:16:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33673</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTY2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA1LTA2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBtdWx0
aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0aCBtdWx0aXNjcmlwdCB0YWdzIGFsbG93
IGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHByZXNjcmlwdHMgYW5kIHBvc3RzY3JpcHRzCisg
ICAgICAgIGFyb3VuZCBhIGJhc2Ugb2JqZWN0LiAKKworICAgICAgICBUaGlzIE1hdGhNTCB0YWcg
Y3VycmVudGx5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHJlbmRlciB0cmVlLCBidXQgdGhhdCBk
b2Vzbid0IG5lZWQgdG8gCisgICAgICAgIHN0b3AgaXQgZnJvbSBiZWluZyBleHBvc2VkIHRocm91
Z2ggYWNjZXNzaWJpbGl0eSwgYXMgYSBiYXNlIG9iamVjdCB3aXRoIGFuIGFycmF5IG9mIHBvc3Rz
Y3JpcHRzCisgICAgICAgIGFuZCBhbiBhcnJheSBvZiBwcmVzY3JpcHRzLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0KToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0lnbm9yZWRFbGVt
ZW50V2l0aGluTWF0aFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF0aEJhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bU1hdGhTdXBlcnNjcmlwdEtleV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c10pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TWF0
aE92ZXJPYmplY3RdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eU1hdGhUeXBlXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoY29u
dmVydE1hdGhQYWlyc1RvTlNBcnJheSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzXSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBhY2Nlc3NpYmlsaXR5
TWF0aFByZXNjcmlwdFBhaXJzXSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXldKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2Ny
aXB0S2V5XSk6CisgICAgICAgICogbWF0aG1sL21hdGh0YWdzLmluOgorCiAyMDEzLTA1LTA2ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT3duUHRyIGluc3Rl
YWQgb2YgZGVsZXRlQWxsVmFsdWVzIGluIEtleWZyYW1lVmFsdWVMaXN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2
aXNpb24gMTQ5NjAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5MSw3ICs3OTEsOCBAQAogICAgIHZpcnR1
YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCiAgICAgLy8gUm9vdCBjb21wb25lbnRzLgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIHsgcmV0dXJuIDA7IH0K
QEAgLTgxNCw2ICs4MTUsMTEgQEAKICAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgaW50IG1hdGhM
aW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIAorICAgIC8vIE11bHRpc2Ny
aXB0cyBjb21wb25lbnRzLgorICAgIHR5cGVkZWYgVmVjdG9yPHBhaXI8QWNjZXNzaWJpbGl0eU9i
amVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPiA+IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRQYWlyczsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdFBhaXJzJikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0
cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSB7IH0KKwogI2lmIEhBVkUoQUND
RVNTSUJJTElUWSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTI2
LDYgKzM1MjYsMTEgQEAKICAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bWlUYWcpOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUo
KS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW11bHRpc2NyaXB0c1RhZyk7Cit9CisgICAgCiBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWF0aFRhYmxlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXRhYmxl
VGFnKTsKQEAgLTM1NjQsNyArMzU2OSw3IEBACiAgICAgICAgIGlmIChpc01hdGhGcmFjdGlvbigp
IHx8IGlzTWF0aEZlbmNlZCgpIHx8IGlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgfHwgaXNN
YXRoUm93KCkKICAgICAgICAgICAgIHx8IGlzTWF0aFVuZGVyT3ZlcigpIHx8IGlzTWF0aFJvb3Qo
KSB8fCBpc01hdGhUZXh0KCkgfHwgaXNNYXRoTnVtYmVyKCkKICAgICAgICAgICAgIHx8IGlzTWF0
aE9wZXJhdG9yKCkgfHwgaXNNYXRoRmVuY2VPcGVyYXRvcigpIHx8IGlzTWF0aFNlcGFyYXRvck9w
ZXJhdG9yKCkKLSAgICAgICAgICAgIHx8IGlzTWF0aElkZW50aWZpZXIoKSB8fCBpc01hdGhUYWJs
ZSgpIHx8IGlzTWF0aFRhYmxlUm93KCkgfHwgaXNNYXRoVGFibGVDZWxsKCkpCisgICAgICAgICAg
ICB8fCBpc01hdGhJZGVudGlmaWVyKCkgfHwgaXNNYXRoVGFibGUoKSB8fCBpc01hdGhUYWJsZVJv
dygpIHx8IGlzTWF0aFRhYmxlQ2VsbCgpIHx8IGlzTWF0aE11bHRpc2NyaXB0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM2NTcs
NyArMzY2Miw3IEBACiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Om1hdGhCYXNlT2JqZWN0KCkKIHsKLSAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVy
c2NyaXB0KCkgJiYgIWlzTWF0aFVuZGVyT3ZlcigpKQorICAgIGlmICghaXNNYXRoU3Vic2NyaXB0
U3VwZXJzY3JpcHQoKSAmJiAhaXNNYXRoVW5kZXJPdmVyKCkgJiYgIWlzTWF0aE11bHRpc2NyaXB0
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CkBAIC0zNzE1LDcgKzM3MjAsNjcgQEAK
ICAgICAKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpjbG9zZUF0dHIpOwog
fQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoUHJlc2NyaXB0cyhB
Y2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHByZXNjcmlwdHMpCit7CisgICAgaWYg
KCFpc01hdGhNdWx0aXNjcmlwdCgpIHx8ICFub2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBib29sIGZvdW5kUHJlc2NyaXB0ID0gZmFsc2U7CisgICAgcGFpcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+IHByZXNjcmlwdFBhaXI7CisgICAgZm9yIChO
b2RlKiBjaGlsZCA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoZm91bmRQcmVzY3JpcHQpIHsKKyAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2hpbGQgPSBheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKGNoaWxkKTsKKyAgICAgICAgICAgIGlmIChheENoaWxkICYmIGF4Q2hpbGQtPmlzTWF0
aEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGlmICghcHJlc2NyaXB0UGFpci5maXJzdCkK
KyAgICAgICAgICAgICAgICAgICAgcHJlc2NyaXB0UGFpci5maXJzdCA9IGF4Q2hpbGQ7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuc2Vj
b25kID0gYXhDaGlsZDsKKyAgICAgICAgICAgICAgICAgICAgcHJlc2NyaXB0cy5hcHBlbmQocHJl
c2NyaXB0UGFpcik7CisgICAgICAgICAgICAgICAgICAgIHByZXNjcmlwdFBhaXIuZmlyc3QgPSBw
cmVzY3JpcHRQYWlyLnNlY29uZCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptcHJl
c2NyaXB0c1RhZykpCisgICAgICAgICAgICBmb3VuZFByZXNjcmlwdCA9IHRydWU7CisgICAgfQor
ICAgIAorICAgIC8vIEhhbmRsZSB0aGUgb2RkIG51bWJlciBvZiBwcmUgc2NyaXB0cyBjYXNlLgor
ICAgIGlmIChwcmVzY3JpcHRQYWlyLmZpcnN0KQorICAgICAgICBwcmVzY3JpcHRzLmFwcGVuZChw
cmVzY3JpcHRQYWlyKTsKK30KIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRo
UG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJiBwb3N0c2NyaXB0
cykKK3sKKyAgICBpZiAoIWlzTWF0aE11bHRpc2NyaXB0KCkgfHwgIW5vZGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSW4gTXVsdGlzY3JpcHRzLCB0aGUgcG9zdC1zY3JpcHQgZWxlbWVu
dHMgc3RhcnQgYWZ0ZXIgdGhlIGZpcnN0IGVsZW1lbnQgKHdoaWNoIGlzIHRoZSBiYXNlKQorICAg
IC8vIGFuZCBjb250aW51ZSB1bnRpbCBhIDxtcHJlc2NyaXB0cz4gdGFnIGlzIGZvdW5kCisgICAg
cGFpcjxBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+IHBvc3RzY3Jp
cHRQYWlyOworICAgIGJvb2wgZm91bmRCYXNlRWxlbWVudCA9IGZhbHNlOworICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBub2RlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
OjptcHJlc2NyaXB0c1RhZykpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheENoaWxkID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjaGls
ZCk7CisgICAgICAgIGlmIChheENoaWxkICYmIGF4Q2hpbGQtPmlzTWF0aEVsZW1lbnQoKSkgewor
ICAgICAgICAgICAgaWYgKCFmb3VuZEJhc2VFbGVtZW50KQorICAgICAgICAgICAgICAgIGZvdW5k
QmFzZUVsZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIXBvc3RzY3JpcHRQYWly
LmZpcnN0KQorICAgICAgICAgICAgICAgIHBvc3RzY3JpcHRQYWlyLmZpcnN0ID0gYXhDaGlsZDsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHBvc3RzY3JpcHRQYWlyLnNlY29u
ZCA9IGF4Q2hpbGQ7CisgICAgICAgICAgICAgICAgcG9zdHNjcmlwdHMuYXBwZW5kKHBvc3RzY3Jp
cHRQYWlyKTsKKyAgICAgICAgICAgICAgICBwb3N0c2NyaXB0UGFpci5maXJzdCA9IHBvc3RzY3Jp
cHRQYWlyLnNlY29uZCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBIYW5kbGUgdGhlIG9kZCBudW1iZXIgb2YgcG9zdCBzY3JpcHRzIGNhc2UuCisgICAgaWYg
KHBvc3RzY3JpcHRQYWlyLmZpcnN0KQorICAgICAgICBwb3N0c2NyaXB0cy5hcHBlbmQocG9zdHNj
cmlwdFBhaXIpOworfQorCiBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aExpbmVU
aGlja25lc3MoKSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmxpbmV0aGlja25lc3NBdHRyKS50b0ludCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlz
aW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDcgQEAKICAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRo
VGFibGVSb3coKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3Q7CiAgICAgCiAg
ICAgLy8gR2VuZXJpYyBjb21wb25lbnRzLgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogbWF0aEJhc2VPYmplY3QoKTsKQEAgLTMyNCw2ICszMjUsMTAgQEAKICAgICB2aXJ0dWFsIFN0
cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBtYXRo
TGluZVRoaWNrbmVzcygpIGNvbnN0OwogCisgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMu
CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRQYWlycyYpOworICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJik7CisgICAgCiAgICAgYm9vbCBpc0lnbm9yZWRFbGVt
ZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA4Myw2ICsyMDgzLDQwIEBACiAgICAgcmV0dXJuIG1f
b2JqZWN0LT5tYXRoT3Zlck9iamVjdCgpID8gbV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCktPndy
YXBwZXIoKSA6IDA7CiB9CiAKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0
aFN1YnNjcmlwdEtleQoreworICAgIHJldHVybiBAIkFYTVN1YnNjcmlwdE9iamVjdCI7Cit9CisK
Ky0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5Cit7
CisgICAgcmV0dXJuIEAiQVhNU3VwZXJzY3JpcHRPYmplY3QiOworfQorCistIChOU0FycmF5ICop
YWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0cworeworICAgIGlmICghW3NlbGYgX3ByZXBhcmVB
Y2Nlc3NpYmlsaXR5Q2FsbF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJu
IFtzZWxmIGFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzXTsKK30KKworLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0cworeworICAgIGlmICghW3NlbGYgX3ByZXBh
cmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0
dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnNdOworfQorCistIChOU0Fy
cmF5ICopYWNjZXNzaWJpbGl0eU1hdGhPdmVyT2JqZWN0Cit7CisgICAgaWYgKCFbc2VsZiBfcHJl
cGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBy
ZXR1cm4gbV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmpl
Y3QoKS0+d3JhcHBlcigpIDogMDsKK30KKwogLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5TWF0
aEZlbmNlZE9wZW5TdHJpbmcKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0
eUNhbGxdKQpAQCAtMjE1Myw2ICsyMTg3LDggQEAKICAgICAgICAgICAgIHJldHVybiBAIkFYTWF0
aFNlcGFyYXRvck9wZXJhdG9yIjsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhPcGVyYXRv
cigpKQogICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoT3BlcmF0b3IiOworICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0KCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1h
dGhNdWx0aXNjcmlwdCI7CiAgICAgfQogICAgIAogICAgIHJldHVybiBuaWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAkocmV2aXNpb24gMTQ5NjAwKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBACiAtIChDR1BhdGhS
ZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihXZWJDb3JlOjpQYXRoICYpcGF0aDsKIC0gKENH
UG9pbnQpY29udmVydFBvaW50VG9TY3JlZW5TcGFjZTooV2ViQ29yZTo6RmxvYXRQb2ludCAmKXBv
aW50OwogCisvLyBNYXRoIHJlbGF0ZWQgZnVuY3Rpb25zCistIChOU0FycmF5ICopYWNjZXNzaWJp
bGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7CistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRQYWlyczsKKwogQGVuZAogCiAjZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UubW0JKHJldmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMjIgQEAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCitzdGF0aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFp
cnMmIHBhaXJzLCBOU1N0cmluZyAqc3Vic2NyaXB0S2V5LCBOU1N0cmluZyAqc3VwZXJzY3JpcHRL
ZXkpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gcGFpcnMuc2l6ZSgpOworICAgIE5TTXV0YWJs
ZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsZW5ndGhd
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpwYWlyRGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnldOworICAgICAgICBwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4gcGFpciA9IHBhaXJzW2ldOworICAgICAgICBpZiAocGFpci5maXJzdCAm
JiBwYWlyLmZpcnN0LT53cmFwcGVyKCkgJiYgIXBhaXIuZmlyc3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKKyAgICAgICAgICAgIFtwYWlyRGljdGlvbmFyeSBzZXRPYmplY3Q6cGFpci5maXJz
dC0+d3JhcHBlcigpIGZvcktleTpzdWJzY3JpcHRLZXldOworICAgICAgICBpZiAocGFpci5zZWNv
bmQgJiYgcGFpci5zZWNvbmQtPndyYXBwZXIoKSAmJiAhcGFpci5zZWNvbmQtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgIFtwYWlyRGljdGlvbmFyeSBzZXRPYmplY3Q6cGFp
ci5zZWNvbmQtPndyYXBwZXIoKSBmb3JLZXk6c3VwZXJzY3JpcHRLZXldOworICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OnBhaXJEaWN0aW9uYXJ5XTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5Owor
fQorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlCiAK
IC0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCop
YXhPYmplY3QKQEAgLTM0Miw2ICszNTgsMzIgQEAKICAgICB9CiB9CiAKKy0gKE5TU3RyaW5nICop
YWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJp
bGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG5pbDsgICAgCit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5
TWF0aFBvc3RzY3JpcHRQYWlycworeworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWlyczsKKyAgICBtX29iamVjdC0+bWF0aFBvc3Rz
Y3JpcHRzKHBhaXJzKTsKKyAgICByZXR1cm4gY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShwYWly
cywgW3NlbGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleV0sIFtzZWxmIGFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdXBlcnNjcmlwdEtleV0pOworfQorCistIChOU0FycmF5
ICopYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlycworeworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWlyczsKKyAgICBtX29i
amVjdC0+bWF0aFByZXNjcmlwdHMocGFpcnMpOworICAgIHJldHVybiBjb252ZXJ0TWF0aFBhaXJz
VG9OU0FycmF5KHBhaXJzLCBbc2VsZiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0
S2V5XSwgW3NlbGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5XSk7Cit9
CisKIC8vIFRoaXMgaXMgc2V0IGJ5IERSVCB3aGVuIGl0IHdhbnRzIHRvIGxpc3RlbiBmb3Igbm90
aWZpY2F0aW9ucy4KIHN0YXRpYyBCT09MIGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmlj
YXRpb25zOwogKyAodm9pZClhY2Nlc3NpYmlsaXR5U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9u
czooQk9PTClyZXBvc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzcyLDYgKzM3Miw4IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0
cmlidXRlIEAiQVhNYXRoRmVuY2VkT3BlbiIKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZl
bmNlZENsb3NlQXR0cmlidXRlIEAiQVhNYXRoRmVuY2VkQ2xvc2UiCiAjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eU1hdGhMaW5lVGhpY2tuZXNzQXR0cmlidXRlIEAiQVhNYXRoTGluZVRoaWNrbmVzcyIK
KyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdHNBdHRyaWJ1dGUgQCJBWE1hdGhQ
cmVzY3JpcHRzIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdHNBdHRyaWJ1
dGUgQCJBWE1hdGhQb3N0c2NyaXB0cyIKIAogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyCiAKQEAgLTEwNDIsNiArMTA0NCwxMCBAQAogICAgIH0gZWxzZSBpZiAo
bV9vYmplY3QtPmlzTWF0aEZlbmNlZCgpKSB7CiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV07CiAgICAgICAgIFthZGRp
dGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkQ2xvc2VBdHRyaWJ1dGVd
OworICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0KCkpIHsKKyAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRl
XTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhQcmVz
Y3JpcHRzQXR0cmlidXRlXTsKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eU1hdGhQb3N0c2NyaXB0c0F0dHJpYnV0ZV07CiAgICAgfQogICAgIAogICAgIGlmICht
X29iamVjdC0+c3VwcG9ydHNQYXRoKCkpCkBAIC0xODU1LDYgKzE4NjEsOCBAQAogICAgICAgICAg
ICAgcmV0dXJuIEAiQVhNYXRoU2VwYXJhdG9yT3BlcmF0b3IiOwogICAgICAgICBpZiAobV9vYmpl
Y3QtPmlzTWF0aE9wZXJhdG9yKCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRv
ciI7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTWF0aE11bHRpc2NyaXB0IjsKICAgICB9CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc01lZGlhVGltZWxpbmUoKSkKQEAgLTI3MDgsNiArMjcxNiwxMCBAQAogICAgICAg
ICAgICAgcmV0dXJuIG1fb2JqZWN0LT5tYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKTsKICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoTGlu
ZVRoaWNrbmVzc0F0dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOm1fb2JqZWN0LT5tYXRoTGluZVRoaWNrbmVzcygpXTsKKyAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNj
cmlwdHNBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlN
YXRoUG9zdHNjcmlwdFBhaXJzXTsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c0F0dHJpYnV0ZV0pCisgICAgICAg
ICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlyc107CiAgICAg
fQogICAgIAogICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIGZvciB0
ZXN0aW5nCkBAIC0yNzQxLDYgKzI3NTMsMTYgQEAKICAgICByZXR1cm4gbmlsOwogfQogCistIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXkKK3sKKyAgICBy
ZXR1cm4gTlNBY2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZTsKK30KKworLSAoTlNT
dHJpbmcgKilhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXkKK3sKKyAgICBy
ZXR1cm4gTlNBY2Nlc3NpYmlsaXR5TWF0aFN1cGVyc2NyaXB0QXR0cmlidXRlOworfQorCiAtIChp
ZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudAogewogICAgIGlmICghW3NlbGYgdXBkYXRl
T2JqZWN0QmFja2luZ1N0b3JlXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFn
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4JKHJl
dmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOSBAQAogbXRhYmxlIGludGVyZmFjZU5hbWU9TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudAogbXRyIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudAog
bXRkIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudAorbW11bHRpc2NyaXB0cyBpbnRlcmZhY2VO
YW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21wcmVzY3JpcHRzIGludGVyZmFjZU5h
bWU9TWF0aE1MRWxlbWVudAorbm9uZSBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQKIAogI2lm
IDAgLy8gQ3VyZW50bHkgb25seSBmb3IgTWF0aE1MTmFtZXMgdXNlZCBieSBIVE1MVHJlZUJ1aWxk
ZXIuCiBtcwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMDUtMDYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogTWF0aE1MIG11bHRpc2NyaXB0cyBub3QgZXhwb3Nl
ZCBpbiBBY2Nlc3NpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTUwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgbWV0aG9kcyB0byBoZWxwIG91dHB1dCBjb21wb25lbnRzIG9mIG1hdGgg
bXVsdGlzY3JpcHRzIGZvciBhY2Nlc3NpYmlsaXR5LgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChtYXRoUG9zdHNjcmlwdHNE
ZXNjcmlwdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKG1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb25D
YWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKF9jb252ZXJ0TWF0aE11
bHRpc2NyaXB0UGFpcnNUb1N0cmluZyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlv
bik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRz
RGVzY3JpcHRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAo
V1RSOjpfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3Jp
cHRpb24pOgorCiAyMDEzLTA1LTA2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGRlZCB0d28gZmlsZXMgSSBuZWdsZWN0ZWQgdG8gY29tbWl0IGluIHIxNDk1ODku
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0OTYwMCkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsOCBAQAogUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlckZvckluZGV4KGludCkgeyByZXR1cm4gMDsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkgeyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpt
YXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rl
c2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KIAogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNp
b24gMTQ5NjAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw2ICsyMzEsOCBAQAog
CiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9y
IGFuIGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlv
bnMoKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWF0aFBvc3RzY3JpcHRz
RGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWF0aFBy
ZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBhdGhEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNDk2MDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAKIAogICAg
IC8vIFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBl
bGVtZW50LgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3VwcG9ydGVkQWN0aW9u
czsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1hdGhQb3N0c2NyaXB0c0Rlc2Ny
aXB0aW9uOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aERlc2Ny
aXB0aW9uOwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDg3LDYgKzE0ODcsMzcgQEAKICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
fQogCitzdGF0aWMgTlNTdHJpbmcgKl9jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmlu
ZyhOU0FycmF5ICpwYWlycykKK3sKKyAgICBfX2Jsb2NrIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0
ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIFtwYWlycyBlbnVtZXJhdGVPYmplY3Rz
VXNpbmdCbG9jazpeKGlkIHBhaXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKKyAg
ICAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIHBhaXIpCisgICAgICAgICAgICBbcmVzdWx0IGFw
cGVuZEZvcm1hdDpAIlx0JWxkLiAlQCA9ICVAXG4iLCAodW5zaWduZWQgbG9uZylpbmRleCwga2V5
LCBbW3BhaXIgb2JqZWN0Rm9yS2V5OmtleV0gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVdXTsKKyAgICB9XTsKKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorICAgIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUG9zdHNjcmlwdHMiXTsKKyAgICBy
ZXR1cm4gW19jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRl
SlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUworICAgIE5TQXJyYXkgKnBhaXJzID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWE1hdGhQcmVzY3JpcHRzIl07CisgICAgcmV0dXJuIFtfY29u
dmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0ZUpTU3RyaW5nUmVm
XTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9Cisg
ICAgCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0
aERlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3Niw2ICsxMDc2LDE5IEBACiAgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlU3RyaW5nKEFkb3B0LCB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KS0+c3VwcG9ydGVkQWN0aW9ucygpKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VT
dHJpbmcoY29udGV4dCwgdmFsdWVTdHJpbmcuZ2V0KCkpOwogfQorCitzdGF0aWMgSlNWYWx1ZVJl
ZiBtYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVT
dHJpbmcoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5tYXRoUG9zdHNjcmlwdHNEZXNj
cmlwdGlvbigpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdmFsdWVT
dHJpbmcuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBtYXRoUHJlc2NyaXB0c0Rlc2Ny
aXB0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB2YWx1ZVN0cmluZyhBZG9wdCwgdG9BWEVsZW1l
bnQodGhpc09iamVjdCktPm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsKK30KKwogI2Vu
ZGlmCiAKIC8vIEltcGxlbWVudGF0aW9uCkBAIC0xMjYyLDYgKzEyNzUsOCBAQAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAg
ICAgIHsgInN1cHBvcnRlZEFjdGlvbnMiLCBzdXBwb3J0ZWRBY3Rpb25zQ2FsbGJhY2ssIDAsIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICAgICAgeyAibWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24iLCBtYXRoUG9zdHNj
cmlwdHNEZXNjcmlwdGlvbkNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIm1hdGhQcmVz
Y3JpcHRzRGVzY3JpcHRpb24iLCBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2ssIDAs
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICNlbmRpZgogICAgICAgICB7IDAsIDAsIDAsIDAgfQogICAgIH07CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lv
biAxNDk2MDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksMTAgQEAKICNpZiBQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShJT1MpCiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3Vw
cG9ydGVkIGFjdGlvbnMgZm9yIGFuIGVsZW1lbnQuCiAgICAgSlNTdHJpbmdSZWYgc3VwcG9ydGVk
QWN0aW9ucygpOworICAgIAorICAgIC8vIEEgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiB0aGUgZWxl
bWVudHMgbWFraW5nIHVwIG11bHRpc2NyaXB0IHByZS9wb3N0IG9iamVjdHMuCisgICAgSlNTdHJp
bmdSZWYgbWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBKU1N0cmluZ1Jl
ZiBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYKICAgICAKIHByaXZh
dGU6CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE1MjEsNiArMTUyMSw0MCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgTlNTdHJpbmcg
KmNvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKE5TQXJyYXkgKnBhaXJzKQorewor
ICAgIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqcGFpciBpbiBw
YWlycykgeworICAgICAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gcGFpcikKKyAgICAgICAgICAg
IFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiXHQlbGQuICVAID0gJUBcbiIsIGluZGV4LCBrZXksIFtb
cGFpciBvYmplY3RGb3JLZXk6a2V5XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV1dOworICAgICAgICBpbmRleCsrOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNBcnJheSAqcGFpcnMgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWF0aFBvc3RzY3JpcHRzIl07CisgICAgcmV0dXJu
IFtjb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRlSlNTdHJp
bmdSZWZdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsK
K30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
TlNBcnJheSAqcGFpcnMgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYTWF0aFByZXNjcmlwdHMiXTsKKyAgICByZXR1cm4gW2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQ
YWlyc1RvU3RyaW5nKHBhaXJzKSBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAwOworfQorCisKIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDk2MDApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0wNiAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBNYXRoTUwgbXVs
dGlzY3JpcHRzIG5vdCBleHBvc2VkIGluIEFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTA2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvbWF0aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0bWw6IEFkZGVkLgor
CiAyMDEzLTA1LTA2ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAg
IFtDU1MgRXhjbHVzaW9uc10gc2hhcGUtaW5zaWRlIHJvdW5kZWQgcmVjdGFuZ2xlIHRlc3RzIGZh
aWwgd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMgZGlzYWJsZWQKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0
aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorQSAxIDIgIAorQSAxIDIgMyAgCitB
IDQgNSAgCitBIDQgNSA2ICAKK0EgMSAyIDMgNCA1IDYgIAorQSAgCitBIDEgMyA1IDYKK1RoaXMg
dGVzdHMgY2hlY2tzIHRoYXQgbW11bHRpc2NyaXB0IHRhZ3Mgd2lsbCBjcmVhdGUgdGhlIGNvcnJl
Y3QgYWNjZXNzaWJpbGl0eSBtYXRoIGhpZXJhcmNoeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgbXNjcmlwdC5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIG1z
Y3JpcHQuc3Vicm9sZSBpcyAnQVhTdWJyb2xlOiBBWE1hdGhNdWx0aXNjcmlwdCcKKworQ2hlY2sg
bXVsdGlzY3JpcHQgd2l0aCBvbmUgcG9zdC1zY3JpcHQgcGFpcgorUG9zdHNjcmlwdHM6CisJMC4g
QVhNYXRoU3VwZXJzY3JpcHQgPSBBWE1hdGhJZGVudGlmaWVyCisJMC4gQVhNYXRoU3Vic2NyaXB0
ID0gQVhNYXRoTnVtYmVyCisKK1ByZXNjcmlwdHM6CisKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0
aCBvZGQgbnVtYmVyIG9mIHBvc3Qtc2NyaXB0IHBhaXJzCitQb3N0c2NyaXB0czoKKwkwLiBBWE1h
dGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBB
WE1hdGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworUHJlc2Ny
aXB0czoKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoIGEgcHJlc2NyaXB0IHBhaXIKK1Bvc3Rz
Y3JpcHRzOgorCitQcmVzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRl
bnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCisKK0NoZWNrIG11
bHRpc2NyaXB0IHdpdGggb2RkIG51bWJlciBvZiBwcmUtc2NyaXB0IHBhaXJzCitQb3N0c2NyaXB0
czoKKworUHJlc2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZp
ZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3Jp
cHQgPSBBWE1hdGhOdW1iZXIKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoIHByZSBhbmQgcG9z
dCBzY3JpcHQgcGFpcnMuCitQb3N0c2NyaXB0czoKKwkwLiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFY
TWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKwkxLiBB
WE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworUHJlc2NyaXB0czoKKwkwLiBBWE1hdGhT
dXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1h
dGhOdW1iZXIKKwkxLiBBWE1hdGhTdWJzY3JpcHQgPSBBWE1hdGhOdW1iZXIKKworCitDaGVjayBt
dWx0aXNjcmlwdCB3aXRoIG5vIHByZXNjcmlwdCBvciBwb3N0c2NyaXB0IHBhaXJzLgorUG9zdHNj
cmlwdHM6CisKK1ByZXNjcmlwdHM6CisKKworQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCAnbm9uZScg
dGFncy4KK1Bvc3RzY3JpcHRzOgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgor
CTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVzY3JpcHRzOgorCTAuIEFY
TWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9
IEFYTWF0aE51bWJlcgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
bWF0aG1sLW11bHRpc2NyaXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtbXVsdGlz
Y3JpcHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIG9u
ZSBwb3N0LXNjcmlwdCBwYWlyIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQxIj4KKzxtbXVsdGlzY3Jp
cHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1uPiAxIDwvbW4+CisgIDxtaT4gMiA8L21pPgorPC9t
bXVsdGlzY3JpcHRzPgorPC9tYXRoPgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGggdHdvIHBvc3Qt
c2NyaXB0IHBhaXJzLCBvbmUgd2l0aCBhbiBvZGQgbnVtYmVyIC0tPgorPG1hdGggaWQ9Im1zY3Jp
cHQyIj4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1uPiAxIDwvbW4+Cisg
IDxtaT4gMiA8L21pPgorICA8bW4+IDMgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0aD4K
KworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIG9uZSBwcmUtc2NyaXB0IHBhaXIgLS0+Cis8bWF0aCBp
ZD0ibXNjcmlwdDMiPgorPG1tdWx0aXNjcmlwdHM+CisgIDxtaT4gQSA8L21pPgorICA8bXByZXNj
cmlwdHMvPgorICA8bW4+IDQgPC9tbj4KKyAgPG1pPiA1IDwvbWk+Cis8L21tdWx0aXNjcmlwdHM+
Cis8L21hdGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0aCB0d28gcHJlLXNjcmlwdCBwYWlycywg
b25lIHdpdGggYW4gb2RkIG51bWJlciAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NCI+Cis8bW11bHRp
c2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtcHJlc2NyaXB0cy8+CisgIDxtbj4gNCA8L21u
PgorICA8bWk+IDUgPC9taT4KKyAgPG1uPiA2IDwvbW4+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21h
dGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0aCBwb3N0LXNjcmlwdCBhbmQgcHJlLXNjcmlwdCBw
YWlycyAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NSI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBB
IDwvbWk+CisgIDxtbj4gMSA8L21uPgorICA8bWk+IDIgPC9taT4KKyAgPG1uPiAzIDwvbW4+Cisg
IDxtcHJlc2NyaXB0cy8+CisgIDxtbj4gNCA8L21uPgorICA8bWk+IDUgPC9taT4KKyAgPG1uPiA2
IDwvbW4+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21hdGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgbm8g
cG9zdC1zY3JpcHQgb3IgcHJlLXNjcmlwdCBwYWlycyAtLT4KKzxtYXRoIGlkPSJtc2NyaXB0NiI+
Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+Cis8L21tdWx0aXNjcmlwdHM+Cis8L21h
dGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgdXNpbmcgPG5vbmU+IHRhZyAtLT4KKzxtYXRoIGlkPSJt
c2NyaXB0NyI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtbj4gMSA8L21u
PgorICA8bm9uZS8+CisgIDxtbj4gMyA8L21uPgorICA8bXByZXNjcmlwdHMvPgorICA8bm9uZS8+
CisgIDxtaT4gNSA8L21pPgorICA8bW4+IDYgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0
aD4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyBjaGVja3MgdGhhdCBtbXVsdGlzY3JpcHQgdGFncyB3aWxsIGNyZWF0ZSB0aGUg
Y29ycmVjdCBhY2Nlc3NpYmlsaXR5IG1hdGggaGllcmFyY2h5LiIpCisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgdmFyIG1z
Y3JpcHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1z
Y3JpcHQxIikuY2hpbGRBdEluZGV4KDApOworICAgc2hvdWxkQmUoIm1zY3JpcHQucm9sZSIsICIn
QVhSb2xlOiBBWEdyb3VwJyIpOworICAgc2hvdWxkQmUoIm1zY3JpcHQuc3Vicm9sZSIsICInQVhT
dWJyb2xlOiBBWE1hdGhNdWx0aXNjcmlwdCciKTsKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2Ny
aXB0IHdpdGggb25lIHBvc3Qtc2NyaXB0IHBhaXIiKTsKKyAgIGRlYnVnKCJQb3N0c2NyaXB0czpc
biIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAgIGRlYnVnKCJQcmVz
Y3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik7CisKKyAgIGRl
YnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggb2RkIG51bWJlciBvZiBwb3N0LXNjcmlwdCBw
YWlycyIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibXNjcmlwdDIiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1
ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOwor
CisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIGEgcHJlc2NyaXB0IHBhaXIiKTsK
KyAgIG1zY3JpcHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoIm1zY3JpcHQzIikuY2hpbGRBdEluZGV4KDApOworICAgZGVidWcoIlBvc3RzY3JpcHRzOlxu
IiArIG1zY3JpcHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWcoIlByZXNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKworICAgZGVi
dWcoIlxuQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHByZS1zY3JpcHQgcGFp
cnMiKTsKKyAgIG1zY3JpcHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoIm1zY3JpcHQ0IikuY2hpbGRBdEluZGV4KDApOworICAgZGVidWcoIlBvc3RzY3Jp
cHRzOlxuIiArIG1zY3JpcHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWco
IlByZXNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKwor
ICAgZGVidWcoIlxuQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBwcmUgYW5kIHBvc3Qgc2NyaXB0IHBh
aXJzLiIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibXNjcmlwdDUiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1
ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOwor
CisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIG5vIHByZXNjcmlwdCBvciBwb3N0
c2NyaXB0IHBhaXJzLiIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgibXNjcmlwdDYiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1
ZygiUG9zdHNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7
CisgICBkZWJ1ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3Jp
cHRpb24pOworCisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoICdub25lJyB0YWdz
LiIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgibXNjcmlwdDciKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlw
dHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1Zygi
UHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworfQor
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="222156"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200913</attachid>
            <date>2013-05-07 09:16:24 -0700</date>
            <delta_ts>2013-06-01 13:32:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33675</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTY2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEzLTA1LTA2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBtdWx0
aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0aCBtdWx0aXNjcmlwdCB0YWdzIGFsbG93
IGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHByZXNjcmlwdHMgYW5kIHBvc3RzY3JpcHRzCisg
ICAgICAgIGFyb3VuZCBhIGJhc2Ugb2JqZWN0LiAKKworICAgICAgICBUaGlzIE1hdGhNTCB0YWcg
Y3VycmVudGx5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHJlbmRlciB0cmVlLCBidXQgdGhhdCBk
b2Vzbid0IG5lZWQgdG8gCisgICAgICAgIHN0b3AgaXQgZnJvbSBiZWluZyBleHBvc2VkIHRocm91
Z2ggYWNjZXNzaWJpbGl0eSwgYXMgYSBiYXNlIG9iamVjdCB3aXRoIGFuIGFycmF5IG9mIHBvc3Rz
Y3JpcHRzCisgICAgICAgIGFuZCBhbiBhcnJheSBvZiBwcmVzY3JpcHRzLgorCisgICAgICAgIFRl
c3Q6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0aXNjcmlwdC5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTWF0aE11bHRpc2NyaXB0KToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFByZXNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNNYXRoTXVsdGlzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNJZ25vcmVkRWxlbWVudFdpdGhpbk1hdGhUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhCYXNlT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhQ
cmVzY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om1hdGhQb3N0c2NyaXB0cyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1NYXRoU3VwZXJzY3JpcHRLZXld
KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eU1hdGhQb3N0c2NyaXB0c10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdHNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1hdGhPdmVyT2JqZWN0XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlNYXRoVHlw
ZV0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKGNvbnZlcnRNYXRoUGFpcnNUb05TQXJy
YXkpOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYWNjZXNz
aWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1cGVyc2Ny
aXB0S2V5XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBh
Y2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRQYWlyc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRQYWlyc10p
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhZGRp
dGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIHN1YnJvbGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1N
YXRoU3Vic2NyaXB0S2V5XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdXBlcnNjcmlwdEtleV0pOgorICAgICAgICAq
IG1hdGhtbC9tYXRodGFncy5pbjoKKwogMjAxMy0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIE93blB0ciBpbnN0ZWFkIG9mIGRlbGV0ZUFsbFZhbHVl
cyBpbiBLZXlmcmFtZVZhbHVlTGlzdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDE0OTYwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OTEsNyArNzkxLDggQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZVJv
dygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWF0aFRhYmxl
Q2VsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCisgICAgdmlydHVhbCBib29sIGlz
TWF0aE11bHRpc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFJvb3Qg
Y29tcG9uZW50cy4KICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSYWRpY2Fu
ZE9iamVjdCgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1hdGhSb290SW5kZXhPYmplY3QoKSB7IHJldHVybiAwOyB9CkBAIC04MTQsNiArODE1LDExIEBA
CiAgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICAgICAKKyAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9uZW50cy4KKyAg
ICB0eXBlZGVmIFZlY3RvcjxwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4gPiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnM7CisgICAgdmlydHVh
bCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhN
dWx0aXNjcmlwdFBhaXJzJikgeyB9CisKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIqIHdyYXBwZXIoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MTQ5NjAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyNiw2ICszNTI2LDExIEBACiAgICAg
cmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKTsK
IH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01hdGhNdWx0aXNjcmlwdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoTWF0aE1M
TmFtZXM6Om1tdWx0aXNjcmlwdHNUYWcpOworfQorICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc01hdGhUYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5vZGUoKSAmJiBu
b2RlKCktPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10YWJsZVRhZyk7CkBAIC0zNTY0LDcgKzM1
NjksNyBAQAogICAgICAgICBpZiAoaXNNYXRoRnJhY3Rpb24oKSB8fCBpc01hdGhGZW5jZWQoKSB8
fCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpIHx8IGlzTWF0aFJvdygpCiAgICAgICAgICAg
ICB8fCBpc01hdGhVbmRlck92ZXIoKSB8fCBpc01hdGhSb290KCkgfHwgaXNNYXRoVGV4dCgpIHx8
IGlzTWF0aE51bWJlcigpCiAgICAgICAgICAgICB8fCBpc01hdGhPcGVyYXRvcigpIHx8IGlzTWF0
aEZlbmNlT3BlcmF0b3IoKSB8fCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpCi0gICAgICAgICAg
ICB8fCBpc01hdGhJZGVudGlmaWVyKCkgfHwgaXNNYXRoVGFibGUoKSB8fCBpc01hdGhUYWJsZVJv
dygpIHx8IGlzTWF0aFRhYmxlQ2VsbCgpKQorICAgICAgICAgICAgfHwgaXNNYXRoSWRlbnRpZmll
cigpIHx8IGlzTWF0aFRhYmxlKCkgfHwgaXNNYXRoVGFibGVSb3coKSB8fCBpc01hdGhUYWJsZUNl
bGwoKSB8fCBpc01hdGhNdWx0aXNjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNjU3LDcgKzM2NjIsNyBAQAogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptYXRoQmFzZU9iamVj
dCgpCiB7Ci0gICAgaWYgKCFpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpICYmICFpc01hdGhV
bmRlck92ZXIoKSkKKyAgICBpZiAoIWlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkgJiYgIWlz
TWF0aFVuZGVyT3ZlcigpICYmICFpc01hdGhNdWx0aXNjcmlwdCgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0aGlz
LT5jaGlsZHJlbigpOwpAQCAtMzcxNSw3ICszNzIwLDY3IEBACiAgICAgCiAgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6Y2xvc2VBdHRyKTsKIH0KKyAgICAKK3ZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdFBhaXJzJiBwcmVzY3JpcHRzKQoreworICAgIGlmICghaXNNYXRoTXVsdGlzY3JpcHQo
KSB8fCAhbm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYm9vbCBmb3VuZFByZXNj
cmlwdCA9IGZhbHNlOworICAgIHBhaXI8QWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxp
dHlPYmplY3QqPiBwcmVzY3JpcHRQYWlyOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlKCkt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKGZvdW5kUHJlc2NyaXB0KSB7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBheENoaWxkID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjaGlsZCk7CisgICAg
ICAgICAgICBpZiAoYXhDaGlsZCAmJiBheENoaWxkLT5pc01hdGhFbGVtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXByZXNjcmlwdFBhaXIuZmlyc3QpCisgICAgICAgICAgICAgICAgICAg
IHByZXNjcmlwdFBhaXIuZmlyc3QgPSBheENoaWxkOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBwcmVzY3JpcHRQYWlyLnNlY29uZCA9IGF4Q2hpbGQ7CisgICAg
ICAgICAgICAgICAgICAgIHByZXNjcmlwdHMuYXBwZW5kKHByZXNjcmlwdFBhaXIpOworICAgICAg
ICAgICAgICAgICAgICBwcmVzY3JpcHRQYWlyLmZpcnN0ID0gcHJlc2NyaXB0UGFpci5zZWNvbmQg
PSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlm
IChjaGlsZC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXByZXNjcmlwdHNUYWcpKQorICAgICAg
ICAgICAgZm91bmRQcmVzY3JpcHQgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBIYW5kbGUg
dGhlIG9kZCBudW1iZXIgb2YgcHJlIHNjcmlwdHMgY2FzZS4KKyAgICBpZiAocHJlc2NyaXB0UGFp
ci5maXJzdCkKKyAgICAgICAgcHJlc2NyaXB0cy5hcHBlbmQocHJlc2NyaXB0UGFpcik7Cit9CiAK
K3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2li
aWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcG9zdHNjcmlwdHMpCit7CisgICAgaWYgKCFpc01h
dGhNdWx0aXNjcmlwdCgpIHx8ICFub2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElu
IE11bHRpc2NyaXB0cywgdGhlIHBvc3Qtc2NyaXB0IGVsZW1lbnRzIHN0YXJ0IGFmdGVyIHRoZSBm
aXJzdCBlbGVtZW50ICh3aGljaCBpcyB0aGUgYmFzZSkKKyAgICAvLyBhbmQgY29udGludWUgdW50
aWwgYSA8bXByZXNjcmlwdHM+IHRhZyBpcyBmb3VuZAorICAgIHBhaXI8QWNjZXNzaWJpbGl0eU9i
amVjdCosIEFjY2Vzc2liaWxpdHlPYmplY3QqPiBwb3N0c2NyaXB0UGFpcjsKKyAgICBib29sIGZv
dW5kQmFzZUVsZW1lbnQgPSBmYWxzZTsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZSgpLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXByZXNjcmlwdHNUYWcpKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhDaGls
ZCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY2hpbGQpOworICAgICAgICBpZiAoYXhD
aGlsZCAmJiBheENoaWxkLT5pc01hdGhFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlmICghZm91
bmRCYXNlRWxlbWVudCkKKyAgICAgICAgICAgICAgICBmb3VuZEJhc2VFbGVtZW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKCFwb3N0c2NyaXB0UGFpci5maXJzdCkKKyAgICAgICAgICAg
ICAgICBwb3N0c2NyaXB0UGFpci5maXJzdCA9IGF4Q2hpbGQ7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwb3N0c2NyaXB0UGFpci5zZWNvbmQgPSBheENoaWxkOworICAgICAg
ICAgICAgICAgIHBvc3RzY3JpcHRzLmFwcGVuZChwb3N0c2NyaXB0UGFpcik7CisgICAgICAgICAg
ICAgICAgcG9zdHNjcmlwdFBhaXIuZmlyc3QgPSBwb3N0c2NyaXB0UGFpci5zZWNvbmQgPSAwOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gSGFuZGxlIHRoZSBvZGQg
bnVtYmVyIG9mIHBvc3Qgc2NyaXB0cyBjYXNlLgorICAgIGlmIChwb3N0c2NyaXB0UGFpci5maXJz
dCkKKyAgICAgICAgcG9zdHNjcmlwdHMuYXBwZW5kKHBvc3RzY3JpcHRQYWlyKTsKK30KKwogaW50
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpsaW5ldGhpY2tuZXNzQXR0ciku
dG9JbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNDk2MDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw3IEBACiAgICAgdmlydHVhbCBib29sIGlzTWF0aFRh
YmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0OwogICAgIAogICAgIC8vIEdlbmVyaWMgY29tcG9u
ZW50cy4KICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCk7
CkBAIC0zMjQsNiArMzI1LDEwIEBACiAgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZENsb3Nl
U3RyaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25z
dDsKIAorICAgIC8vIE11bHRpc2NyaXB0cyBjb21wb25lbnRzLgorICAgIHZpcnR1YWwgdm9pZCBt
YXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQ
YWlycyYpOworICAgIAogICAgIGJvb2wgaXNJZ25vcmVkRWxlbWVudFdpdGhpbk1hdGhUcmVlKCkg
Y29uc3Q7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQkocmV2aXNpb24gMTQ5NjAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIwODMsNiArMjA4Myw0MCBAQAogICAgIHJldHVybiBtX29iamVjdC0+bWF0aE92ZXJPYmpl
Y3QoKSA/IG1fb2JqZWN0LT5tYXRoT3Zlck9iamVjdCgpLT53cmFwcGVyKCkgOiAwOwogfQogCist
IChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXkKK3sKKyAg
ICByZXR1cm4gQCJBWE1TdWJzY3JpcHRPYmplY3QiOworfQorCistIChOU1N0cmluZyAqKWFjY2Vz
c2liaWxpdHlQbGF0Zm9ybU1hdGhTdXBlcnNjcmlwdEtleQoreworICAgIHJldHVybiBAIkFYTVN1
cGVyc2NyaXB0T2JqZWN0IjsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUG9z
dHNjcmlwdHMKK3sKKyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBbc2VsZiBhY2Nlc3NpYmlsaXR5
TWF0aFBvc3RzY3JpcHRQYWlyc107Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5TWF0
aFByZXNjcmlwdHMKK3sKKyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxd
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBbc2VsZiBhY2Nlc3NpYmls
aXR5TWF0aFByZXNjcmlwdFBhaXJzXTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlN
YXRoT3Zlck9iamVjdAoreworICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2Fs
bF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIG1fb2JqZWN0LT5tYXRo
T3Zlck9iamVjdCgpID8gbV9vYmplY3QtPm1hdGhPdmVyT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7
Cit9CisKIC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuU3RyaW5nCiB7
CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKQEAgLTIxNTMsNiAr
MjE4Nyw4IEBACiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhTZXBhcmF0b3JPcGVyYXRvciI7
CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoT3BlcmF0b3IoKSkKICAgICAgICAgICAgIHJl
dHVybiBAIkFYTWF0aE9wZXJhdG9yIjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhNdWx0
aXNjcmlwdCgpKQorICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoTXVsdGlzY3JpcHQiOwogICAg
IH0KICAgICAKICAgICByZXR1cm4gbmlsOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLmgJKHJldmlzaW9uIDE0OTYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw2ICs2MSwxMCBAQAogLSAoQ0dQYXRoUmVmKWNvbnZlcnRQYXRoVG9TY3Jl
ZW5TcGFjZTooV2ViQ29yZTo6UGF0aCAmKXBhdGg7CiAtIChDR1BvaW50KWNvbnZlcnRQb2ludFRv
U2NyZWVuU3BhY2U6KFdlYkNvcmU6OkZsb2F0UG9pbnQgJilwb2ludDsKIAorLy8gTWF0aCByZWxh
dGVkIGZ1bmN0aW9ucworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBh
aXJzOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7CisKIEBl
bmQKIAogI2VuZGlmIC8vIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCShyZXZpc2lvbiAxNDk2
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDIyIEBACiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAorc3RhdGlj
IE5TQXJyYXkgKmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJiBwYWlycywgTlNTdHJpbmcg
KnN1YnNjcmlwdEtleSwgTlNTdHJpbmcgKnN1cGVyc2NyaXB0S2V5KQoreworICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHBhaXJzLnNpemUoKTsKKyAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bGVuZ3RoXTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
cGFpckRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICAg
ICAgcGFpcjxBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eU9iamVjdCo+IHBhaXIg
PSBwYWlyc1tpXTsKKyAgICAgICAgaWYgKHBhaXIuZmlyc3QgJiYgcGFpci5maXJzdC0+d3JhcHBl
cigpICYmICFwYWlyLmZpcnN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAg
ICBbcGFpckRpY3Rpb25hcnkgc2V0T2JqZWN0OnBhaXIuZmlyc3QtPndyYXBwZXIoKSBmb3JLZXk6
c3Vic2NyaXB0S2V5XTsKKyAgICAgICAgaWYgKHBhaXIuc2Vjb25kICYmIHBhaXIuc2Vjb25kLT53
cmFwcGVyKCkgJiYgIXBhaXIuc2Vjb25kLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAg
ICAgICAgICBbcGFpckRpY3Rpb25hcnkgc2V0T2JqZWN0OnBhaXIuc2Vjb25kLT53cmFwcGVyKCkg
Zm9yS2V5OnN1cGVyc2NyaXB0S2V5XTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpwYWlyRGlj
dGlvbmFyeV07CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KKwogQGltcGxlbWVudGF0aW9u
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZQogCiAtIChpZClpbml0V2l0aEFjY2Vz
c2liaWxpdHlPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3QqKWF4T2JqZWN0CkBAIC0zNDIsNiAr
MzU4LDMyIEBACiAgICAgfQogfQogCistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQbGF0Zm9y
bU1hdGhTdWJzY3JpcHRLZXkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gbmlsOworfQorCistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQbGF0Zm9ybU1hdGhTdXBl
cnNjcmlwdEtleQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBuaWw7
ICAgIAorfQorCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnMK
K3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
UGFpcnMgcGFpcnM7CisgICAgbV9vYmplY3QtPm1hdGhQb3N0c2NyaXB0cyhwYWlycyk7CisgICAg
cmV0dXJuIGNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkocGFpcnMsIFtzZWxmIGFjY2Vzc2liaWxp
dHlQbGF0Zm9ybU1hdGhTdWJzY3JpcHRLZXldLCBbc2VsZiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1N
YXRoU3VwZXJzY3JpcHRLZXldKTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRo
UHJlc2NyaXB0UGFpcnMKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
TWF0aE11bHRpc2NyaXB0UGFpcnMgcGFpcnM7CisgICAgbV9vYmplY3QtPm1hdGhQcmVzY3JpcHRz
KHBhaXJzKTsKKyAgICByZXR1cm4gY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShwYWlycywgW3Nl
bGYgYWNjZXNzaWJpbGl0eVBsYXRmb3JtTWF0aFN1YnNjcmlwdEtleV0sIFtzZWxmIGFjY2Vzc2li
aWxpdHlQbGF0Zm9ybU1hdGhTdXBlcnNjcmlwdEtleV0pOworfQorCiAvLyBUaGlzIGlzIHNldCBi
eSBEUlQgd2hlbiBpdCB3YW50cyB0byBsaXN0ZW4gZm9yIG5vdGlmaWNhdGlvbnMuCiBzdGF0aWMg
Qk9PTCBhY2Nlc3NpYmlsaXR5U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczsKICsgKHZvaWQpYWNj
ZXNzaWJpbGl0eVNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM6KEJPT0wpcmVwb3N0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTQ5NjAw
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsOCBAQAogI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZSBAIkFYTWF0aEZlbmNl
ZE9wZW4iCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9zZUF0dHJpYnV0ZSBA
IkFYTWF0aEZlbmNlZENsb3NlIgogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoTGluZVRoaWNr
bmVzc0F0dHJpYnV0ZSBAIkFYTWF0aExpbmVUaGlja25lc3MiCisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eU1hdGhQcmVzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUHJlc2NyaXB0cyIKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUG9zdHNjcmlw
dHMiCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcgogCkBA
IC0xMDQyLDYgKzEwNDQsMTAgQEAKICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc01hdGhGZW5j
ZWQoKSkgewogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0
aEZlbmNlZE9wZW5BdHRyaWJ1dGVdOwogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlXTsKKyAgICB9IGVsc2UgaWYgKG1f
b2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdCgpKSB7CisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoQmFzZUF0dHJpYnV0ZV07CisgICAgICAgIFthZGRpdGlv
bmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c0F0dHJpYnV0ZV07Cisg
ICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlw
dHNBdHRyaWJ1dGVdOwogICAgIH0KICAgICAKICAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzUGF0
aCgpKQpAQCAtMTg1NSw2ICsxODYxLDggQEAKICAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aFNl
cGFyYXRvck9wZXJhdG9yIjsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhPcGVyYXRvcigp
KQogICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoT3BlcmF0b3IiOworICAgICAgICBpZiAobV9v
YmplY3QtPmlzTWF0aE11bHRpc2NyaXB0KCkpCisgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhN
dWx0aXNjcmlwdCI7CiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVjdC0+aXNNZWRpYVRpbWVs
aW5lKCkpCkBAIC0yNzA4LDYgKzI3MTYsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBtX29iamVj
dC0+bWF0aEZlbmNlZENsb3NlU3RyaW5nKCk7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aExpbmVUaGlja25lc3NBdHRyaWJ1dGVd
KQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjptX29iamVj
dC0+bWF0aExpbmVUaGlja25lc3MoKV07CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzQXR0cmlidXRlXSkKKyAg
ICAgICAgICAgIHJldHVybiBbc2VsZiBhY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRQYWlyc107
CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5TWF0aFByZXNjcmlwdHNBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFj
Y2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnNdOwogICAgIH0KICAgICAKICAgICAvLyB0aGlz
IGlzIHVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSBmb3IgdGVzdGluZwpAQCAtMjc0MSw2ICsy
NzUzLDE2IEBACiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmls
aXR5UGxhdGZvcm1NYXRoU3Vic2NyaXB0S2V5Cit7CisgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eU1hdGhTdWJzY3JpcHRBdHRyaWJ1dGU7Cit9CisKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0
eVBsYXRmb3JtTWF0aFN1cGVyc2NyaXB0S2V5Cit7CisgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eU1hdGhTdXBlcnNjcmlwdEF0dHJpYnV0ZTsKK30KKwogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3Vz
ZWRVSUVsZW1lbnQKIHsKICAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCShyZXZpc2lvbiAxNDk2MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDYg
KzIyLDkgQEAKIG10YWJsZSBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQKIG10ciBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQKIG10ZCBpbnRlcmZhY2VOYW1lPU1h
dGhNTEVsZW1lbnQKK21tdWx0aXNjcmlwdHMgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50CittcHJlc2NyaXB0cyBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQKK25v
bmUgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50CiAKICNpZiAwIC8vIEN1cmVudGx5IG9ubHkg
Zm9yIE1hdGhNTE5hbWVzIHVzZWQgYnkgSFRNTFRyZWVCdWlsZGVyLgogbXMKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTYw
MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisy
MDEzLTA1LTA2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IE1hdGhNTCBtdWx0aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhv
ZHMgdG8gaGVscCBvdXRwdXQgY29tcG9uZW50cyBvZiBtYXRoIG11bHRpc2NyaXB0cyBmb3IgYWNj
ZXNzaWJpbGl0eS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwOgorICAgICAgICAobWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb25DYWxsYmFjayk6
CisgICAgICAgIChtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW06CisgICAgICAgIChjb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmlu
Zyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNj
cmlwdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0
c0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpfY29udmVydE1hdGhNdWx0
aXNjcmlwdFBhaXJzVG9TdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOgorCiAyMDEzLTA1LTA2
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCB0d28gZmls
ZXMgSSBuZWdsZWN0ZWQgdG8gY29tbWl0IGluIHIxNDk1ODkuCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0OTYwMCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MSw2ICsxODEsOCBAQAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCkgeyBy
ZXR1cm4gMDsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlKCkgeyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlw
dGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogI2VuZGlmCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMSw2ICsyMzEsOCBAQAogCiAgICAgLy8gUmV0dXJucyBhbiBv
cmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFuIGVsZW1lbnQuCiAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKKyAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gbWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdDsK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigp
IGNvbnN0OwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhdGhEZXNjcmlwdGlvbigp
IGNvbnN0OwogICAgIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAKIAogICAgIC8vIFJldHVybnMgYW4gb3JkZXJl
ZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVtZW50LgogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgc3VwcG9ydGVkQWN0aW9uczsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uOworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbjsKIAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aERlc2NyaXB0aW9uOwogICAgIApJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAxNDk2
MDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDYgKzE0ODcsMzcg
QEAKICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogfQogCitzdGF0aWMgTlNTdHJpbmcg
Kl9jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhOU0FycmF5ICpwYWlycykKK3sK
KyAgICBfX2Jsb2NrIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBz
dHJpbmddOworICAgIFtwYWlycyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIHBhaXIs
IE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgZm9yIChOU1N0cmluZyAq
a2V5IGluIHBhaXIpCisgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIlx0JWx1LiAl
QCA9ICVAXG4iLCAodW5zaWduZWQgbG9uZylpbmRleCwga2V5LCBbW3BhaXIgb2JqZWN0Rm9yS2V5
OmtleV0gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVN1YnJvbGVB
dHRyaWJ1dGVdXTsKKyAgICB9XTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0
c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhNYXRoUG9zdHNjcmlwdHMiXTsKKyAgICByZXR1cm4gW19jb252ZXJ0TWF0aE11
bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWlycykgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVz
Y3JpcHRpb24oKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5T
QXJyYXkgKnBhaXJzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WE1hdGhQcmVzY3JpcHRzIl07CisgICAgcmV0dXJuIFtfY29udmVydE1hdGhNdWx0aXNjcmlwdFBh
aXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDk2MDApCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA3Niw2ICsxMDc2LDE5IEBACiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHZhbHVlU3RyaW5nKEFkb3B0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+c3VwcG9ydGVk
QWN0aW9ucygpKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdmFsdWVT
dHJpbmcuZ2V0KCkpOwogfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBtYXRoUG9zdHNjcmlwdHNEZXNj
cmlwdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVTdHJpbmcoQWRvcHQsIHRvQVhFbGVt
ZW50KHRoaXNPYmplY3QpLT5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdmFsdWVTdHJpbmcuZ2V0KCkpOworfQorCitz
dGF0aWMgSlNWYWx1ZVJlZiBtYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiB2YWx1ZVN0cmluZyhBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPm1hdGhQ
cmVzY3JpcHRzRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNv
bnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsKK30KKwogI2VuZGlmCiAKIC8vIEltcGxlbWVudGF0
aW9uCkBAIC0xMjYyLDYgKzEyNzUsOCBAQAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICNpZiBQ
TEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgICAgIHsgInN1cHBvcnRlZEFjdGlv
bnMiLCBzdXBwb3J0ZWRBY3Rpb25zQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAibWF0
aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24iLCBtYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbkNhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24iLCBt
YXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICNlbmRpZgogICAg
ICAgICB7IDAsIDAsIDAsIDAgfQogICAgIH07CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAxNDk2MDApCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1OSw2ICsyNTksMTAgQEAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAg
ICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFu
IGVsZW1lbnQuCiAgICAgSlNTdHJpbmdSZWYgc3VwcG9ydGVkQWN0aW9ucygpOworICAgIAorICAg
IC8vIEEgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiB0aGUgZWxlbWVudHMgbWFraW5nIHVwIG11bHRp
c2NyaXB0IHByZS9wb3N0IG9iamVjdHMuCisgICAgSlNTdHJpbmdSZWYgbWF0aFBvc3RzY3JpcHRz
RGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBKU1N0cmluZ1JlZiBtYXRoUHJlc2NyaXB0c0Rlc2Ny
aXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYKICAgICAKIHByaXZhdGU6CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQko
cmV2aXNpb24gMTQ5NjAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MjEsNiArMTUyMSwzOCBAQAog
ICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKmNvbnZlcnRNYXRoTXVsdGlzY3Jp
cHRQYWlyc1RvU3RyaW5nKE5TQXJyYXkgKnBhaXJzKQoreworICAgIF9fYmxvY2sgTlNNdXRhYmxl
U3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgW3BhaXJzIGVu
dW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oaWQgcGFpciwgTlNVSW50ZWdlciBpbmRleCwgQk9P
TCAqc3RvcCkgeworICAgICAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gcGFpcikKKyAgICAgICAg
ICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiXHQlbHUuICVAID0gJUBcbiIsICh1bnNpZ25lZCBs
b25nKWluZGV4LCBrZXksIFtbcGFpciBvYmplY3RGb3JLZXk6a2V5XSBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV1dOworICAgIH1dOwor
ICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUG9zdHNjcmlwdHMiXTsKKyAgICByZXR1
cm4gW2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBhaXJzKSBjcmVhdGVKU1N0
cmluZ1JlZl07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiAw
OworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0
c0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhNYXRoUHJlc2NyaXB0cyJdOworICAgIHJldHVybiBbY29udmVydE1hdGhNdWx0aXNjcmlw
dFBhaXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKKwogdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTYwMCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA1LTA2ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IE1hdGhNTCBt
dWx0aXNjcmlwdHMgbm90IGV4cG9zZWQgaW4gQWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9tYXRobWwtbXVsdGlzY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtbXVsdGlzY3JpcHQuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDUtMDYgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUyBFeGNsdXNpb25zXSBzaGFwZS1pbnNpZGUgcm91bmRlZCByZWN0YW5nbGUgdGVzdHMg
ZmFpbCB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBkaXNhYmxlZApJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9t
YXRobWwtbXVsdGlzY3JpcHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWF0aG1sLW11bHRpc2NyaXB0LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACitBIDEgMiAgCitBIDEgMiAzICAK
K0EgNCA1ICAKK0EgNCA1IDYgIAorQSAxIDIgMyA0IDUgNiAgCitBICAKK0EgMSAzIDUgNgorVGhp
cyB0ZXN0cyBjaGVja3MgdGhhdCBtbXVsdGlzY3JpcHQgdGFncyB3aWxsIGNyZWF0ZSB0aGUgY29y
cmVjdCBhY2Nlc3NpYmlsaXR5IG1hdGggaGllcmFyY2h5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBtc2NyaXB0LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mg
bXNjcmlwdC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYTWF0aE11bHRpc2NyaXB0JworCitDaGVj
ayBtdWx0aXNjcmlwdCB3aXRoIG9uZSBwb3N0LXNjcmlwdCBwYWlyCitQb3N0c2NyaXB0czoKKwkw
LiBBWE1hdGhTdXBlcnNjcmlwdCA9IEFYTWF0aElkZW50aWZpZXIKKwkwLiBBWE1hdGhTdWJzY3Jp
cHQgPSBBWE1hdGhOdW1iZXIKKworUHJlc2NyaXB0czoKKworCitDaGVjayBtdWx0aXNjcmlwdCB3
aXRoIG9kZCBudW1iZXIgb2YgcG9zdC1zY3JpcHQgcGFpcnMKK1Bvc3RzY3JpcHRzOgorCTAuIEFY
TWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9
IEFYTWF0aE51bWJlcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVz
Y3JpcHRzOgorCisKK0NoZWNrIG11bHRpc2NyaXB0IHdpdGggYSBwcmVzY3JpcHQgcGFpcgorUG9z
dHNjcmlwdHM6CisKK1ByZXNjcmlwdHM6CisJMC4gQVhNYXRoU3VwZXJzY3JpcHQgPSBBWE1hdGhJ
ZGVudGlmaWVyCisJMC4gQVhNYXRoU3Vic2NyaXB0ID0gQVhNYXRoTnVtYmVyCisKKworQ2hlY2sg
bXVsdGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHByZS1zY3JpcHQgcGFpcnMKK1Bvc3RzY3Jp
cHRzOgorCitQcmVzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRp
ZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCTEuIEFYTWF0aFN1YnNj
cmlwdCA9IEFYTWF0aE51bWJlcgorCisKK0NoZWNrIG11bHRpc2NyaXB0IHdpdGggcHJlIGFuZCBw
b3N0IHNjcmlwdCBwYWlycy4KK1Bvc3RzY3JpcHRzOgorCTAuIEFYTWF0aFN1cGVyc2NyaXB0ID0g
QVhNYXRoSWRlbnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCTEu
IEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCitQcmVzY3JpcHRzOgorCTAuIEFYTWF0
aFN1cGVyc2NyaXB0ID0gQVhNYXRoSWRlbnRpZmllcgorCTAuIEFYTWF0aFN1YnNjcmlwdCA9IEFY
TWF0aE51bWJlcgorCTEuIEFYTWF0aFN1YnNjcmlwdCA9IEFYTWF0aE51bWJlcgorCisKK0NoZWNr
IG11bHRpc2NyaXB0IHdpdGggbm8gcHJlc2NyaXB0IG9yIHBvc3RzY3JpcHQgcGFpcnMuCitQb3N0
c2NyaXB0czoKKworUHJlc2NyaXB0czoKKworCitDaGVjayBtdWx0aXNjcmlwdCB3aXRoICdub25l
JyB0YWdzLgorUG9zdHNjcmlwdHM6CisJMC4gQVhNYXRoU3Vic2NyaXB0ID0gQVhNYXRoTnVtYmVy
CisJMS4gQVhNYXRoU3Vic2NyaXB0ID0gQVhNYXRoTnVtYmVyCisKK1ByZXNjcmlwdHM6CisJMC4g
QVhNYXRoU3VwZXJzY3JpcHQgPSBBWE1hdGhJZGVudGlmaWVyCisJMS4gQVhNYXRoU3Vic2NyaXB0
ID0gQVhNYXRoTnVtYmVyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9tYXRobWwtbXVsdGlzY3JpcHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYXRobWwtbXVsdGlzY3JpcHQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hdGhtbC1tdWx0
aXNjcmlwdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACis8IURPQ1RZUEUg
SFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGgg
b25lIHBvc3Qtc2NyaXB0IHBhaXIgLS0+Cis8bWF0aCBpZD0ibXNjcmlwdDEiPgorPG1tdWx0aXNj
cmlwdHM+CisgIDxtaT4gQSA8L21pPgorICA8bW4+IDEgPC9tbj4KKyAgPG1pPiAyIDwvbWk+Cis8
L21tdWx0aXNjcmlwdHM+Cis8L21hdGg+CisKKzwhLS0gbXVsdGlzY3JpcHQgd2l0aCB0d28gcG9z
dC1zY3JpcHQgcGFpcnMsIG9uZSB3aXRoIGFuIG9kZCBudW1iZXIgLS0+Cis8bWF0aCBpZD0ibXNj
cmlwdDIiPgorPG1tdWx0aXNjcmlwdHM+CisgIDxtaT4gQSA8L21pPgorICA8bW4+IDEgPC9tbj4K
KyAgPG1pPiAyIDwvbWk+CisgIDxtbj4gMyA8L21uPgorPC9tbXVsdGlzY3JpcHRzPgorPC9tYXRo
PgorCis8IS0tIG11bHRpc2NyaXB0IHdpdGggb25lIHByZS1zY3JpcHQgcGFpciAtLT4KKzxtYXRo
IGlkPSJtc2NyaXB0MyI+Cis8bW11bHRpc2NyaXB0cz4KKyAgPG1pPiBBIDwvbWk+CisgIDxtcHJl
c2NyaXB0cy8+CisgIDxtbj4gNCA8L21uPgorICA8bWk+IDUgPC9taT4KKzwvbW11bHRpc2NyaXB0
cz4KKzwvbWF0aD4KKworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIHR3byBwcmUtc2NyaXB0IHBhaXJz
LCBvbmUgd2l0aCBhbiBvZGQgbnVtYmVyIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQ0Ij4KKzxtbXVs
dGlzY3JpcHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1wcmVzY3JpcHRzLz4KKyAgPG1uPiA0IDwv
bW4+CisgIDxtaT4gNSA8L21pPgorICA8bW4+IDYgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwv
bWF0aD4KKworPCEtLSBtdWx0aXNjcmlwdCB3aXRoIHBvc3Qtc2NyaXB0IGFuZCBwcmUtc2NyaXB0
IHBhaXJzIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQ1Ij4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+
IEEgPC9taT4KKyAgPG1uPiAxIDwvbW4+CisgIDxtaT4gMiA8L21pPgorICA8bW4+IDMgPC9tbj4K
KyAgPG1wcmVzY3JpcHRzLz4KKyAgPG1uPiA0IDwvbW4+CisgIDxtaT4gNSA8L21pPgorICA8bW4+
IDYgPC9tbj4KKzwvbW11bHRpc2NyaXB0cz4KKzwvbWF0aD4KKworPCEtLSBtdWx0aXNjcmlwdCBu
byBwb3N0LXNjcmlwdCBvciBwcmUtc2NyaXB0IHBhaXJzIC0tPgorPG1hdGggaWQ9Im1zY3JpcHQ2
Ij4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+IEEgPC9taT4KKzwvbW11bHRpc2NyaXB0cz4KKzwv
bWF0aD4KKworPCEtLSBtdWx0aXNjcmlwdCB1c2luZyA8bm9uZT4gdGFnIC0tPgorPG1hdGggaWQ9
Im1zY3JpcHQ3Ij4KKzxtbXVsdGlzY3JpcHRzPgorICA8bWk+IEEgPC9taT4KKyAgPG1uPiAxIDwv
bW4+CisgIDxub25lLz4KKyAgPG1uPiAzIDwvbW4+CisgIDxtcHJlc2NyaXB0cy8+CisgIDxub25l
Lz4KKyAgPG1pPiA1IDwvbWk+CisgIDxtbj4gNiA8L21uPgorPC9tbXVsdGlzY3JpcHRzPgorPC9t
YXRoPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIGNoZWNrcyB0aGF0IG1tdWx0aXNjcmlwdCB0YWdzIHdpbGwgY3JlYXRlIHRo
ZSBjb3JyZWN0IGFjY2Vzc2liaWxpdHkgbWF0aCBoaWVyYXJjaHkuIikKKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICB2YXIg
bXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
bXNjcmlwdDEiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBzaG91bGRCZSgibXNjcmlwdC5yb2xlIiwg
IidBWFJvbGU6IEFYR3JvdXAnIik7CisgICBzaG91bGRCZSgibXNjcmlwdC5zdWJyb2xlIiwgIidB
WFN1YnJvbGU6IEFYTWF0aE11bHRpc2NyaXB0JyIpOworICAgZGVidWcoIlxuQ2hlY2sgbXVsdGlz
Y3JpcHQgd2l0aCBvbmUgcG9zdC1zY3JpcHQgcGFpciIpOworICAgZGVidWcoIlBvc3RzY3JpcHRz
OlxuIiArIG1zY3JpcHQubWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24pOworICAgZGVidWcoIlBy
ZXNjcmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKTsKKworICAg
ZGVidWcoIlxuQ2hlY2sgbXVsdGlzY3JpcHQgd2l0aCBvZGQgbnVtYmVyIG9mIHBvc3Qtc2NyaXB0
IHBhaXJzIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJtc2NyaXB0MiIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIGRlYnVnKCJQb3N0
c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAgIGRl
YnVnKCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik7
CisKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggYSBwcmVzY3JpcHQgcGFpciIp
OworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgibXNjcmlwdDMiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNjcmlwdHM6
XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1ZygiUHJl
c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOworCisgICBk
ZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIG9kZCBudW1iZXIgb2YgcHJlLXNjcmlwdCBw
YWlycyIpOworICAgbXNjcmlwdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibXNjcmlwdDQiKS5jaGlsZEF0SW5kZXgoMCk7CisgICBkZWJ1ZygiUG9zdHNj
cmlwdHM6XG4iICsgbXNjcmlwdC5tYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik7CisgICBkZWJ1
ZygiUHJlc2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24pOwor
CisgICBkZWJ1ZygiXG5DaGVjayBtdWx0aXNjcmlwdCB3aXRoIHByZSBhbmQgcG9zdCBzY3JpcHQg
cGFpcnMuIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJtc2NyaXB0NSIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIGRlYnVnKCJQb3N0
c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAgIGRl
YnVnKCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik7
CisKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggbm8gcHJlc2NyaXB0IG9yIHBv
c3RzY3JpcHQgcGFpcnMuIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtc2NyaXB0NiIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIGRl
YnVnKCJQb3N0c2NyaXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9u
KTsKKyAgIGRlYnVnKCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNj
cmlwdGlvbik7CisKKyAgIGRlYnVnKCJcbkNoZWNrIG11bHRpc2NyaXB0IHdpdGggJ25vbmUnIHRh
Z3MuIik7CisgICBtc2NyaXB0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJtc2NyaXB0NyIpLmNoaWxkQXRJbmRleCgwKTsKKyAgIGRlYnVnKCJQb3N0c2Ny
aXB0czpcbiIgKyBtc2NyaXB0Lm1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKTsKKyAgIGRlYnVn
KCJQcmVzY3JpcHRzOlxuIiArIG1zY3JpcHQubWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbik7Cit9
CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="222207"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>