<?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>83426</bug_id>
          
          <creation_ts>2012-04-07 11:27:06 -0700</creation_ts>
          <short_desc>Don&apos;t expose internal CSSValues in API</short_desc>
          <delta_ts>2012-04-11 20:53:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77745</blocked>
    
    <blocked>83540</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597988</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-07 11:27:06 -0700</bug_when>
    <thetext>The CSSValues returned from functions like CSSStyleDeclaration.getPropertyCSSValue() are currently the same instances we use internally. This creates various problems. The values can&apos;t be shared between documents as the wrappers would be shared too. Having to maintain per-document CSSValuePools complicate the architecture and increase memory usage. This also prevents sharing style sheet data structures between documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597991</commentid>
    <comment_count>1</comment_count>
      <attachid>136135</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-07 11:45:23 -0700</bug_when>
    <thetext>Created attachment 136135
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597992</commentid>
    <comment_count>2</comment_count>
      <attachid>136136</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-07 11:57:50 -0700</bug_when>
    <thetext>Created attachment 136136
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597993</commentid>
    <comment_count>3</comment_count>
      <attachid>136136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-07 12:11:09 -0700</bug_when>
    <thetext>Comment on attachment 136136
rebased

Attachment 136136 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12362468</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597994</commentid>
    <comment_count>4</comment_count>
      <attachid>136136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-07 12:13:28 -0700</bug_when>
    <thetext>Comment on attachment 136136
rebased

Attachment 136136 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12364444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597998</commentid>
    <comment_count>5</comment_count>
      <attachid>136136</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-07 12:35:11 -0700</bug_when>
    <thetext>Comment on attachment 136136
rebased

Attachment 136136 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12358494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597999</commentid>
    <comment_count>6</comment_count>
      <attachid>136137</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-07 12:41:58 -0700</bug_when>
    <thetext>Created attachment 136137
try to fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598005</commentid>
    <comment_count>7</comment_count>
      <attachid>136137</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-07 13:06:21 -0700</bug_when>
    <thetext>Comment on attachment 136137
try to fix build

Attachment 136137 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12367042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598008</commentid>
    <comment_count>8</comment_count>
      <attachid>136137</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-07 14:13:10 -0700</bug_when>
    <thetext>Comment on attachment 136137
try to fix build

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

Very cool. r=me.
(Though you&apos;ll need to do something about the win failure.)

&gt; Source/WebCore/css/CSSImageSetValue.cpp:146
&gt; +    // Non-CSSValueList data is not accesible through CSS OM, no need to clone.

Typo accessible.

&gt; Source/WebCore/css/CSSValue.h:38
&gt; +// Please don&apos;t expose more CSSValue types to the web.

Hear hear. Perhaps we could even get rid of WebKitCSSTransformValue.idl and WebKitCSSFilterValue.idl.

&gt; Source/WebCore/css/RGBColor.cpp:42
&gt; +    // Unique instances are safe.

Don&apos;t think this comment is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598010</commentid>
    <comment_count>9</comment_count>
      <attachid>136140</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-07 14:28:49 -0700</bug_when>
    <thetext>Created attachment 136140
try to fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598205</commentid>
    <comment_count>10</comment_count>
      <attachid>136140</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 03:03:50 -0700</bug_when>
    <thetext>Comment on attachment 136140
try to fix win build

Rejecting attachment 136140 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12372107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598361</commentid>
    <comment_count>11</comment_count>
      <attachid>136140</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 10:01:26 -0700</bug_when>
    <thetext>Comment on attachment 136140
try to fix win build

Clearing flags on attachment: 136140

Committed r113588: &lt;http://trac.webkit.org/changeset/113588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598362</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 10:01:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598797</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-09 17:37:40 -0700</bug_when>
    <thetext>It seems like this patch regressed some perf. tests:
http://webkit-perf.appspot.com/graph.html#tests=[[314224,2001,32196]]&amp;sel=1333978732699.9312,1334010760286.138,1137.9310344827586,1896.5517241379312&amp;displayrange=7&amp;datatype=running</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136135</attachid>
            <date>2012-04-07 11:45:23 -0700</date>
            <delta_ts>2012-04-07 11:57:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cssvalue-clone-1.patch</filename>
            <type>text/plain</type>
            <size>36612</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMSBAQAorMjAxMi0wNC0wNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgZXhwb3NlIGludGVy
bmFsIENTU1ZhbHVlcyBpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNDI2CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTVmFsdWVzIHJldHVybmVkIGZyb20gZnVuY3Rpb25z
IGxpa2UgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgYXJlIGN1cnJl
bnRseQorICAgICAgICB0aGUgc2FtZSBpbnN0YW5jZXMgd2UgdXNlIGludGVybmFsbHkuIFRoaXMg
Y3JlYXRlcyB2YXJpb3VzIHByb2JsZW1zLiBUaGUgdmFsdWVzIGNhbid0IGJlIHNoYXJlZCBiZXR3
ZWVuIAorICAgICAgICBkb2N1bWVudHMgYXMgdGhlIHdyYXBwZXJzIHdvdWxkIGJlIHNoYXJlZCB0
b28uIEhhdmluZyB0byBtYWludGFpbiBwZXItZG9jdW1lbnQgQ1NTVmFsdWVQb29scyBjb21wbGlj
YXRlIAorICAgICAgICB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBpbmNyZWFzZSBtZW1vcnkgdXNhZ2Uu
IFRoaXMgYWxzbyBibG9ja3Mgc2hhcmluZyBzdHlsZSBzaGVldCBkYXRhIHN0cnVjdHVyZXMgCisg
ICAgICAgIGJldHdlZW4gZG9jdW1lbnRzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgY29uY2VwdCBvZiBDU1NPTS1zYWZlIENTU1ZhbHVlLiBPbmx5IHRoZSBzYWZlIHZhbHVl
cyBjYW4gYmUgd3JhcHBlZCBmb3IgSlMgYWNjZXNzLiAKKyAgICAgICAgVmFsdWVzIGFyZSB1bnNh
ZmUgYnkgZGVmYXVsdC4gVGhlIENTU09NIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBDU1NWYWx1ZXMg
Y3JlYXRlIHNhZmUgaW5zdGFuY2VzIGJ5CisgICAgICAgIGNsb25pbmcgdGhlIGludGVybmFsIHZh
bHVlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSB1c2Ugb2YgQVBJcyB0aGF0IHJldHVybiBDU1NW
YWx1ZXMgaXMgdmVyeSByYXJlICh0aGUgY3VycmVjdCBDU1NPTSBkcmFmdCBkZXByZWNhdGVzIHRo
ZW0pIGFuZAorICAgICAgICBjbG9uaW5nIGlzIGNoZWFwIGluIGFueSBjYXNlLiBGdXR1cmUgcGF0
Y2hlcyB3aWxsIGVsaW1pbmF0ZSB0aGUgcGVyLWRvY3VtZW50IHZhbHVlIHBvb2wgaW4gZmF2b3IK
KyAgICAgICAgb2YgYSBnbG9iYWwgb25lIGZvciBhIG1lbW9yeSB3aW4uCisgICAgICAgIAorICAg
ICAgICBJbiB0aGUgZnV0dXJlIHdlIHdhbnQgdG8gcmVwbGFjZSBpbnRlcm5hbGx5IHVzZWQgQ1NT
VmFsdWVzIHdpdGggdHJ1ZSBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZXMpIGFuZAorICAgICAg
ICB1c2UgQ1NTVmFsdWVzIGV4Y2x1c2l2ZWx5IGFzIHdyYXBwZXJzIChzaW1pbGFyIHRvIGhvdyBD
U1NTdHlsZVJ1bGUgd3JhcHMgaW50ZXJuYWwgU3R5bGVSdWxlKS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdlU2V0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVl
OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAg
ICAgICAoQ1NTSW1hZ2VTZXRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAg
ICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OnNldENTU09NU2FmZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENsb25lQ1NTVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xv
bmVDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1
ZTo6VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAKKyAgICAgICAgICAgIE1vc3Qgbm9uLXBy
aW1pdGl2ZSB2YWx1ZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgaW4gQ1NTT00uIEZvciB0aG9zZSB3
ZSBjcmVhdGUgYSBkdW1teSB2YWx1ZQorICAgICAgICAgICAgdGhhdCBjb250YWlucyBvbmx5IHRo
ZSBkYXRhIHRoYXQgaXMgYWNjZXNzaWJsZSB0aG91Z2ggdGhlIGJhc2UgQ1NTVmFsdWUgaW50ZXJm
YWNlLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlOjppc0NTU09NU2FmZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNTdWJ0eXBl
RXhwb3NlZFRvQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OkNTU1ZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlTGlzdDo6Q1NTVmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVmFsdWVMaXN0OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVMaXN0Lmg6CisgICAgICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9Db3VudGVy
Lmg6CisgICAgICAgIChDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OmNsb25l
Rm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXRDc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZGlkTXV0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFu
ZENhY2hlRm9yQ1NTT00pOgorICAgICAgICAKKyAgICAgICAgICAgIE1haW50YWluIGEgbWFwIG9m
IHNhZmUgQ1NTVmFsdWVzIHNvIHdlIGNhbiBtYWludGFpbiBvYmplY3QgaWRlbnRpdHkuCisgICAg
ICAgIAorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNT
dHlsZVJlY2FsYyk6CisgICAgICAgIChQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24pOgor
ICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkNvbG9yOjpncmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpSR0JDb2xvcjo6Ymx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6YWxwaGEp
OgorICAgICAgICAqIGNzcy9SZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6UmVj
dEJhc2UpOgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAoUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Q6OlJl
Y3QpOgorICAgICAgICAoUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWFkOjpjbG9uZUZvckNT
U09NKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWQ6OlF1YWQpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJW
YWx1ZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAg
ICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NGaWx0ZXJW
YWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKToKKyAgICAg
ICAgKiBzdmcvU1ZHQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OlNWR0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OmNs
b25lRm9yQ1NTT00pOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgorICAgICAgICAoU1ZHQ29s
b3IpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YWludDo6U1ZHUGFpbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYWludDo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAg
ICAgIChTVkdQYWludCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KToKKwogMjAxMi0wNC0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbQ01ha2VdIENsZWFudXAgV1RGIGluY2x1ZGUgZGlyZWN0b3JpZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCShy
ZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVl
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOSBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogCisgICAgLy8gU2NyaXB0cyBzaG91bGQgb25seSBldmVyIHNlZSBjbG9u
ZWQgQ1NTVmFsdWVzLCBuZXZlciB0aGUgaW50ZXJuYWwgb25lcy4KKyAgICBBU1NFUlQodmFsdWUt
PmlzQ1NTT01TYWZlKCkpOworCiAgICAgSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIHZhbHVlKTsKIAogICAgIGlmICh3cmFwcGVyKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHJldmlzaW9uIDExMzQxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjU2LDcgKzI2NTYs
OCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUtPmNs
b25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0eU5hbWUpCkBAIC0yNjk2
LDcgKzI2OTcsOCBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vCiAg
ICAgCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0g
ICAgcmV0dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0
dXJuIHZhbHVlID8gdmFsdWUtPmNsb25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCShyZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsMTggQEAgU3RyaW5nIENT
U0ltYWdlU2V0VmFsdWU6OmN1c3RvbUNzc1RleHQoKQogICAgIHJldHVybiAiLXdlYmtpdC1pbWFn
ZS1zZXQoIiArIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOwogfQogCitDU1NJ
bWFnZVNldFZhbHVlOjpDU1NJbWFnZVNldFZhbHVlKGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNs
b25lRnJvbSkKKyAgICA6IENTU1ZhbHVlTGlzdChjbG9uZUZyb20pCisgICAgLCBtX2FjY2Vzc2Vk
QmVzdEZpdEltYWdlKGZhbHNlKQoreworICAgIC8vIE5vbi1DU1NWYWx1ZUxpc3QgZGF0YSBpcyBu
b3QgYWNjZXNpYmxlIHRocm91Z2ggQ1NTIE9NLCBubyBuZWVkIHRvIGNsb25lLgorfQorCitQYXNz
UmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+IENTU0ltYWdlU2V0VmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTSW1hZ2VTZXRWYWx1ZSgqdGhp
cykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAkocmV2
aXNpb24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3I7CiAgICAgfTsKIAorICAgIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VXaXRoU2NhbGUg
YmVzdEltYWdlRm9yU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIFN0eWxlQ2FjaGVkSW1hZ2VTZXQq
IGNhY2hlZEltYWdlU2V0KENhY2hlZFJlc291cmNlTG9hZGVyKiwgSW1hZ2VXaXRoU2NhbGUpOwog
CiBwcml2YXRlOgogICAgIENTU0ltYWdlU2V0VmFsdWUoKTsKKyAgICBDU1NJbWFnZVNldFZhbHVl
KGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNsb25lRnJvbSk7CiAKICAgICB2b2lkIGZpbGxJbWFn
ZVNldCgpOwogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQnlTY2FsZUZhY3RvcihJbWFn
ZVdpdGhTY2FsZSBmaXJzdCwgSW1hZ2VXaXRoU2NhbGUgc2Vjb25kKSB7IHJldHVybiBmaXJzdC5z
Y2FsZUZhY3RvciA8IHNlY29uZC5zY2FsZUZhY3RvcjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNDEg
KzMzMiw2OSBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6fkNTU1ByaW1pdGl2ZVZhbHVlKCkKIHZvaWQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXAoKQogewogICAgIHN3aXRjaCAobV9wcmltaXRpdmVV
bml0VHlwZSkgewotICAgICAgICBjYXNlIENTU19TVFJJTkc6Ci0gICAgICAgIGNhc2UgQ1NTX1VS
SToKLSAgICAgICAgY2FzZSBDU1NfQVRUUjoKLSAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENP
TE9SOgotICAgICAgICAgICAgaWYgKG1fdmFsdWUuc3RyaW5nKQotICAgICAgICAgICAgICAgIG1f
dmFsdWUuc3RyaW5nLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTX0NPVU5URVI6Ci0gICAgICAgICAgICBtX3ZhbHVlLmNvdW50ZXItPmRlcmVmKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfUkVDVDoKLSAgICAgICAgICAgIG1fdmFs
dWUucmVjdC0+ZGVyZWYoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19R
VUFEOgotICAgICAgICAgICAgbV92YWx1ZS5xdWFkLT5kZXJlZigpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICBtX3ZhbHVlLnBhaXItPmRl
cmVmKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19TVFJJTkc6CisgICAgY2Fz
ZSBDU1NfVVJJOgorICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1F
OgorICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyAgICAgICAgaWYgKG1fdmFsdWUuc3Ry
aW5nKQorICAgICAgICAgICAgbV92YWx1ZS5zdHJpbmctPmRlcmVmKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTX0NPVU5URVI6CisgICAgICAgIG1fdmFsdWUuY291bnRlci0+ZGVyZWYo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfUkVDVDoKKyAgICAgICAgbV92YWx1ZS5y
ZWN0LT5kZXJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAg
ICBtX3ZhbHVlLnF1YWQtPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1BB
SVI6CisgICAgICAgIG1fdmFsdWUucGFpci0+ZGVyZWYoKTsKKyAgICAgICAgYnJlYWs7CiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVH
SU9OOgotICAgICAgICAgICAgaWYgKG1fdmFsdWUucmVnaW9uKQotICAgICAgICAgICAgICAgIG1f
dmFsdWUucmVnaW9uLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1Nf
REFTSEJPQVJEX1JFR0lPTjoKKyAgICAgICAgaWYgKG1fdmFsdWUucmVnaW9uKQorICAgICAgICAg
ICAgbV92YWx1ZS5yZWdpb24tPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAg
ICAgIGNhc2UgQ1NTX0NBTEM6Ci0gICAgICAgICAgICBtX3ZhbHVlLmNhbGMtPmRlcmVmKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICBt
X3ZhbHVlLnNoYXBlLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICBtX3Zh
bHVlLmNhbGMtPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1NIQVBFOgor
ICAgICAgICBtX3ZhbHVlLnNoYXBlLT5kZXJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU19OVU1CRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6CisgICAgY2FzZSBDU1Nf
UEVSQ0VOVEFHRToKKyAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1NfRVhTOgorICAgIGNh
c2UgQ1NTX1JFTVM6CisgICAgY2FzZSBDU1NfUFg6CisgICAgY2FzZSBDU1NfQ006CisgICAgY2Fz
ZSBDU1NfTU06CisgICAgY2FzZSBDU1NfSU46CisgICAgY2FzZSBDU1NfUFQ6CisgICAgY2FzZSBD
U1NfUEM6CisgICAgY2FzZSBDU1NfREVHOgorICAgIGNhc2UgQ1NTX1JBRDoKKyAgICBjYXNlIENT
U19HUkFEOgorICAgIGNhc2UgQ1NTX01TOgorICAgIGNhc2UgQ1NTX1M6CisgICAgY2FzZSBDU1Nf
SFo6CisgICAgY2FzZSBDU1NfS0haOgorICAgIGNhc2UgQ1NTX1RVUk46CisgICAgY2FzZSBDU1Nf
Vlc6CisgICAgY2FzZSBDU1NfVkg6CisgICAgY2FzZSBDU1NfVk1JTjoKKyAgICBjYXNlIENTU19J
REVOVDoKKyAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICBjYXNlIENTU19ESU1FTlNJT046Cisg
ICAgY2FzZSBDU1NfVU5LTk9XTjoKKyAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6CisgICAg
Y2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGJyZWFrOwogICAgIH0KLQogICAg
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPSAwOwogICAgIGlmIChtX2hhc0NhY2hlZENTU1RleHQpIHsK
ICAgICAgICAgY3NzVGV4dENhY2hlKCkucmVtb3ZlKHRoaXMpOwpAQCAtMTA1OCw0ICsxMDg2LDg3
IEBAIExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6dmlld3BvcnRQZXJjZW4KICAgICByZXR1cm4g
dmlld3BvcnRMZW5ndGg7CiB9CiAKK1Bhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1By
aW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJlc3VsdDsKKworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkg
eworICAgIGNhc2UgQ1NTX1NUUklORzoKKyAgICBjYXNlIENTU19VUkk6CisgICAgY2FzZSBDU1Nf
QVRUUjoKKyAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CisgICAgICAgIHJlc3VsdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5zdHJpbmcsIHN0YXRpY19jYXN0PFVuaXRUeXBl
cz4obV9wcmltaXRpdmVVbml0VHlwZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19D
T1VOVEVSOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFs
dWUuY291bnRlci0+Y2xvbmVGb3JDU1NPTSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NfUkVDVDoKKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Zh
bHVlLnJlY3QtPmNsb25lRm9yQ1NTT00oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
X1FVQUQ6CisgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1
ZS5xdWFkLT5jbG9uZUZvckNTU09NKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19Q
QUlSOgorICAgICAgICAvLyBQYWlyIGlzIG5vdCBleHBvc2VkIHRvIHRoZSBDU1NPTSwgbm8gbmVl
ZCBmb3IgYSBkZWVwIGNsb25lLgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKG1fdmFsdWUucGFpcik7CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKKyAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOgorICAgICAgICAvLyBE
YXNoYm9hcmRSZWdpb24gaXMgbm90IGV4cG9zZWQgdG8gdGhlIENTU09NLCBubyBuZWVkIGZvciBh
IGRlZXAgY2xvbmUuCisgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
bV92YWx1ZS5yZWdpb24pOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTX0NB
TEM6CisgICAgICAgIC8vIENTU0NhbGNWYWx1ZSBpcyBub3QgZXhwb3NlZCB0byB0aGUgQ1NTT00s
IG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtX3ZhbHVlLmNhbGMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U19TSEFQRToKKyAgICAgICAgLy8gQ1NTU2hhcGVWYWx1ZSBpcyBub3QgZXhwb3NlZCB0byB0aGUg
Q1NTT00sIG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnNoYXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgorICAgIGNhc2Ug
Q1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NfRU1TOgorICAgIGNhc2UgQ1NTX0VYUzoKKyAg
ICBjYXNlIENTU19SRU1TOgorICAgIGNhc2UgQ1NTX1BYOgorICAgIGNhc2UgQ1NTX0NNOgorICAg
IGNhc2UgQ1NTX01NOgorICAgIGNhc2UgQ1NTX0lOOgorICAgIGNhc2UgQ1NTX1BUOgorICAgIGNh
c2UgQ1NTX1BDOgorICAgIGNhc2UgQ1NTX0RFRzoKKyAgICBjYXNlIENTU19SQUQ6CisgICAgY2Fz
ZSBDU1NfR1JBRDoKKyAgICBjYXNlIENTU19NUzoKKyAgICBjYXNlIENTU19TOgorICAgIGNhc2Ug
Q1NTX0haOgorICAgIGNhc2UgQ1NTX0tIWjoKKyAgICBjYXNlIENTU19UVVJOOgorICAgIGNhc2Ug
Q1NTX1ZXOgorICAgIGNhc2UgQ1NTX1ZIOgorICAgIGNhc2UgQ1NTX1ZNSU46CisgICAgICAgIHJl
c3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5udW0sIHN0YXRpY19jYXN0
PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU19JREVOVDoKKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIobV92YWx1ZS5pZGVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
X1JHQkNPTE9SOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29s
b3IobV92YWx1ZS5yZ2Jjb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0RJTUVO
U0lPTjoKKyAgICBjYXNlIENTU19VTktOT1dOOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRP
UjoKKyAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKKyAgICBjYXNlIENTU19QQVJTRVJf
SEVYQ09MT1I6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiAxMTM0MTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjc1LDYgKzI3NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgQ1NTU3R5bGVTaGVldCopOwogCiAgICAgTGVu
Z3RoIHZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpOworICAgIAorICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKKyAgICB2b2lkIHNldENTU09N
U2FmZSgpIHsgbV9pc0NTU09NU2FmZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKICAgICAvLyBGSVhN
RTogaW50IHZzLiB1bnNpZ25lZCBvdmVybG9hZGluZyBpcyB0b28gc3VidGxlIHRvIGRpc3Rpbmd1
aXNoIHRoZSBjb2xvciBhbmQgaWRlbnRpZmllciBjYXNlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMjMgQEAgY2xhc3MgU2FtZVNpemVBc0NT
U1ZhbHVlIDogcHVibGljIFJlZkNvdQogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENTU1Zh
bHVlKSA9PSBzaXplb2YoU2FtZVNpemVBc0NTU1ZhbHVlKSwgQ1NTX3ZhbHVlX3Nob3VsZF9zdGF5
X3NtYWxsKTsKKyAgICAKK2NsYXNzIFRleHRDbG9uZUNTU1ZhbHVlIDogcHVibGljIENTU1ZhbHVl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0Q2xvbmVDU1NWYWx1ZT4gY3Jl
YXRlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFRleHRDbG9uZUNTU1ZhbHVlKGNsYXNzVHlwZSwgdGV4dCkpOyB9CisKKyAgICBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzVGV4dDsgfQorCitwcml2YXRlOgor
ICAgIFRleHRDbG9uZUNTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCkgCisgICAgICAgIDogQ1NTVmFsdWUoY2xhc3NUeXBlLCAvKmlzQ1NTT01TYWZlKi8gdHJ1
ZSkKKyAgICAgICAgLCBtX2Nzc1RleHQodGV4dCkKKyAgICB7CisgICAgICAgIG1faXNUZXh0Q2xv
bmUgPSB0cnVlOworICAgIH0KKworICAgIFN0cmluZyBtX2Nzc1RleHQ7Cit9OwogCiBib29sIENT
U1ZhbHVlOjppc0ltcGxpY2l0SW5pdGlhbFZhbHVlKCkgY29uc3QKIHsKQEAgLTg0LDYgKzEwMSw5
IEBAIENTU1ZhbHVlOjpUeXBlIENTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUoKSAKIAogdm9pZCBDU1NW
YWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNv
bnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7CisgICAgLy8gVGhpcyBzaG91bGQgZ2V0
IGNhbGxlZCBmb3IgaW50ZXJuYWwgaW5zdGFuY2VzIG9ubHkuCisgICAgQVNTRVJUKCFpc0NTU09N
U2FmZSgpKTsKKwogICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odGhpcyktPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVy
bHMsIHN0eWxlU2hlZXQpOwogICAgIGVsc2UgaWYgKGlzVmFsdWVMaXN0KCkpCkBAIC05Niw2ICsx
MTYsMTIgQEAgdm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTAogCiBTdHJp
bmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogeworICAgIGlmIChtX2lzVGV4dENsb25lKSB7
CisgICAgICAgICBBU1NFUlQoaXNDU1NPTVNhZmUoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBUZXh0Q2xvbmVDU1NWYWx1ZSo+KHRoaXMpLT5jc3NUZXh0KCk7CisgICAgfQor
ICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSB8fCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpKTsK
KwogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNlIEFzcGVjdFJhdGlvQ2xhc3M6
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NBc3BlY3RSYXRpb1ZhbHVlKj4o
dGhpcyktPmN1c3RvbUNzc1RleHQoKTsKQEAgLTE3Miw2ICsxOTgsMTMgQEAgU3RyaW5nIENTU1Zh
bHVlOjpjc3NUZXh0KCkgY29uc3QKIAogdm9pZCBDU1NWYWx1ZTo6ZGVzdHJveSgpCiB7CisgICAg
aWYgKG1faXNUZXh0Q2xvbmUpIHsKKyAgICAgICAgQVNTRVJUKGlzQ1NTT01TYWZlKCkpOworICAg
ICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VGV4dENsb25lQ1NTVmFsdWUqPih0aGlzKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkgfHwgaXNTdWJ0eXBl
RXhwb3NlZFRvQ1NTT00oKSk7CisKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBc3BlY3RSYXRpb0NsYXNzOgogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Q1NTQXNwZWN0
UmF0aW9WYWx1ZSo+KHRoaXMpOwpAQCAtMjc1LDQgKzMwOCwzMyBAQCB2b2lkIENTU1ZhbHVlOjpk
ZXN0cm95KCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAoreworICAgIHN3aXRjaCAoY2xh
c3NUeXBlKCkpIHsKKyAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqPih0aGlzKS0+Y2xvbmVGb3JDU1NPTSgp
OworICAgIGNhc2UgVmFsdWVMaXN0Q2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBDU1NWYWx1ZUxpc3QqPih0aGlzKS0+Y2xvbmVGb3JDU1NPTSgpOworI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKKyAgICBjYXNlIFdlYktpdENTU0ZpbHRlckNsYXNzOgorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUqPih0aGlzKS0+Y2xvbmVG
b3JDU1NPTSgpOworI2VuZGlmCisgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1DbGFzczoKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKj4o
dGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICBj
YXNlIEltYWdlU2V0Q2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NJ
bWFnZVNldFZhbHVlKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyNlbmRpZgorI2lmIEVOQUJM
RShTVkcpCisgICAgY2FzZSBTVkdDb2xvckNsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgU1ZHQ29sb3IqPih0aGlzKS0+Y2xvbmVGb3JDU1NPTSgpOworICAgIGNhc2UgU1ZH
UGFpbnRDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNWR1BhaW50Kj4o
dGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVCghaXNTdWJ0eXBlRXhwb3NlZFRvQ1NTT00oKSk7CisgICAgICAgIHJldHVybiBUZXh0Q2xv
bmVDU1NWYWx1ZTo6Y3JlYXRlKGNsYXNzVHlwZSgpLCBjc3NUZXh0KCkpOworICAgIH0KK30KKwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHJldmlzaW9uIDExMzQxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAj
aWZuZGVmIENTU1ZhbHVlX2gKICNkZWZpbmUgQ1NTVmFsdWVfaAogCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTI5LDkgKzMwLDEyIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CisgICAgCisvLyBGSVhN
RTogVGhlIGN1cnJlbnQgQ1NTVmFsdWUgYW5kIHN1YmNsYXNzZXMgc2hvdWxkIGJlIHR1cm5lZCBp
bnRvIGludGVybmFsIHR5cGVzIChTdHlsZVZhbHVlKS4KKy8vIFRoZSBmZXcgc3VidHlwZXMgdGhh
dCBhcmUgYWN0dWFsbHkgZXhwb3NlZCBpbiBDU1NPTSBjYW4gYmUgc2VlbiBpbiB0aGUgY2xvbmVG
b3JDU1NPTSgpIGZ1bmN0aW9uLgorLy8gVGhleSBzaG91bGQgYmUgaGFuZGxlZCBieSBzZXBhcmF0
ZSB3cmFwcGVyIGNsYXNzZXMuCiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KKy8vIFBs
ZWFzZSBkb24ndCBleHBvc2UgbW9yZSBDU1NWYWx1ZSB0eXBlcyB0byB0aGUgd2ViLgogY2xhc3Mg
Q1NTVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NWYWx1ZT4gewogcHVibGljOgogICAgIGVu
dW0gVHlwZSB7CkBAIC05MCw2ICs5NCwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NWR0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gU1ZHQ29sb3JDbGFzcyB8fCBtX2NsYXNz
VHlwZSA9PSBTVkdQYWludENsYXNzOyB9CiAgICAgYm9vbCBpc1NWR1BhaW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc1R5cGUgPT0gU1ZHUGFpbnRDbGFzczsgfQogI2VuZGlmCisgICAgCisgICAg
Ym9vbCBpc0NTU09NU2FmZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1NPTVNhZmU7IH0KKyAgICBi
b29sIGlzU3VidHlwZUV4cG9zZWRUb0NTU09NKCkgY29uc3QKKyAgICB7IAorICAgICAgICByZXR1
cm4gaXNQcmltaXRpdmVWYWx1ZSgpIAorI2lmIEVOQUJMRShTVkcpCisgICAgICAgICAgICB8fCBp
c1NWR0NvbG9yKCkKKyNlbmRpZgorICAgICAgICAgICAgfHwgaXNWYWx1ZUxpc3QoKTsKKyAgICB9
CisKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKICAg
ICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3Qg
Q1NTU3R5bGVTaGVldCopOwogCkBAIC0xNTksOCArMTc1LDEwIEBAIHByb3RlY3RlZDoKIAogICAg
IENsYXNzVHlwZSBjbGFzc1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDbGFzc1R5
cGU+KG1fY2xhc3NUeXBlKTsgfQogCi0gICAgZXhwbGljaXQgQ1NTVmFsdWUoQ2xhc3NUeXBlIGNs
YXNzVHlwZSkKLSAgICAgICAgOiBtX3ByaW1pdGl2ZVVuaXRUeXBlKDApCisgICAgZXhwbGljaXQg
Q1NTVmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgYm9vbCBpc0NTU09NU2FmZSA9IGZhbHNlKQor
ICAgICAgICA6IG1faXNDU1NPTVNhZmUoaXNDU1NPTVNhZmUpCisgICAgICAgICwgbV9pc1RleHRD
bG9uZShmYWxzZSkKKyAgICAgICAgLCBtX3ByaW1pdGl2ZVVuaXRUeXBlKDApCiAgICAgICAgICwg
bV9oYXNDYWNoZWRDU1NUZXh0KGZhbHNlKQogICAgICAgICAsIG1faXNRdWlya1ZhbHVlKGZhbHNl
KQogICAgICAgICAsIG1fdmFsdWVMaXN0U2VwYXJhdG9yKFNwYWNlU2VwYXJhdG9yKQpAQCAtMTc3
LDEzICsxOTUsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3koKTsKIAogcHJvdGVjdGVk
OgorICAgIHVuc2lnbmVkIG1faXNDU1NPTVNhZmUgOiAxOworICAgIHVuc2lnbmVkIG1faXNUZXh0
Q2xvbmUgOiAxOwogICAgIC8vIFRoZSBiaXRzIGluIHRoaXMgc2VjdGlvbiBhcmUgb25seSB1c2Vk
IGJ5IHNwZWNpZmljIHN1YmNsYXNzZXMgYnV0IGtlcHQgaGVyZQogICAgIC8vIHRvIG1heGltaXpl
IHN0cnVjdCBwYWNraW5nLgogCiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWUgYml0czoKLSAgICB1
bnNpZ25lZCBjaGFyIG1fcHJpbWl0aXZlVW5pdFR5cGUgOiA3OyAvLyBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzCi0gICAgbXV0YWJsZSBib29sIG1faGFzQ2FjaGVkQ1NTVGV4dCA6IDE7Ci0g
ICAgYm9vbCBtX2lzUXVpcmtWYWx1ZSA6IDE7CisgICAgdW5zaWduZWQgbV9wcmltaXRpdmVVbml0
VHlwZSA6IDc7IC8vIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKKyAgICBtdXRhYmxlIHVu
c2lnbmVkIG1faGFzQ2FjaGVkQ1NTVGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV9pc1F1aXJrVmFs
dWUgOiAxOwogCiAgICAgdW5zaWduZWQgY2hhciBtX3ZhbHVlTGlzdFNlcGFyYXRvciA6IFZhbHVl
TGlzdFNlcGFyYXRvckJpdHM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
CShyZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDQgKzE0MywxOCBAQCB2b2lkIENTU1ZhbHVlTGlzdDo6
YWRkU3VicmVzb3VyY2VTdHlsZVVSCiAgICAgICAgIG1fdmFsdWVzW2ldLT5hZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAorQ1NTVmFsdWVMaXN0OjpDU1NWYWx1
ZUxpc3QoY29uc3QgQ1NTVmFsdWVMaXN0JiBjbG9uZUZyb20pCisgICAgOiBDU1NWYWx1ZShjbG9u
ZUZyb20uY2xhc3NUeXBlKCksIC8qIGlzQ1NTT01TYWZlICovIHRydWUpCit7CisgICAgbV92YWx1
ZUxpc3RTZXBhcmF0b3IgPSBjbG9uZUZyb20ubV92YWx1ZUxpc3RTZXBhcmF0b3I7CisgICAgbV92
YWx1ZXMucmVzaXplKGNsb25lRnJvbS5tX3ZhbHVlcy5zaXplKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV92YWx1ZXNbaV0g
PSBjbG9uZUZyb20ubV92YWx1ZXNbaV0tPmNsb25lRm9yQ1NTT00oKTsKK30KKworUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlTGlzdDo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NWYWx1ZUxpc3QoKnRoaXMpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAkocmV2aXNp
b24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw5ICs2MSwxMiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mLCBjb25zdCBDU1NTdHlsZVNoZWV0Kik7CisgICAgCisgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIENT
U1ZhbHVlTGlzdChDbGFzc1R5cGUsIFZhbHVlTGlzdFNlcGFyYXRvcik7CisgICAgQ1NTVmFsdWVM
aXN0KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xvbmVGcm9tKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBDU1NWYWx1ZUxpc3QoVmFsdWVMaXN0U2VwYXJhdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9Db3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NvdW50
ZXIuaAkocmV2aXNpb24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWRl
bnRpZmllcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyKSB7IG1faWRl
bnRpZmllciA9IGlkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZShQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBsaXN0U3R5bGU7
IH0KICAgICB2b2lkIHNldFNlcGFyYXRvcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBz
ZXBhcmF0b3IpIHsgbV9zZXBhcmF0b3IgPSBzZXBhcmF0b3I7IH0KKyAgICAKKyAgICBQYXNzUmVm
UHRyPENvdW50ZXI+IGNsb25lRm9yQ1NTT00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZShtX2lkZW50aWZpZXIgPyBtX2lkZW50aWZpZXItPmNsb25lRm9yQ1NTT00oKSA6IDAK
KyAgICAgICAgICAgICwgbV9saXN0U3R5bGUgPyBtX2xpc3RTdHlsZS0+Y2xvbmVGb3JDU1NPTSgp
IDogMAorICAgICAgICAgICAgLCBtX3NlcGFyYXRvciA/IG1fc2VwYXJhdG9yLT5jbG9uZUZvckNT
U09NKCkgOiAwKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgQ291bnRlcihQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBsaXN0U3R5bGUsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCShyZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcg
KzE1NSw3IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICAv
LyBGSVhNRTogRGV0ZWN0IHN5bnRheCBlcnJvcnMgYW5kIHNldCBlYy4KICAgICBtX3Byb3BlcnR5
U2V0LT5wYXJzZURlY2xhcmF0aW9uKHRleHQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCi0gICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGRpZE11dGF0ZSgpOwogI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCiAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQo
KTsgICAgCiAjZW5kaWYKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBQ
cm9wZXJ0eVNldENTU1N0eWxlCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJv
cGVydHlJRCk7CisgICAgcmV0dXJuIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShtX3Byb3BlcnR5U2V0
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpLmdldCgpKTsKIH0KIAogU3RyaW5nIFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcgJnByb3BlcnR5TmFtZSkKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6c2V0CiAgICAgaWYgKGNoYW5nZWQpIHsKICAgICAgICAgLy8gQ1NT
IERPTSByZXF1aXJlcyByYWlzaW5nIFNZTlRBWF9FUlIgb2YgcGFyc2luZyBmYWlsZWQsIGJ1dCB0
aGlzIGlzIHRvbyBkYW5nZXJvdXMgZm9yIGNvbXBhdGliaWxpdHksCiAgICAgICAgIC8vIHNlZSA8
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCi0gICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgZGlkTXV0YXRlKCk7CiAjaWYgRU5BQkxFKE1V
VEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25S
ZWNvcmQoKTsKICNlbmRpZgpAQCAtMjM3LDcgKzIzNyw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnIKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgY2hhbmdl
cyA9IG1fcHJvcGVydHlTZXQtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpOwog
ICAgIGlmIChjaGFuZ2VzKSB7Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAg
ICAgZGlkTXV0YXRlKCk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAg
bXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnIKIAogUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogeyAKLSAgICBy
ZXR1cm4gbV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsgCisg
ICAgcmV0dXJuIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShtX3Byb3BlcnR5U2V0LT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKHByb3BlcnR5SUQpLmdldCgpKTsKIH0KIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCkKQEAgLTI2MywxMyArMjYzLDM1IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXQKICAgICBlYyA9IDA7CiAgICAgYm9vbCBjaGFuZ2VkID0gbV9wcm9w
ZXJ0eVNldC0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4
dFN0eWxlU2hlZXQoKSk7CiAgICAgaWYgKGNoYW5nZWQpIHsKLSAgICAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOworICAgICAgICBkaWRNdXRhdGUoKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQogICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwog
I2VuZGlmCiAgICAgfQogfQogCit2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
ZGlkTXV0YXRlKCkKK3sKKyAgICBtX2Nzc29tQ1NTVmFsdWVDbG9uZXMuY2xlYXIoKTsKKyAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKK0NTU1ZhbHVlKiBQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb246OmNsb25lQW5kQ2FjaGVGb3JDU1NPTShDU1NWYWx1ZSogaW50ZXJuYWxWYWx1
ZSkKK3sKKyAgICBpZiAoIWludGVybmFsVmFsdWUpCisgICAgICAgIHJldHVybiAwOworCisgICAg
Ly8gVGhlIG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhl
IENTU1ZhbHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgorICAgIC8vIEZJWE1FOiBJdCBp
cyBsaWtlbHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBh
dGliaWxpdHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBpZiAoIW1fY3Nz
b21DU1NWYWx1ZUNsb25lcykKKyAgICAgICAgbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzID0gYWRvcHRQ
dHIobmV3IEhhc2hNYXA8Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+ID4pOworICAgIAorICAg
IFJlZlB0cjxDU1NWYWx1ZT4mIGNsb25lZFZhbHVlID0gbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzLT5h
ZGQoaW50ZXJuYWxWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPigpKS5pdGVyYXRvci0+c2Vjb25kOwor
ICAgIGlmICghY2xvbmVkVmFsdWUpCisgICAgICAgIGNsb25lZFZhbHVlID0gaW50ZXJuYWxWYWx1
ZS0+Y2xvbmVGb3JDU1NPTSgpOworICAgIHJldHVybiBjbG9uZWRWYWx1ZS5nZXQoKTsKK30KKwog
Q1NTU3R5bGVTaGVldCogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRTdHls
ZVNoZWV0KCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIGNvbnRleHRTdHlsZVNoZWV0KCk7IApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uaAkocmV2aXNpb24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjksMTQg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4gY29weSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdHlsZVBy
b3BlcnR5U2V0PiBtYWtlTXV0YWJsZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCkgeyB9ICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1N0eWxl
UmVjYWxjKCkgeyB9CisgICAgCisgICAgdm9pZCBkaWRNdXRhdGUoKTsKKyAgICBDU1NWYWx1ZSog
Y2xvbmVBbmRDYWNoZUZvckNTU09NKENTU1ZhbHVlKik7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAg
U3R5bGVQcm9wZXJ0eVNldCogbV9wcm9wZXJ0eVNldDsKKyAgICBPd25QdHI8SGFzaE1hcDxDU1NW
YWx1ZSosIFJlZlB0cjxDU1NWYWx1ZT4gPiA+IG1fY3Nzb21DU1NWYWx1ZUNsb25lczsKIH07CiAK
IGNsYXNzIFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAJKHJldmlzaW9u
IDExMzQxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDI1ICszOCwzNCBAQCBQYXNzUmVmUHRyPFJHQkNvbG9yPiBSR0JDb2xvcjo6Y3Jl
YXRlKHVuCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6cmVkKCkKIHsK
ICAgICB1bnNpZ25lZCB2YWx1ZSA9IChtX3JnYkNvbG9yID4+IDE2KSAmIDB4RkY7Ci0gICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KTsKKyAgICAvLyBVbmlxdWUgaW5zdGFuY2VzIGFyZSBzYWZlLgorICAgIHJlc3VsdC0+c2V0Q1NT
T01TYWZlKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IFJHQkNvbG9yOjpncmVlbigpCiB7CiAgICAgdW5zaWduZWQgdmFs
dWUgPSAobV9yZ2JDb2xvciA+PiA4KSAmIDB4RkY7Ci0gICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICByZXN1bHQtPnNl
dENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCiBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6Ymx1ZSgpCiB7CiAgICAgdW5zaWduZWQg
dmFsdWUgPSBtX3JnYkNvbG9yICYgMHhGRjsKLSAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2
YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIHJlc3VsdC0+c2V0Q1NT
T01TYWZlKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IFJHQkNvbG9yOjphbHBoYSgpCiB7CiAgICAgZmxvYXQgdmFsdWUg
PSBzdGF0aWNfY2FzdDxmbG9hdD4oKG1fcmdiQ29sb3IgPj4gMjQpICYgMHhGRikgLyAweEZGOwot
ICAgIHJldHVybiBXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsK
KyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUmVjdC5oCShyZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxNCBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICBSZWN0QmFzZSgpIHsgfQorICAgIFJlY3RCYXNlKGNvbnN0IFJlY3RCYXNl
JiBjbG9uZUZyb20pCisgICAgICAgIDogbV90b3AoY2xvbmVGcm9tLm1fdG9wID8gY2xvbmVGcm9t
Lm1fdG9wLT5jbG9uZUZvckNTU09NKCkgOiAwKQorICAgICAgICAsIG1fcmlnaHQoY2xvbmVGcm9t
Lm1fcmlnaHQgPyBjbG9uZUZyb20ubV9yaWdodC0+Y2xvbmVGb3JDU1NPTSgpIDogMCkKKyAgICAg
ICAgLCBtX2JvdHRvbShjbG9uZUZyb20ubV9ib3R0b20gPyBjbG9uZUZyb20ubV9ib3R0b20tPmNs
b25lRm9yQ1NTT00oKSA6IDApCisgICAgICAgICwgbV9sZWZ0KGNsb25lRnJvbS5tX2xlZnQgPyBj
bG9uZUZyb20ubV9sZWZ0LT5jbG9uZUZvckNTU09NKCkgOiAwKQorICAgIHsKKyAgICB9CisKICAg
ICB+UmVjdEJhc2UoKSB7IH0KIAogcHJpdmF0ZToKQEAgLTUyLDE3ICs2MCwyMyBAQCBwcml2YXRl
OgogY2xhc3MgUmVjdCA6IHB1YmxpYyBSZWN0QmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8UmVjdD4g
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY3Q+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSZWN0KTsgfQorICAgIAorICAgIFBhc3NSZWZQdHI8UmVjdD4gY2xvbmVG
b3JDU1NPTSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWN0KCp0aGlzKSk7IH0KIAog
cHJpdmF0ZToKICAgICBSZWN0KCkgeyB9CisgICAgUmVjdChjb25zdCBSZWN0JiBjbG9uZUZyb20p
IDogUmVjdEJhc2UoY2xvbmVGcm9tKSB7IH0KIH07CiAKIGNsYXNzIFF1YWQgOiBwdWJsaWMgUmVj
dEJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPFF1YWQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxRdWFkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUXVhZCk7IH0KKyAg
ICAKKyAgICBQYXNzUmVmUHRyPFF1YWQ+IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBh
ZG9wdFJlZihuZXcgUXVhZCgqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgUXVhZCgpIHsgfQor
ICAgIFF1YWQoY29uc3QgUXVhZCYgY2xvbmVGcm9tKSA6IFJlY3RCYXNlKGNsb25lRnJvbSkgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAJKHJldmlzaW9uIDExMzQxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDYgKzk5LDE3IEBAIFN0cmluZyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y3VzdG9tQ3NzVGUKICAg
ICByZXR1cm4gcmVzdWx0ICsgQ1NTVmFsdWVMaXN0OjpjdXN0b21Dc3NUZXh0KCkgKyAiKSI7CiB9
CiAKK1dlYktpdENTU0ZpbHRlclZhbHVlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZShjb25zdCBXZWJL
aXRDU1NGaWx0ZXJWYWx1ZSYgY2xvbmVGcm9tKQorICAgIDogQ1NTVmFsdWVMaXN0KGNsb25lRnJv
bSkKKyAgICAsIG1fdHlwZShjbG9uZUZyb20ubV90eXBlKQoreworfQorCitQYXNzUmVmUHRyPFdl
YktpdENTU0ZpbHRlclZhbHVlPiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgq
dGhpcykpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAkocmV2aXNpb24gMTEzNDE4
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDggKzY2LDExIEBAIHB1YmxpYzoKIAogICAgIEZpbHRlck9wZXJhdGlvblR5
cGUgb3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKEZpbHRlck9wZXJhdGlvblR5cGUpOworICAg
IFdlYktpdENTU0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJiBjbG9uZUZy
b20pOwogCiAgICAgRmlsdGVyT3BlcmF0aW9uVHlwZSBtX3R5cGU7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCShyZXZpc2lvbiAx
MTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNCArMTE1LDE1IEBAIFN0cmluZyBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6Y3VzdG9tQ3MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoY29uc3QgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUmIGNsb25lRnJvbSkKKyAgICA6IENTU1ZhbHVlTGlzdChjbG9uZUZyb20pCisg
ICAgLCBtX3R5cGUoY2xvbmVGcm9tLm1fdHlwZSkKK3sKK30KKworUGFzc1JlZlB0cjxXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZT4gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUoKnRoaXMpKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmgJKHJldmlzaW9uIDExMzQxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCwx
MiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAogICAgIFRy
YW5zZm9ybU9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorICAgIAorICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGNsb25l
Rm9yQ1NTT00oKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKTsKKyAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZShj
b25zdCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSYgY2xvbmVGcm9tKTsKIAogICAgIFRyYW5zZm9y
bU9wZXJhdGlvblR5cGUgbV90eXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAko
cmV2aXNpb24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTggQEAgU3RyaW5nIFNWR0NvbG9yOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1NWR0NvbG9yOjpTVkdDb2xv
cihDbGFzc1R5cGUgY2xhc3NUeXBlLCBjb25zdCBTVkdDb2xvciYgY2xvbmVGcm9tKQorICAgIDog
Q1NTVmFsdWUoY2xhc3NUeXBlLCAvKmlzQ1NTT01TYWZlKi8gdHJ1ZSkKKyAgICAsIG1fY29sb3Io
Y2xvbmVGcm9tLm1fY29sb3IpCisgICAgLCBtX2NvbG9yVHlwZShjbG9uZUZyb20ubV9jb2xvclR5
cGUpCit7Cit9CisKK1Bhc3NSZWZQdHI8U1ZHQ29sb3I+IFNWR0NvbG9yOjpjbG9uZUZvckNTU09N
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR0NvbG9yQ2xh
c3MsICp0aGlzKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29sb3IuaAkocmV2aXNpb24gMTEzNDE4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDExICs3MiwxNCBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAogICAgIH5TVkdDb2xvcigpIHsgfQorICAg
IAorICAgIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAogcHJv
dGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb247CiAK
ICAgICBTVkdDb2xvcihDbGFzc1R5cGUsIGNvbnN0IFNWR0NvbG9yVHlwZSYpOworICAgIFNWR0Nv
bG9yKENsYXNzVHlwZSwgY29uc3QgU1ZHQ29sb3ImIGNsb25lRnJvbSk7CiAKICAgICB2b2lkIHNl
dENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2NvbG9yID0gY29sb3I7IH0KICAgICB2b2lk
IHNldENvbG9yVHlwZShjb25zdCBTVkdDb2xvclR5cGUmIHR5cGUpIHsgbV9jb2xvclR5cGUgPSB0
eXBlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAJKHJldmlzaW9uIDExMzQxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYg
Kzk5LDE4IEBAIFN0cmluZyBTVkdQYWludDo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCitTVkdQYWludDo6U1ZHUGFpbnQoY29uc3QgU1ZHUGFpbnQmIGNs
b25lRnJvbSkKKyAgICA6IFNWR0NvbG9yKFNWR1BhaW50Q2xhc3MsIGNsb25lRnJvbSkKKyAgICAs
IG1fcGFpbnRUeXBlKGNsb25lRnJvbS5tX3BhaW50VHlwZSkKKyAgICAsIG1fdXJpKGNsb25lRnJv
bS5tX3VyaSkKK3sKK30KKworUGFzc1JlZlB0cjxTVkdQYWludD4gU1ZHUGFpbnQ6OmNsb25lRm9y
Q1NTT00oKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoKnRoaXMp
KTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYWludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWlu
dC5oCShyZXZpc2lvbiAxMTM0MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgUGFzc1JlZlB0cjxTVkdQYWludD4gY2xvbmVGb3JD
U1NPTSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb247CiAKQEAgLTEwNSw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiBwcml2YXRl
OgogICAgIFNWR1BhaW50KGNvbnN0IFNWR1BhaW50VHlwZSYsIGNvbnN0IFN0cmluZyYgdXJpID0g
U3RyaW5nKCkpOworICAgIFNWR1BhaW50KGNvbnN0IFNWR1BhaW50JiBjbG9uZUZyb20pOwogCiAg
ICAgU1ZHUGFpbnRUeXBlIG1fcGFpbnRUeXBlOwogICAgIFN0cmluZyBtX3VyaTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDExMzQxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIzLDcgKzQyMyw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFNWR1N0eWxlZEVsZW1lbnQ6
OmcKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0
OjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0
ci0+bmFtZSgpKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0ci0+dmFs
dWUoKSk7Ci0gICAgcmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQp
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eUlEKTsKKyAgICByZXR1cm4gY3NzVmFsdWUgPyBjc3NWYWx1ZS0+Y2xvbmVG
b3JDU1NPTSgpIDogMDsKIH0KIAogYm9vbCBTVkdTdHlsZWRFbGVtZW50OjppbnN0YW5jZVVwZGF0
ZXNCbG9ja2VkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136136</attachid>
            <date>2012-04-07 11:57:50 -0700</date>
            <delta_ts>2012-04-07 12:41:58 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>cssvalue-clone-2.patch</filename>
            <type>text/plain</type>
            <size>36526</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMSBAQAorMjAxMi0wNC0wNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgZXhwb3NlIGludGVy
bmFsIENTU1ZhbHVlcyBpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNDI2CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTVmFsdWVzIHJldHVybmVkIGZyb20gZnVuY3Rpb25z
IGxpa2UgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgYXJlIGN1cnJl
bnRseQorICAgICAgICB0aGUgc2FtZSBpbnN0YW5jZXMgd2UgdXNlIGludGVybmFsbHkuIFRoaXMg
Y3JlYXRlcyB2YXJpb3VzIHByb2JsZW1zLiBUaGUgdmFsdWVzIGNhbid0IGJlIHNoYXJlZCBiZXR3
ZWVuIAorICAgICAgICBkb2N1bWVudHMgYXMgdGhlIHdyYXBwZXJzIHdvdWxkIGJlIHNoYXJlZCB0
b28uIEhhdmluZyB0byBtYWludGFpbiBwZXItZG9jdW1lbnQgQ1NTVmFsdWVQb29scyBjb21wbGlj
YXRlIAorICAgICAgICB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBpbmNyZWFzZSBtZW1vcnkgdXNhZ2Uu
IFRoaXMgYWxzbyBibG9ja3Mgc2hhcmluZyBzdHlsZSBzaGVldCBkYXRhIHN0cnVjdHVyZXMgCisg
ICAgICAgIGJldHdlZW4gZG9jdW1lbnRzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgY29uY2VwdCBvZiBDU1NPTS1zYWZlIENTU1ZhbHVlLiBPbmx5IHRoZSBzYWZlIHZhbHVl
cyBjYW4gYmUgd3JhcHBlZCBmb3IgSlMgYWNjZXNzLiAKKyAgICAgICAgVmFsdWVzIGFyZSB1bnNh
ZmUgYnkgZGVmYXVsdC4gVGhlIENTU09NIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBDU1NWYWx1ZXMg
Y3JlYXRlIHNhZmUgaW5zdGFuY2VzIGJ5CisgICAgICAgIGNsb25pbmcgdGhlIGludGVybmFsIHZh
bHVlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSB1c2Ugb2YgQVBJcyB0aGF0IHJldHVybiBDU1NW
YWx1ZXMgaXMgdmVyeSByYXJlICh0aGUgY3VycmVjdCBDU1NPTSBkcmFmdCBkZXByZWNhdGVzIHRo
ZW0pIGFuZAorICAgICAgICBjbG9uaW5nIGlzIGNoZWFwIGluIGFueSBjYXNlLiBGdXR1cmUgcGF0
Y2hlcyB3aWxsIGVsaW1pbmF0ZSB0aGUgcGVyLWRvY3VtZW50IHZhbHVlIHBvb2wgaW4gZmF2b3IK
KyAgICAgICAgb2YgYSBnbG9iYWwgb25lIGZvciBhIG1lbW9yeSB3aW4uCisgICAgICAgIAorICAg
ICAgICBJbiB0aGUgZnV0dXJlIHdlIHdhbnQgdG8gcmVwbGFjZSBpbnRlcm5hbGx5IHVzZWQgQ1NT
VmFsdWVzIHdpdGggdHJ1ZSBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZXMpIGFuZAorICAgICAg
ICB1c2UgQ1NTVmFsdWVzIGV4Y2x1c2l2ZWx5IGFzIHdyYXBwZXJzIChzaW1pbGFyIHRvIGhvdyBD
U1NTdHlsZVJ1bGUgd3JhcHMgaW50ZXJuYWwgU3R5bGVSdWxlKS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdlU2V0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVl
OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAg
ICAgICAoQ1NTSW1hZ2VTZXRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAg
ICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OnNldENTU09NU2FmZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENsb25lQ1NTVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xv
bmVDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1
ZTo6VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAKKyAgICAgICAgICAgIE1vc3Qgbm9uLXBy
aW1pdGl2ZSB2YWx1ZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgaW4gQ1NTT00uIEZvciB0aG9zZSB3
ZSBjcmVhdGUgYSBkdW1teSB2YWx1ZQorICAgICAgICAgICAgdGhhdCBjb250YWlucyBvbmx5IHRo
ZSBkYXRhIHRoYXQgaXMgYWNjZXNzaWJsZSB0aG91Z2ggdGhlIGJhc2UgQ1NTVmFsdWUgaW50ZXJm
YWNlLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlOjppc0NTU09NU2FmZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNTdWJ0eXBl
RXhwb3NlZFRvQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OkNTU1ZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlTGlzdDo6Q1NTVmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVmFsdWVMaXN0OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVMaXN0Lmg6CisgICAgICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9Db3VudGVy
Lmg6CisgICAgICAgIChDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OmNsb25l
Rm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXRDc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZGlkTXV0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFu
ZENhY2hlRm9yQ1NTT00pOgorICAgICAgICAKKyAgICAgICAgICAgIE1haW50YWluIGEgbWFwIG9m
IHNhZmUgQ1NTVmFsdWVzIHNvIHdlIGNhbiBtYWludGFpbiBvYmplY3QgaWRlbnRpdHkuCisgICAg
ICAgIAorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNT
dHlsZVJlY2FsYyk6CisgICAgICAgIChQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24pOgor
ICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkNvbG9yOjpncmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpSR0JDb2xvcjo6Ymx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6YWxwaGEp
OgorICAgICAgICAqIGNzcy9SZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6UmVj
dEJhc2UpOgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAoUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Q6OlJl
Y3QpOgorICAgICAgICAoUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWFkOjpjbG9uZUZvckNT
U09NKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWQ6OlF1YWQpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJW
YWx1ZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAg
ICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NGaWx0ZXJW
YWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKToKKyAgICAg
ICAgKiBzdmcvU1ZHQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OlNWR0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OmNs
b25lRm9yQ1NTT00pOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgorICAgICAgICAoU1ZHQ29s
b3IpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YWludDo6U1ZHUGFpbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYWludDo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAg
ICAgIChTVkdQYWludCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KToKKwogMjAxMi0wNC0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbQ01ha2VdIENsZWFudXAgV1RGIGluY2x1ZGUgZGlyZWN0b3JpZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCShy
ZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVl
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOSBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogCisgICAgLy8gU2NyaXB0cyBzaG91bGQgb25seSBldmVyIHNlZSBjbG9u
ZWQgQ1NTVmFsdWVzLCBuZXZlciB0aGUgaW50ZXJuYWwgb25lcy4KKyAgICBBU1NFUlQodmFsdWUt
PmlzQ1NTT01TYWZlKCkpOworCiAgICAgSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIHZhbHVlKTsKIAogICAgIGlmICh3cmFwcGVyKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjU2LDcgKzI2NTYs
OCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUtPmNs
b25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0eU5hbWUpCkBAIC0yNjk2
LDcgKzI2OTcsOCBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vCiAg
ICAgCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0g
ICAgcmV0dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0
dXJuIHZhbHVlID8gdmFsdWUtPmNsb25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMTggQEAgU3RyaW5nIENT
U0ltYWdlU2V0VmFsdWU6OmN1c3RvbUNzc1RleHQoKQogICAgIHJldHVybiAiLXdlYmtpdC1pbWFn
ZS1zZXQoIiArIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOwogfQogCitDU1NJ
bWFnZVNldFZhbHVlOjpDU1NJbWFnZVNldFZhbHVlKGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNs
b25lRnJvbSkKKyAgICA6IENTU1ZhbHVlTGlzdChjbG9uZUZyb20pCisgICAgLCBtX2FjY2Vzc2Vk
QmVzdEZpdEltYWdlKGZhbHNlKQoreworICAgIC8vIE5vbi1DU1NWYWx1ZUxpc3QgZGF0YSBpcyBu
b3QgYWNjZXNpYmxlIHRocm91Z2ggQ1NTIE9NLCBubyBuZWVkIHRvIGNsb25lLgorfQorCitQYXNz
UmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+IENTU0ltYWdlU2V0VmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTSW1hZ2VTZXRWYWx1ZSgqdGhp
cykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAkocmV2
aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3I7CiAgICAgfTsKIAorICAgIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VXaXRoU2NhbGUg
YmVzdEltYWdlRm9yU2NhbGVGYWN0b3IoKTsKIAogcHJpdmF0ZToKICAgICBDU1NJbWFnZVNldFZh
bHVlKCk7CisgICAgQ1NTSW1hZ2VTZXRWYWx1ZShjb25zdCBDU1NJbWFnZVNldFZhbHVlJiBjbG9u
ZUZyb20pOwogCiAgICAgdm9pZCBmaWxsSW1hZ2VTZXQoKTsKICAgICBzdGF0aWMgaW5saW5lIGJv
b2wgY29tcGFyZUJ5U2NhbGVGYWN0b3IoSW1hZ2VXaXRoU2NhbGUgZmlyc3QsIEltYWdlV2l0aFNj
YWxlIHNlY29uZCkgeyByZXR1cm4gZmlyc3Quc2NhbGVGYWN0b3IgPCBzZWNvbmQuc2NhbGVGYWN0
b3I7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2
aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDQxICszMzIsNjkgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6
On5DU1NQcmltaXRpdmVWYWx1ZSgpCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkK
IHsKICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBDU1Nf
U1RSSU5HOgotICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgIGNhc2UgQ1NTX0FUVFI6Ci0g
ICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKLSAgICAgICAgICAgIGlmIChtX3ZhbHVl
LnN0cmluZykKLSAgICAgICAgICAgICAgICBtX3ZhbHVlLnN0cmluZy0+ZGVyZWYoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19DT1VOVEVSOgotICAgICAgICAgICAgbV92
YWx1ZS5jb3VudGVyLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6Ci0gICAgICAgICAgICBtX3ZhbHVlLnJlY3QtPmRlcmVmKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfUVVBRDoKLSAgICAgICAgICAgIG1fdmFsdWUucXVh
ZC0+ZGVyZWYoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19QQUlSOgot
ICAgICAgICAgICAgbV92YWx1ZS5wYWlyLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTX1VSSToKKyAgICBjYXNlIENTU19BVFRS
OgorICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKKyAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09M
T1I6CisgICAgICAgIGlmIChtX3ZhbHVlLnN0cmluZykKKyAgICAgICAgICAgIG1fdmFsdWUuc3Ry
aW5nLT5kZXJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19DT1VOVEVSOgorICAg
ICAgICBtX3ZhbHVlLmNvdW50ZXItPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTX1JFQ1Q6CisgICAgICAgIG1fdmFsdWUucmVjdC0+ZGVyZWYoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NfUVVBRDoKKyAgICAgICAgbV92YWx1ZS5xdWFkLT5kZXJlZigpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU19QQUlSOgorICAgICAgICBtX3ZhbHVlLnBhaXItPmRl
cmVmKCk7CisgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAg
ICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjoKLSAgICAgICAgICAgIGlmIChtX3ZhbHVl
LnJlZ2lvbikKLSAgICAgICAgICAgICAgICBtX3ZhbHVlLnJlZ2lvbi0+ZGVyZWYoKTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgIGlm
IChtX3ZhbHVlLnJlZ2lvbikKKyAgICAgICAgICAgIG1fdmFsdWUucmVnaW9uLT5kZXJlZigpOwor
ICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICBjYXNlIENTU19DQUxDOgotICAgICAgICAg
ICAgbV92YWx1ZS5jYWxjLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTX1NIQVBFOgotICAgICAgICAgICAgbV92YWx1ZS5zaGFwZS0+ZGVyZWYoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NfQ0FMQzoKKyAgICAgICAgbV92YWx1ZS5jYWxjLT5kZXJlZigpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU19TSEFQRToKKyAgICAgICAgbV92YWx1ZS5zaGFwZS0+ZGVyZWYo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTX1BB
UlNFUl9JTlRFR0VSOgorICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NfRU1T
OgorICAgIGNhc2UgQ1NTX0VYUzoKKyAgICBjYXNlIENTU19SRU1TOgorICAgIGNhc2UgQ1NTX1BY
OgorICAgIGNhc2UgQ1NTX0NNOgorICAgIGNhc2UgQ1NTX01NOgorICAgIGNhc2UgQ1NTX0lOOgor
ICAgIGNhc2UgQ1NTX1BUOgorICAgIGNhc2UgQ1NTX1BDOgorICAgIGNhc2UgQ1NTX0RFRzoKKyAg
ICBjYXNlIENTU19SQUQ6CisgICAgY2FzZSBDU1NfR1JBRDoKKyAgICBjYXNlIENTU19NUzoKKyAg
ICBjYXNlIENTU19TOgorICAgIGNhc2UgQ1NTX0haOgorICAgIGNhc2UgQ1NTX0tIWjoKKyAgICBj
YXNlIENTU19UVVJOOgorICAgIGNhc2UgQ1NTX1ZXOgorICAgIGNhc2UgQ1NTX1ZIOgorICAgIGNh
c2UgQ1NTX1ZNSU46CisgICAgY2FzZSBDU1NfSURFTlQ6CisgICAgY2FzZSBDU1NfUkdCQ09MT1I6
CisgICAgY2FzZSBDU1NfRElNRU5TSU9OOgorICAgIGNhc2UgQ1NTX1VOS05PV046CisgICAgY2Fz
ZSBDU1NfUEFSU0VSX09QRVJBVE9SOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9JREVOVElGSUVSOgor
ICAgICAgICBicmVhazsKICAgICB9Ci0KICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gMDsKICAg
ICBpZiAobV9oYXNDYWNoZWRDU1NUZXh0KSB7CiAgICAgICAgIGNzc1RleHRDYWNoZSgpLnJlbW92
ZSh0aGlzKTsKQEAgLTEwNTgsNCArMTA4Niw4NyBAQCBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6
OnZpZXdwb3J0UGVyY2VuCiAgICAgcmV0dXJuIHZpZXdwb3J0TGVuZ3RoOwogfQogCitQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgp
IGNvbnN0Cit7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisKKyAgICBz
d2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKKyAgICBjYXNlIENTU19TVFJJTkc6CisgICAg
Y2FzZSBDU1NfVVJJOgorICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9O
QU1FOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUu
c3RyaW5nLCBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5cGUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfQ09VTlRFUjoKKyAgICAgICAgcmVzdWx0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLmNvdW50ZXItPmNsb25lRm9yQ1NTT00oKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1JFQ1Q6CisgICAgICAgIHJlc3VsdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5yZWN0LT5jbG9uZUZvckNTU09NKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAgICByZXN1bHQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUucXVhZC0+Y2xvbmVGb3JDU1NPTSgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfUEFJUjoKKyAgICAgICAgLy8gUGFpciBpcyBub3Qg
ZXhwb3NlZCB0byB0aGUgQ1NTT00sIG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KKyAgICAgICAg
cmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnBhaXIpOworICAgICAg
ICBicmVhazsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgY2FzZSBDU1NfREFT
SEJPQVJEX1JFR0lPTjoKKyAgICAgICAgLy8gRGFzaGJvYXJkUmVnaW9uIGlzIG5vdCBleHBvc2Vk
IHRvIHRoZSBDU1NPTSwgbm8gbmVlZCBmb3IgYSBkZWVwIGNsb25lLgorICAgICAgICByZXN1bHQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUucmVnaW9uKTsKKyAgICAgICAgYnJl
YWs7CisjZW5kaWYKKyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICAvLyBDU1NDYWxjVmFsdWUg
aXMgbm90IGV4cG9zZWQgdG8gdGhlIENTU09NLCBubyBuZWVkIGZvciBhIGRlZXAgY2xvbmUuCisg
ICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5jYWxjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfU0hBUEU6CisgICAgICAgIC8vIENTU1NoYXBl
VmFsdWUgaXMgbm90IGV4cG9zZWQgdG8gdGhlIENTU09NLCBubyBuZWVkIGZvciBhIGRlZXAgY2xv
bmUuCisgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5z
aGFwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX05VTUJFUjoKKyAgICBjYXNlIENT
U19QQVJTRVJfSU5URUdFUjoKKyAgICBjYXNlIENTU19QRVJDRU5UQUdFOgorICAgIGNhc2UgQ1NT
X0VNUzoKKyAgICBjYXNlIENTU19FWFM6CisgICAgY2FzZSBDU1NfUkVNUzoKKyAgICBjYXNlIENT
U19QWDoKKyAgICBjYXNlIENTU19DTToKKyAgICBjYXNlIENTU19NTToKKyAgICBjYXNlIENTU19J
TjoKKyAgICBjYXNlIENTU19QVDoKKyAgICBjYXNlIENTU19QQzoKKyAgICBjYXNlIENTU19ERUc6
CisgICAgY2FzZSBDU1NfUkFEOgorICAgIGNhc2UgQ1NTX0dSQUQ6CisgICAgY2FzZSBDU1NfTVM6
CisgICAgY2FzZSBDU1NfUzoKKyAgICBjYXNlIENTU19IWjoKKyAgICBjYXNlIENTU19LSFo6Cisg
ICAgY2FzZSBDU1NfVFVSTjoKKyAgICBjYXNlIENTU19WVzoKKyAgICBjYXNlIENTU19WSDoKKyAg
ICBjYXNlIENTU19WTUlOOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG1fdmFsdWUubnVtLCBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5
cGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfSURFTlQ6CisgICAgICAgIHJlc3Vs
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKG1fdmFsdWUuaWRlbnQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICAgICAgcmVzdWx0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKG1fdmFsdWUucmdiY29sb3IpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU19ESU1FTlNJT046CisgICAgY2FzZSBDU1NfVU5LTk9XTjoK
KyAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5U
SUZJRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChyZXN1bHQpCisgICAg
ICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0
IENTU1N0eWxlU2hlZXQqKTsKIAogICAgIExlbmd0aCB2aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjbG9uZUZvckNTU09N
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDU1NPTVNhZmUoKSB7IG1faXNDU1NPTVNhZmUgPSB0cnVl
OyB9CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IGludCB2cy4gdW5zaWduZWQgb3ZlcmxvYWRp
bmcgaXMgdG9vIHN1YnRsZSB0byBkaXN0aW5ndWlzaCB0aGUgY29sb3IgYW5kIGlkZW50aWZpZXIg
Y2FzZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDIzIEBAIGNsYXNzIFNhbWVTaXplQXNDU1NWYWx1ZSA6IHB1YmxpYyBSZWZDb3UKIH07CiAK
IENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NWYWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NW
YWx1ZSksIENTU192YWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7CisgICAgCitjbGFzcyBUZXh0Q2xv
bmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q2xvbmVDU1NWYWx1ZShj
bGFzc1R5cGUsIHRleHQpKTsgfQorCisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCB7IHJldHVy
biBtX2Nzc1RleHQ7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0Q2xvbmVDU1NWYWx1ZShDbGFzc1R5
cGUgY2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpIAorICAgICAgICA6IENTU1ZhbHVlKGNs
YXNzVHlwZSwgLyppc0NTU09NU2FmZSovIHRydWUpCisgICAgICAgICwgbV9jc3NUZXh0KHRleHQp
CisgICAgeworICAgICAgICBtX2lzVGV4dENsb25lID0gdHJ1ZTsKKyAgICB9CisKKyAgICBTdHJp
bmcgbV9jc3NUZXh0OworfTsKIAogYm9vbCBDU1NWYWx1ZTo6aXNJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpIGNvbnN0CiB7CkBAIC04NCw2ICsxMDEsOSBAQCBDU1NWYWx1ZTo6VHlwZSBDU1NWYWx1ZTo6
Y3NzVmFsdWVUeXBlKCkgCiAKIHZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
KQogeworICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgZm9yIGludGVybmFsIGluc3RhbmNl
cyBvbmx5LgorICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSk7CisKICAgICBpZiAoaXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMp
LT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKICAgICBlbHNlIGlm
IChpc1ZhbHVlTGlzdCgpKQpAQCAtOTYsNiArMTE2LDEyIEBAIHZvaWQgQ1NTVmFsdWU6OmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKEwKIAogU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QK
IHsKKyAgICBpZiAobV9pc1RleHRDbG9uZSkgeworICAgICAgICAgQVNTRVJUKGlzQ1NTT01TYWZl
KCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENsb25lQ1NTVmFsdWUq
Pih0aGlzKS0+Y3NzVGV4dCgpOworICAgIH0KKyAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkgfHwg
aXNTdWJ0eXBlRXhwb3NlZFRvQ1NTT00oKSk7CisKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7
CiAgICAgY2FzZSBBc3BlY3RSYXRpb0NsYXNzOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHRoaXMpLT5jdXN0b21Dc3NUZXh0KCk7CkBAIC0x
NzIsNiArMTk4LDEzIEBAIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAKIHZvaWQg
Q1NTVmFsdWU6OmRlc3Ryb3koKQogeworICAgIGlmIChtX2lzVGV4dENsb25lKSB7CisgICAgICAg
IEFTU0VSVChpc0NTU09NU2FmZSgpKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFRleHRD
bG9uZUNTU1ZhbHVlKj4odGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KCFpc0NTU09NU2FmZSgpIHx8IGlzU3VidHlwZUV4cG9zZWRUb0NTU09NKCkpOworCiAgICAgc3dp
dGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKICAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlvVmFsdWUqPih0aGlzKTsKQEAgLTI3NSw0
ICszMDgsMzMgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJveSgpCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1ZhbHVlOjpjbG9uZUZvckNTU09N
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBQcmltaXRp
dmVDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyAgICBjYXNlIFZhbHVlTGlzdENsYXNzOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4odGhpcyktPmNs
b25lRm9yQ1NTT00oKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgY2FzZSBXZWJLaXRD
U1NGaWx0ZXJDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdENT
U0ZpbHRlclZhbHVlKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyNlbmRpZgorICAgIGNhc2Ug
V2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CisjaWYg
RU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgY2FzZSBJbWFnZVNldENsYXNzOgorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW1hZ2VTZXRWYWx1ZSo+KHRoaXMpLT5jbG9uZUZv
ckNTU09NKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgU1ZHQ29sb3JDbGFz
czoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPmNs
b25lRm9yQ1NTT00oKTsKKyAgICBjYXNlIFNWR1BhaW50Q2xhc3M6CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTVkdQYWludCo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CisjZW5k
aWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoIWlzU3VidHlwZUV4cG9zZWRUb0NTU09N
KCkpOworICAgICAgICByZXR1cm4gVGV4dENsb25lQ1NTVmFsdWU6OmNyZWF0ZShjbGFzc1R5cGUo
KSwgY3NzVGV4dCgpKTsKKyAgICB9Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCShy
ZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBDU1NWYWx1ZV9oCiAjZGVmaW5lIENT
U1ZhbHVlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJLVVJMSGFz
aC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0yOSw5ICszMCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
U1NTdHlsZVNoZWV0OworICAgIAorLy8gRklYTUU6IFRoZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBz
dWJjbGFzc2VzIHNob3VsZCBiZSB0dXJuZWQgaW50byBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1
ZSkuCisvLyBUaGUgZmV3IHN1YnR5cGVzIHRoYXQgYXJlIGFjdHVhbGx5IGV4cG9zZWQgaW4gQ1NT
T00gY2FuIGJlIHNlZW4gaW4gdGhlIGNsb25lRm9yQ1NTT00oKSBmdW5jdGlvbi4KKy8vIFRoZXkg
c2hvdWxkIGJlIGhhbmRsZWQgYnkgc2VwYXJhdGUgd3JhcHBlciBjbGFzc2VzLgogCi10eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwotCisvLyBQbGVhc2UgZG9uJ3QgZXhwb3NlIG1vcmUgQ1NTVmFs
dWUgdHlwZXMgdG8gdGhlIHdlYi4KIGNsYXNzIENTU1ZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1NTVmFsdWU+IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewpAQCAtOTAsNiArOTQsMTggQEAg
cHVibGljOgogICAgIGJvb2wgaXNTVkdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBl
ID09IFNWR0NvbG9yQ2xhc3MgfHwgbV9jbGFzc1R5cGUgPT0gU1ZHUGFpbnRDbGFzczsgfQogICAg
IGJvb2wgaXNTVkdQYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNWR1BhaW50
Q2xhc3M7IH0KICNlbmRpZgorICAgIAorICAgIGJvb2wgaXNDU1NPTVNhZmUoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ1NTT01TYWZlOyB9CisgICAgYm9vbCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgp
IGNvbnN0CisgICAgeyAKKyAgICAgICAgcmV0dXJuIGlzUHJpbWl0aXZlVmFsdWUoKSAKKyNpZiBF
TkFCTEUoU1ZHKQorICAgICAgICAgICAgfHwgaXNTVkdDb2xvcigpCisjZW5kaWYKKyAgICAgICAg
ICAgIHx8IGlzVmFsdWVMaXN0KCk7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IENTU1N0eWxlU2hlZXQqKTsKIApAQCAtMTU5LDgg
KzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDbGFzc1R5cGUgY2xhc3NUeXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q2xhc3NUeXBlPihtX2NsYXNzVHlwZSk7IH0KIAotICAgIGV4
cGxpY2l0IENTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUpCi0gICAgICAgIDogbV9wcmltaXRp
dmVVbml0VHlwZSgwKQorICAgIGV4cGxpY2l0IENTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUs
IGJvb2wgaXNDU1NPTVNhZmUgPSBmYWxzZSkKKyAgICAgICAgOiBtX2lzQ1NTT01TYWZlKGlzQ1NT
T01TYWZlKQorICAgICAgICAsIG1faXNUZXh0Q2xvbmUoZmFsc2UpCisgICAgICAgICwgbV9wcmlt
aXRpdmVVbml0VHlwZSgwKQogICAgICAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkKICAg
ICAgICAgLCBtX2lzUXVpcmtWYWx1ZShmYWxzZSkKICAgICAgICAgLCBtX3ZhbHVlTGlzdFNlcGFy
YXRvcihTcGFjZVNlcGFyYXRvcikKQEAgLTE3NywxMyArMTk1LDE1IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZXN0cm95KCk7CiAKIHByb3RlY3RlZDoKKyAgICB1bnNpZ25lZCBtX2lzQ1NTT01TYWZl
IDogMTsKKyAgICB1bnNpZ25lZCBtX2lzVGV4dENsb25lIDogMTsKICAgICAvLyBUaGUgYml0cyBp
biB0aGlzIHNlY3Rpb24gYXJlIG9ubHkgdXNlZCBieSBzcGVjaWZpYyBzdWJjbGFzc2VzIGJ1dCBr
ZXB0IGhlcmUKICAgICAvLyB0byBtYXhpbWl6ZSBzdHJ1Y3QgcGFja2luZy4KIAogICAgIC8vIENT
U1ByaW1pdGl2ZVZhbHVlIGJpdHM6Ci0gICAgdW5zaWduZWQgY2hhciBtX3ByaW1pdGl2ZVVuaXRU
eXBlIDogNzsgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcwotICAgIG11dGFibGUgYm9v
bCBtX2hhc0NhY2hlZENTU1RleHQgOiAxOwotICAgIGJvb2wgbV9pc1F1aXJrVmFsdWUgOiAxOwor
ICAgIHVuc2lnbmVkIG1fcHJpbWl0aXZlVW5pdFR5cGUgOiA3OyAvLyBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzCisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc0NhY2hlZENTU1RleHQgOiAx
OworICAgIHVuc2lnbmVkIG1faXNRdWlya1ZhbHVlIDogMTsKIAogICAgIHVuc2lnbmVkIGNoYXIg
bV92YWx1ZUxpc3RTZXBhcmF0b3IgOiBWYWx1ZUxpc3RTZXBhcmF0b3JCaXRzOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw0ICsx
NDMsMTggQEAgdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJlc291cmNlU3R5bGVVUgogICAgICAg
ICBtX3ZhbHVlc1tpXS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgc3R5bGVTaGVldCk7
CiB9CiAKK0NTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xv
bmVGcm9tKQorICAgIDogQ1NTVmFsdWUoY2xvbmVGcm9tLmNsYXNzVHlwZSgpLCAvKiBpc0NTU09N
U2FmZSAqLyB0cnVlKQoreworICAgIG1fdmFsdWVMaXN0U2VwYXJhdG9yID0gY2xvbmVGcm9tLm1f
dmFsdWVMaXN0U2VwYXJhdG9yOworICAgIG1fdmFsdWVzLnJlc2l6ZShjbG9uZUZyb20ubV92YWx1
ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIG1fdmFsdWVzW2ldID0gY2xvbmVGcm9tLm1fdmFsdWVzW2ldLT5jbG9u
ZUZvckNTU09NKCk7Cit9CisKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6
OmNsb25lRm9yQ1NTT00oKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTVmFs
dWVMaXN0KCp0aGlzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVMaXN0LmgJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsMTIgQEAgcHVi
bGljOgogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgQ1NTU3R5bGVTaGVl
dCopOworICAgIAorICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjbG9uZUZvckNTU09NKCkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBDU1NWYWx1ZUxpc3QoQ2xhc3NUeXBlLCBWYWx1ZUxp
c3RTZXBhcmF0b3IpOworICAgIENTU1ZhbHVlTGlzdChjb25zdCBDU1NWYWx1ZUxpc3QmIGNsb25l
RnJvbSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTVmFsdWVMaXN0KFZhbHVlTGlzdFNl
cGFyYXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgJKHJldmlzaW9uIDExMzU0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAgICAg
dm9pZCBzZXRMaXN0U3R5bGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxl
KSB7IG1fbGlzdFN0eWxlID0gbGlzdFN0eWxlOyB9CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJhdG9yKSB7IG1fc2VwYXJhdG9yID0gc2Vw
YXJhdG9yOyB9CisgICAgCisgICAgUGFzc1JlZlB0cjxDb3VudGVyPiBjbG9uZUZvckNTU09NKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUobV9pZGVudGlmaWVyID8gbV9pZGVu
dGlmaWVyLT5jbG9uZUZvckNTU09NKCkgOiAwCisgICAgICAgICAgICAsIG1fbGlzdFN0eWxlID8g
bV9saXN0U3R5bGUtPmNsb25lRm9yQ1NTT00oKSA6IDAKKyAgICAgICAgICAgICwgbV9zZXBhcmF0
b3IgPyBtX3NlcGFyYXRvci0+Y2xvbmVGb3JDU1NPTSgpIDogMCk7CisgICAgfQogCiBwcml2YXRl
OgogICAgIENvdW50ZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllciwg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMTEzNTQ5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6c2V0CiAgICAgLy8gRklYTUU6IERldGVjdCBzeW50YXggZXJyb3Jz
IGFuZCBzZXQgZWMuCiAgICAgbV9wcm9wZXJ0eVNldC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBj
b250ZXh0U3R5bGVTaGVldCgpKTsKIAotICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBk
aWRNdXRhdGUoKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIG11dGF0aW9u
U2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAogI2VuZGlmCkBAIC0xNjYsNyArMTY2
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZQogICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3Byb3BlcnR5
U2V0LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgIHJldHVybiBjbG9uZUFu
ZENhY2hlRm9yQ1NTT00obV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0
eUlEKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0eU5hbWUpCkBAIC0yMTgsNyAr
MjE4LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogICAgIGlm
IChjaGFuZ2VkKSB7CiAgICAgICAgIC8vIENTUyBET00gcmVxdWlyZXMgcmFpc2luZyBTWU5UQVhf
RVJSIG9mIHBhcnNpbmcgZmFpbGVkLCBidXQgdGhpcyBpcyB0b28gZGFuZ2Vyb3VzIGZvciBjb21w
YXRpYmlsaXR5LAogICAgICAgICAvLyBzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyOTY+LgotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAg
IGRpZE11dGF0ZSgpOwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgIG11
dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAjZW5kaWYKQEAgLTIzNyw3ICsy
MzcsNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyCiAgICAgU3Ry
aW5nIHJlc3VsdDsKICAgICBib29sIGNoYW5nZXMgPSBtX3Byb3BlcnR5U2V0LT5yZW1vdmVQcm9w
ZXJ0eShwcm9wZXJ0eUlELCAmcmVzdWx0KTsKICAgICBpZiAoY2hhbmdlcykgewotICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAgIGRpZE11dGF0ZSgpOwogI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9u
UmVjb3JkKCk7CiAjZW5kaWYKQEAgLTI0Nyw3ICsyNDcsNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpyCiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCkKIHsgCi0gICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmdldFByb3Bl
cnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7IAorICAgIHJldHVybiBjbG9uZUFuZENhY2hlRm9yQ1NT
T00obV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKS5nZXQoKSk7
CiB9CiAKIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCkBAIC0yNjMsMTMgKzI2Mywz
NSBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0CiAgICAgZWMgPSAw
OwogICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogICAgIGlmIChjaGFu
Z2VkKSB7Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgZGlkTXV0YXRl
KCk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgbXV0YXRpb25TY29w
ZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgogICAgIH0KIH0KIAordm9pZCBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmRpZE11dGF0ZSgpCit7CisgICAgbV9jc3NvbUNT
U1ZhbHVlQ2xvbmVzLmNsZWFyKCk7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworfQorCitD
U1NWYWx1ZSogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFuZENhY2hlRm9y
Q1NTT00oQ1NTVmFsdWUqIGludGVybmFsVmFsdWUpCit7CisgICAgaWYgKCFpbnRlcm5hbFZhbHVl
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFp
biB0aGUgb2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZv
Y2F0aW9ucy4KKyAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlz
IG5vdCBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxk
IGJlIHJlbW92ZWQuCisgICAgaWYgKCFtX2Nzc29tQ1NTVmFsdWVDbG9uZXMpCisgICAgICAgIG1f
Y3Nzb21DU1NWYWx1ZUNsb25lcyA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPENTU1ZhbHVlKiwgUmVm
UHRyPENTU1ZhbHVlPiA+KTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFsdWU+JiBjbG9uZWRWYWx1
ZSA9IG1fY3Nzb21DU1NWYWx1ZUNsb25lcy0+YWRkKGludGVybmFsVmFsdWUsIFJlZlB0cjxDU1NW
YWx1ZT4oKSkuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAoIWNsb25lZFZhbHVlKQorICAgICAg
ICBjbG9uZWRWYWx1ZSA9IGludGVybmFsVmFsdWUtPmNsb25lRm9yQ1NTT00oKTsKKyAgICByZXR1
cm4gY2xvbmVkVmFsdWUuZ2V0KCk7Cit9CisKIENTU1N0eWxlU2hlZXQqIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7IAogICAgIHJldHVy
biBjb250ZXh0U3R5bGVTaGVldCgpOyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDExMzU0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDU1NT
dHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpIHsgfSAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpIHsgfQorICAgIAorICAgIHZvaWQg
ZGlkTXV0YXRlKCk7CisgICAgQ1NTVmFsdWUqIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShDU1NWYWx1
ZSopOwogICAgIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUHJvcGVydHlTZXQqIG1fcHJvcGVydHlT
ZXQ7CisgICAgT3duUHRyPEhhc2hNYXA8Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+ID4gPiBt
X2Nzc29tQ1NTVmFsdWVDbG9uZXM7CiB9OwogCiBjbGFzcyBTdHlsZVJ1bGVDU1NTdHlsZURlY2xh
cmF0aW9uIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvUkdCQ29sb3IuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvUkdCQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNSArMzgsMzQgQEAgUGFzc1Jl
ZlB0cjxSR0JDb2xvcj4gUkdCQ29sb3I6OmNyZWF0ZSh1bgogUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gUkdCQ29sb3I6OnJlZCgpCiB7CiAgICAgdW5zaWduZWQgdmFsdWUgPSAobV9yZ2JD
b2xvciA+PiAxNikgJiAweEZGOwotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgLy8gVW5pcXVlIGluc3RhbmNlcyBh
cmUgc2FmZS4KKyAgICByZXN1bHQtPnNldENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6
Z3JlZW4oKQogewogICAgIHVuc2lnbmVkIHZhbHVlID0gKG1fcmdiQ29sb3IgPj4gOCkgJiAweEZG
OwotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1
bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsKKyAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29s
b3I6OmJsdWUoKQogewogICAgIHVuc2lnbmVkIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0g
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKKyAgICByZXN1bHQtPnNldENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6
YWxwaGEoKQogewogICAgIGZsb2F0IHZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNv
bG9yID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwor
ICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9S
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAkocmV2aXNpb24g
MTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsMTQgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgUmVjdEJhc2UoKSB7IH0K
KyAgICBSZWN0QmFzZShjb25zdCBSZWN0QmFzZSYgY2xvbmVGcm9tKQorICAgICAgICA6IG1fdG9w
KGNsb25lRnJvbS5tX3RvcCA/IGNsb25lRnJvbS5tX3RvcC0+Y2xvbmVGb3JDU1NPTSgpIDogMCkK
KyAgICAgICAgLCBtX3JpZ2h0KGNsb25lRnJvbS5tX3JpZ2h0ID8gY2xvbmVGcm9tLm1fcmlnaHQt
PmNsb25lRm9yQ1NTT00oKSA6IDApCisgICAgICAgICwgbV9ib3R0b20oY2xvbmVGcm9tLm1fYm90
dG9tID8gY2xvbmVGcm9tLm1fYm90dG9tLT5jbG9uZUZvckNTU09NKCkgOiAwKQorICAgICAgICAs
IG1fbGVmdChjbG9uZUZyb20ubV9sZWZ0ID8gY2xvbmVGcm9tLm1fbGVmdC0+Y2xvbmVGb3JDU1NP
TSgpIDogMCkKKyAgICB7CisgICAgfQorCiAgICAgflJlY3RCYXNlKCkgeyB9CiAKIHByaXZhdGU6
CkBAIC01MiwxNyArNjAsMjMgQEAgcHJpdmF0ZToKIGNsYXNzIFJlY3QgOiBwdWJsaWMgUmVjdEJh
c2UsIHB1YmxpYyBSZWZDb3VudGVkPFJlY3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSZWN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVjdCk7IH0KKyAgICAK
KyAgICBQYXNzUmVmUHRyPFJlY3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBhZG9w
dFJlZihuZXcgUmVjdCgqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVjdCgpIHsgfQorICAg
IFJlY3QoY29uc3QgUmVjdCYgY2xvbmVGcm9tKSA6IFJlY3RCYXNlKGNsb25lRnJvbSkgeyB9CiB9
OwogCiBjbGFzcyBRdWFkIDogcHVibGljIFJlY3RCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxRdWFk
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UXVhZD4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFF1YWQpOyB9CisgICAgCisgICAgUGFzc1JlZlB0cjxRdWFkPiBjbG9u
ZUZvckNTU09NKCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFF1YWQoKnRoaXMpKTsgfQog
CiBwcml2YXRlOgogICAgIFF1YWQoKSB7IH0KKyAgICBRdWFkKGNvbnN0IFF1YWQmIGNsb25lRnJv
bSkgOiBSZWN0QmFzZShjbG9uZUZyb20pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCShy
ZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxNyBAQCBTdHJpbmcgV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OmN1c3RvbUNzc1RlCiAgICAgcmV0dXJuIHJlc3VsdCArIENTU1ZhbHVlTGlz
dDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOwogfQogCitXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6V2Vi
S2l0Q1NTRmlsdGVyVmFsdWUoY29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUmIGNsb25lRnJvbSkK
KyAgICA6IENTU1ZhbHVlTGlzdChjbG9uZUZyb20pCisgICAgLCBtX3R5cGUoY2xvbmVGcm9tLm1f
dHlwZSkKK3sKK30KKworUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViS2l0Q1NTRmlsdGVyVmFsdWUoKnRoaXMpKTsKK30KKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKENTU19GSUxURVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmgJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2NiwxMSBAQCBwdWJs
aWM6CiAKICAgICBGaWx0ZXJPcGVyYXRpb25UeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAorICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGNs
b25lRm9yQ1NTT00oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NGaWx0ZXJWYWx1
ZShGaWx0ZXJPcGVyYXRpb25UeXBlKTsKKyAgICBXZWJLaXRDU1NGaWx0ZXJWYWx1ZShjb25zdCBX
ZWJLaXRDU1NGaWx0ZXJWYWx1ZSYgY2xvbmVGcm9tKTsKIAogICAgIEZpbHRlck9wZXJhdGlvblR5
cGUgbV90eXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDQgKzEx
NSwxNSBAQCBTdHJpbmcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmN1c3RvbUNzCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAorV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OldlYktpdENTU1RyYW5z
Zm9ybVZhbHVlKGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlJiBjbG9uZUZyb20pCisgICAg
OiBDU1NWYWx1ZUxpc3QoY2xvbmVGcm9tKQorICAgICwgbV90eXBlKGNsb25lRnJvbS5tX3R5cGUp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKCp0aGlzKSk7Cit9CisKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCShyZXZpc2lvbiAx
MTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsMTIgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0
b21Dc3NUZXh0KCkgY29uc3Q7CiAKICAgICBUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIG9wZXJhdGlv
blR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk7Cisg
ICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoY29uc3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUm
IGNsb25lRnJvbSk7CiAKICAgICBUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIG1fdHlwZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDE4IEBA
IFN0cmluZyBTVkdDb2xvcjo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCitTVkdDb2xvcjo6U1ZHQ29sb3IoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3Qg
U1ZHQ29sb3ImIGNsb25lRnJvbSkKKyAgICA6IENTU1ZhbHVlKGNsYXNzVHlwZSwgLyppc0NTU09N
U2FmZSovIHRydWUpCisgICAgLCBtX2NvbG9yKGNsb25lRnJvbS5tX2NvbG9yKQorICAgICwgbV9j
b2xvclR5cGUoY2xvbmVGcm9tLm1fY29sb3JUeXBlKQoreworfQorCitQYXNzUmVmUHRyPFNWR0Nv
bG9yPiBTVkdDb2xvcjo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTVkdDb2xvcihTVkdDb2xvckNsYXNzLCAqdGhpcykpOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgJKHJldmlzaW9uIDExMzU0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MiwxMSArNzIsMTQgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7
CiAKICAgICB+U1ZHQ29sb3IoKSB7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPFNWR0NvbG9yPiBj
bG9uZUZvckNTU09NKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCiAgICAgU1ZHQ29sb3IoQ2xhc3NUeXBlLCBjb25z
dCBTVkdDb2xvclR5cGUmKTsKKyAgICBTVkdDb2xvcihDbGFzc1R5cGUsIGNvbnN0IFNWR0NvbG9y
JiBjbG9uZUZyb20pOwogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsg
bV9jb2xvciA9IGNvbG9yOyB9CiAgICAgdm9pZCBzZXRDb2xvclR5cGUoY29uc3QgU1ZHQ29sb3JU
eXBlJiB0eXBlKSB7IG1fY29sb3JUeXBlID0gdHlwZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFp
bnQuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxOCBAQCBTdHJpbmcgU1ZHUGFpbnQ6OmN1
c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU1ZHUGFpbnQ6
OlNWR1BhaW50KGNvbnN0IFNWR1BhaW50JiBjbG9uZUZyb20pCisgICAgOiBTVkdDb2xvcihTVkdQ
YWludENsYXNzLCBjbG9uZUZyb20pCisgICAgLCBtX3BhaW50VHlwZShjbG9uZUZyb20ubV9wYWlu
dFR5cGUpCisgICAgLCBtX3VyaShjbG9uZUZyb20ubV91cmkpCit7Cit9CisKK1Bhc3NSZWZQdHI8
U1ZHUGFpbnQ+IFNWR1BhaW50OjpjbG9uZUZvckNTU09NKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR1BhaW50KCp0aGlzKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDgg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIFBh
c3NSZWZQdHI8U1ZHUGFpbnQ+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCkBAIC0xMDUsNiAr
MTA3LDcgQEAgcHJpdmF0ZToKIAogcHJpdmF0ZToKICAgICBTVkdQYWludChjb25zdCBTVkdQYWlu
dFR5cGUmLCBjb25zdCBTdHJpbmcmIHVyaSA9IFN0cmluZygpKTsKKyAgICBTVkdQYWludChjb25z
dCBTVkdQYWludCYgY2xvbmVGcm9tKTsKIAogICAgIFNWR1BhaW50VHlwZSBtX3BhaW50VHlwZTsK
ICAgICBTdHJpbmcgbV91cmk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsOCBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBTVkdTdHlsZWRFbGVtZW50OjpnCiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwog
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3Bl
cnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIGF0dHItPnZhbHVlKCkpOwotICAgIHJldHVybiBzdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1Zh
bHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJu
IGNzc1ZhbHVlID8gY3NzVmFsdWUtPmNsb25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIGJvb2wgU1ZH
U3R5bGVkRWxlbWVudDo6aW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpIGNvbnN0Cg==
</data>
<flag name="commit-queue"
          id="140839"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136137</attachid>
            <date>2012-04-07 12:41:58 -0700</date>
            <delta_ts>2012-04-07 14:28:49 -0700</delta_ts>
            <desc>try to fix build</desc>
            <filename>cssvalue-clone-3.patch</filename>
            <type>text/plain</type>
            <size>36566</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMSBAQAorMjAxMi0wNC0wNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgZXhwb3NlIGludGVy
bmFsIENTU1ZhbHVlcyBpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNDI2CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTVmFsdWVzIHJldHVybmVkIGZyb20gZnVuY3Rpb25z
IGxpa2UgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgYXJlIGN1cnJl
bnRseQorICAgICAgICB0aGUgc2FtZSBpbnN0YW5jZXMgd2UgdXNlIGludGVybmFsbHkuIFRoaXMg
Y3JlYXRlcyB2YXJpb3VzIHByb2JsZW1zLiBUaGUgdmFsdWVzIGNhbid0IGJlIHNoYXJlZCBiZXR3
ZWVuIAorICAgICAgICBkb2N1bWVudHMgYXMgdGhlIHdyYXBwZXJzIHdvdWxkIGJlIHNoYXJlZCB0
b28uIEhhdmluZyB0byBtYWludGFpbiBwZXItZG9jdW1lbnQgQ1NTVmFsdWVQb29scyBjb21wbGlj
YXRlIAorICAgICAgICB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBpbmNyZWFzZSBtZW1vcnkgdXNhZ2Uu
IFRoaXMgYWxzbyBibG9ja3Mgc2hhcmluZyBzdHlsZSBzaGVldCBkYXRhIHN0cnVjdHVyZXMgCisg
ICAgICAgIGJldHdlZW4gZG9jdW1lbnRzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgY29uY2VwdCBvZiBDU1NPTS1zYWZlIENTU1ZhbHVlLiBPbmx5IHRoZSBzYWZlIHZhbHVl
cyBjYW4gYmUgd3JhcHBlZCBmb3IgSlMgYWNjZXNzLiAKKyAgICAgICAgVmFsdWVzIGFyZSB1bnNh
ZmUgYnkgZGVmYXVsdC4gVGhlIENTU09NIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBDU1NWYWx1ZXMg
Y3JlYXRlIHNhZmUgaW5zdGFuY2VzIGJ5CisgICAgICAgIGNsb25pbmcgdGhlIGludGVybmFsIHZh
bHVlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSB1c2Ugb2YgQVBJcyB0aGF0IHJldHVybiBDU1NW
YWx1ZXMgaXMgdmVyeSByYXJlICh0aGUgY3VycmVjdCBDU1NPTSBkcmFmdCBkZXByZWNhdGVzIHRo
ZW0pIGFuZAorICAgICAgICBjbG9uaW5nIGlzIGNoZWFwIGluIGFueSBjYXNlLiBGdXR1cmUgcGF0
Y2hlcyB3aWxsIGVsaW1pbmF0ZSB0aGUgcGVyLWRvY3VtZW50IHZhbHVlIHBvb2wgaW4gZmF2b3IK
KyAgICAgICAgb2YgYSBnbG9iYWwgb25lIGZvciBhIG1lbW9yeSB3aW4uCisgICAgICAgIAorICAg
ICAgICBJbiB0aGUgZnV0dXJlIHdlIHdhbnQgdG8gcmVwbGFjZSBpbnRlcm5hbGx5IHVzZWQgQ1NT
VmFsdWVzIHdpdGggdHJ1ZSBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZXMpIGFuZAorICAgICAg
ICB1c2UgQ1NTVmFsdWVzIGV4Y2x1c2l2ZWx5IGFzIHdyYXBwZXJzIChzaW1pbGFyIHRvIGhvdyBD
U1NTdHlsZVJ1bGUgd3JhcHMgaW50ZXJuYWwgU3R5bGVSdWxlKS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdlU2V0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVl
OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAg
ICAgICAoQ1NTSW1hZ2VTZXRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAg
ICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OnNldENTU09NU2FmZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENsb25lQ1NTVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xv
bmVDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1
ZTo6VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAKKyAgICAgICAgICAgIE1vc3Qgbm9uLXBy
aW1pdGl2ZSB2YWx1ZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgaW4gQ1NTT00uIEZvciB0aG9zZSB3
ZSBjcmVhdGUgYSBkdW1teSB2YWx1ZQorICAgICAgICAgICAgdGhhdCBjb250YWlucyBvbmx5IHRo
ZSBkYXRhIHRoYXQgaXMgYWNjZXNzaWJsZSB0aG91Z2ggdGhlIGJhc2UgQ1NTVmFsdWUgaW50ZXJm
YWNlLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlOjppc0NTU09NU2FmZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNTdWJ0eXBl
RXhwb3NlZFRvQ1NTT00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OkNTU1ZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlTGlzdDo6Q1NTVmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVmFsdWVMaXN0OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVMaXN0Lmg6CisgICAgICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9Db3VudGVy
Lmg6CisgICAgICAgIChDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6OmNsb25l
Rm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXRDc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZGlkTXV0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFu
ZENhY2hlRm9yQ1NTT00pOgorICAgICAgICAKKyAgICAgICAgICAgIE1haW50YWluIGEgbWFwIG9m
IHNhZmUgQ1NTVmFsdWVzIHNvIHdlIGNhbiBtYWludGFpbiBvYmplY3QgaWRlbnRpdHkuCisgICAg
ICAgIAorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNT
dHlsZVJlY2FsYyk6CisgICAgICAgIChQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24pOgor
ICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkNvbG9yOjpncmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpSR0JDb2xvcjo6Ymx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6YWxwaGEp
OgorICAgICAgICAqIGNzcy9SZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZWN0QmFzZTo6UmVj
dEJhc2UpOgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAoUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Q6OlJl
Y3QpOgorICAgICAgICAoUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWFkOjpjbG9uZUZvckNT
U09NKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWQ6OlF1YWQpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJW
YWx1ZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAg
ICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NGaWx0ZXJW
YWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKToKKyAgICAg
ICAgKiBzdmcvU1ZHQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OlNWR0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OmNs
b25lRm9yQ1NTT00pOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgorICAgICAgICAoU1ZHQ29s
b3IpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YWludDo6U1ZHUGFpbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYWludDo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAg
ICAgIChTVkdQYWludCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KToKKwogMjAxMi0wNC0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbQ01ha2VdIENsZWFudXAgV1RGIGluY2x1ZGUgZGlyZWN0b3JpZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCShy
ZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVl
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOSBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogCisgICAgLy8gU2NyaXB0cyBzaG91bGQgb25seSBldmVyIHNlZSBjbG9u
ZWQgQ1NTVmFsdWVzLCBuZXZlciB0aGUgaW50ZXJuYWwgb25lcy4KKyAgICBBU1NFUlQodmFsdWUt
PmlzQ1NTT01TYWZlKCkpOworCiAgICAgSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIHZhbHVlKTsKIAogICAgIGlmICh3cmFwcGVyKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjU2LDcgKzI2NTYs
OCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUtPmNs
b25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0eU5hbWUpCkBAIC0yNjk2
LDcgKzI2OTcsOCBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vCiAg
ICAgCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0g
ICAgcmV0dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0
dXJuIHZhbHVlID8gdmFsdWUtPmNsb25lRm9yQ1NTT00oKSA6IDA7CiB9CiAKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMTggQEAgU3RyaW5nIENT
U0ltYWdlU2V0VmFsdWU6OmN1c3RvbUNzc1RleHQoKQogICAgIHJldHVybiAiLXdlYmtpdC1pbWFn
ZS1zZXQoIiArIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOwogfQogCitDU1NJ
bWFnZVNldFZhbHVlOjpDU1NJbWFnZVNldFZhbHVlKGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNs
b25lRnJvbSkKKyAgICA6IENTU1ZhbHVlTGlzdChjbG9uZUZyb20pCisgICAgLCBtX2FjY2Vzc2Vk
QmVzdEZpdEltYWdlKGZhbHNlKQoreworICAgIC8vIE5vbi1DU1NWYWx1ZUxpc3QgZGF0YSBpcyBu
b3QgYWNjZXNpYmxlIHRocm91Z2ggQ1NTIE9NLCBubyBuZWVkIHRvIGNsb25lLgorfQorCitQYXNz
UmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+IENTU0ltYWdlU2V0VmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTSW1hZ2VTZXRWYWx1ZSgqdGhp
cykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAkocmV2
aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3I7CiAgICAgfTsKIAorICAgIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VXaXRoU2NhbGUg
YmVzdEltYWdlRm9yU2NhbGVGYWN0b3IoKTsKIAogcHJpdmF0ZToKICAgICBDU1NJbWFnZVNldFZh
bHVlKCk7CisgICAgQ1NTSW1hZ2VTZXRWYWx1ZShjb25zdCBDU1NJbWFnZVNldFZhbHVlJiBjbG9u
ZUZyb20pOwogCiAgICAgdm9pZCBmaWxsSW1hZ2VTZXQoKTsKICAgICBzdGF0aWMgaW5saW5lIGJv
b2wgY29tcGFyZUJ5U2NhbGVGYWN0b3IoSW1hZ2VXaXRoU2NhbGUgZmlyc3QsIEltYWdlV2l0aFNj
YWxlIHNlY29uZCkgeyByZXR1cm4gZmlyc3Quc2NhbGVGYWN0b3IgPCBzZWNvbmQuc2NhbGVGYWN0
b3I7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2
aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDQxICszMzIsNjkgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6
On5DU1NQcmltaXRpdmVWYWx1ZSgpCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkK
IHsKICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBDU1Nf
U1RSSU5HOgotICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgIGNhc2UgQ1NTX0FUVFI6Ci0g
ICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKLSAgICAgICAgICAgIGlmIChtX3ZhbHVl
LnN0cmluZykKLSAgICAgICAgICAgICAgICBtX3ZhbHVlLnN0cmluZy0+ZGVyZWYoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19DT1VOVEVSOgotICAgICAgICAgICAgbV92
YWx1ZS5jb3VudGVyLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6Ci0gICAgICAgICAgICBtX3ZhbHVlLnJlY3QtPmRlcmVmKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfUVVBRDoKLSAgICAgICAgICAgIG1fdmFsdWUucXVh
ZC0+ZGVyZWYoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19QQUlSOgot
ICAgICAgICAgICAgbV92YWx1ZS5wYWlyLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTX1VSSToKKyAgICBjYXNlIENTU19BVFRS
OgorICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKKyAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09M
T1I6CisgICAgICAgIGlmIChtX3ZhbHVlLnN0cmluZykKKyAgICAgICAgICAgIG1fdmFsdWUuc3Ry
aW5nLT5kZXJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19DT1VOVEVSOgorICAg
ICAgICBtX3ZhbHVlLmNvdW50ZXItPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTX1JFQ1Q6CisgICAgICAgIG1fdmFsdWUucmVjdC0+ZGVyZWYoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NfUVVBRDoKKyAgICAgICAgbV92YWx1ZS5xdWFkLT5kZXJlZigpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU19QQUlSOgorICAgICAgICBtX3ZhbHVlLnBhaXItPmRl
cmVmKCk7CisgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAg
ICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjoKLSAgICAgICAgICAgIGlmIChtX3ZhbHVl
LnJlZ2lvbikKLSAgICAgICAgICAgICAgICBtX3ZhbHVlLnJlZ2lvbi0+ZGVyZWYoKTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgIGlm
IChtX3ZhbHVlLnJlZ2lvbikKKyAgICAgICAgICAgIG1fdmFsdWUucmVnaW9uLT5kZXJlZigpOwor
ICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICBjYXNlIENTU19DQUxDOgotICAgICAgICAg
ICAgbV92YWx1ZS5jYWxjLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTX1NIQVBFOgotICAgICAgICAgICAgbV92YWx1ZS5zaGFwZS0+ZGVyZWYoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NfQ0FMQzoKKyAgICAgICAgbV92YWx1ZS5jYWxjLT5kZXJlZigpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU19TSEFQRToKKyAgICAgICAgbV92YWx1ZS5zaGFwZS0+ZGVyZWYo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTX1BB
UlNFUl9JTlRFR0VSOgorICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NfRU1T
OgorICAgIGNhc2UgQ1NTX0VYUzoKKyAgICBjYXNlIENTU19SRU1TOgorICAgIGNhc2UgQ1NTX1BY
OgorICAgIGNhc2UgQ1NTX0NNOgorICAgIGNhc2UgQ1NTX01NOgorICAgIGNhc2UgQ1NTX0lOOgor
ICAgIGNhc2UgQ1NTX1BUOgorICAgIGNhc2UgQ1NTX1BDOgorICAgIGNhc2UgQ1NTX0RFRzoKKyAg
ICBjYXNlIENTU19SQUQ6CisgICAgY2FzZSBDU1NfR1JBRDoKKyAgICBjYXNlIENTU19NUzoKKyAg
ICBjYXNlIENTU19TOgorICAgIGNhc2UgQ1NTX0haOgorICAgIGNhc2UgQ1NTX0tIWjoKKyAgICBj
YXNlIENTU19UVVJOOgorICAgIGNhc2UgQ1NTX1ZXOgorICAgIGNhc2UgQ1NTX1ZIOgorICAgIGNh
c2UgQ1NTX1ZNSU46CisgICAgY2FzZSBDU1NfSURFTlQ6CisgICAgY2FzZSBDU1NfUkdCQ09MT1I6
CisgICAgY2FzZSBDU1NfRElNRU5TSU9OOgorICAgIGNhc2UgQ1NTX1VOS05PV046CisgICAgY2Fz
ZSBDU1NfUEFSU0VSX09QRVJBVE9SOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9JREVOVElGSUVSOgor
ICAgICAgICBicmVhazsKICAgICB9Ci0KICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gMDsKICAg
ICBpZiAobV9oYXNDYWNoZWRDU1NUZXh0KSB7CiAgICAgICAgIGNzc1RleHRDYWNoZSgpLnJlbW92
ZSh0aGlzKTsKQEAgLTEwNTgsNCArMTA4Niw4NyBAQCBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6
OnZpZXdwb3J0UGVyY2VuCiAgICAgcmV0dXJuIHZpZXdwb3J0TGVuZ3RoOwogfQogCitQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgp
IGNvbnN0Cit7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisKKyAgICBz
d2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKKyAgICBjYXNlIENTU19TVFJJTkc6CisgICAg
Y2FzZSBDU1NfVVJJOgorICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9O
QU1FOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUu
c3RyaW5nLCBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5cGUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfQ09VTlRFUjoKKyAgICAgICAgcmVzdWx0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLmNvdW50ZXItPmNsb25lRm9yQ1NTT00oKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1JFQ1Q6CisgICAgICAgIHJlc3VsdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5yZWN0LT5jbG9uZUZvckNTU09NKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAgICByZXN1bHQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUucXVhZC0+Y2xvbmVGb3JDU1NPTSgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfUEFJUjoKKyAgICAgICAgLy8gUGFpciBpcyBub3Qg
ZXhwb3NlZCB0byB0aGUgQ1NTT00sIG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KKyAgICAgICAg
cmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnBhaXIpOworICAgICAg
ICBicmVhazsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgY2FzZSBDU1NfREFT
SEJPQVJEX1JFR0lPTjoKKyAgICAgICAgLy8gRGFzaGJvYXJkUmVnaW9uIGlzIG5vdCBleHBvc2Vk
IHRvIHRoZSBDU1NPTSwgbm8gbmVlZCBmb3IgYSBkZWVwIGNsb25lLgorICAgICAgICByZXN1bHQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUucmVnaW9uKTsKKyAgICAgICAgYnJl
YWs7CisjZW5kaWYKKyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICAvLyBDU1NDYWxjVmFsdWUg
aXMgbm90IGV4cG9zZWQgdG8gdGhlIENTU09NLCBubyBuZWVkIGZvciBhIGRlZXAgY2xvbmUuCisg
ICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5jYWxjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfU0hBUEU6CisgICAgICAgIC8vIENTU1NoYXBl
VmFsdWUgaXMgbm90IGV4cG9zZWQgdG8gdGhlIENTU09NLCBubyBuZWVkIGZvciBhIGRlZXAgY2xv
bmUuCisgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5z
aGFwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX05VTUJFUjoKKyAgICBjYXNlIENT
U19QQVJTRVJfSU5URUdFUjoKKyAgICBjYXNlIENTU19QRVJDRU5UQUdFOgorICAgIGNhc2UgQ1NT
X0VNUzoKKyAgICBjYXNlIENTU19FWFM6CisgICAgY2FzZSBDU1NfUkVNUzoKKyAgICBjYXNlIENT
U19QWDoKKyAgICBjYXNlIENTU19DTToKKyAgICBjYXNlIENTU19NTToKKyAgICBjYXNlIENTU19J
TjoKKyAgICBjYXNlIENTU19QVDoKKyAgICBjYXNlIENTU19QQzoKKyAgICBjYXNlIENTU19ERUc6
CisgICAgY2FzZSBDU1NfUkFEOgorICAgIGNhc2UgQ1NTX0dSQUQ6CisgICAgY2FzZSBDU1NfTVM6
CisgICAgY2FzZSBDU1NfUzoKKyAgICBjYXNlIENTU19IWjoKKyAgICBjYXNlIENTU19LSFo6Cisg
ICAgY2FzZSBDU1NfVFVSTjoKKyAgICBjYXNlIENTU19WVzoKKyAgICBjYXNlIENTU19WSDoKKyAg
ICBjYXNlIENTU19WTUlOOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG1fdmFsdWUubnVtLCBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5
cGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfSURFTlQ6CisgICAgICAgIHJlc3Vs
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKG1fdmFsdWUuaWRlbnQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICAgICAgcmVzdWx0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKG1fdmFsdWUucmdiY29sb3IpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU19ESU1FTlNJT046CisgICAgY2FzZSBDU1NfVU5LTk9XTjoK
KyAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5U
SUZJRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChyZXN1bHQpCisgICAg
ICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0
IENTU1N0eWxlU2hlZXQqKTsKIAogICAgIExlbmd0aCB2aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjbG9uZUZvckNTU09N
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDU1NPTVNhZmUoKSB7IG1faXNDU1NPTVNhZmUgPSB0cnVl
OyB9CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IGludCB2cy4gdW5zaWduZWQgb3ZlcmxvYWRp
bmcgaXMgdG9vIHN1YnRsZSB0byBkaXN0aW5ndWlzaCB0aGUgY29sb3IgYW5kIGlkZW50aWZpZXIg
Y2FzZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDIzIEBAIGNsYXNzIFNhbWVTaXplQXNDU1NWYWx1ZSA6IHB1YmxpYyBSZWZDb3UKIH07CiAK
IENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NWYWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NW
YWx1ZSksIENTU192YWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7CisgICAgCitjbGFzcyBUZXh0Q2xv
bmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q2xvbmVDU1NWYWx1ZShj
bGFzc1R5cGUsIHRleHQpKTsgfQorCisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCB7IHJldHVy
biBtX2Nzc1RleHQ7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0Q2xvbmVDU1NWYWx1ZShDbGFzc1R5
cGUgY2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpIAorICAgICAgICA6IENTU1ZhbHVlKGNs
YXNzVHlwZSwgLyppc0NTU09NU2FmZSovIHRydWUpCisgICAgICAgICwgbV9jc3NUZXh0KHRleHQp
CisgICAgeworICAgICAgICBtX2lzVGV4dENsb25lID0gdHJ1ZTsKKyAgICB9CisKKyAgICBTdHJp
bmcgbV9jc3NUZXh0OworfTsKIAogYm9vbCBDU1NWYWx1ZTo6aXNJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpIGNvbnN0CiB7CkBAIC04NCw2ICsxMDEsOSBAQCBDU1NWYWx1ZTo6VHlwZSBDU1NWYWx1ZTo6
Y3NzVmFsdWVUeXBlKCkgCiAKIHZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
KQogeworICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgZm9yIGludGVybmFsIGluc3RhbmNl
cyBvbmx5LgorICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSk7CisKICAgICBpZiAoaXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMp
LT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKICAgICBlbHNlIGlm
IChpc1ZhbHVlTGlzdCgpKQpAQCAtOTYsNiArMTE2LDEyIEBAIHZvaWQgQ1NTVmFsdWU6OmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKEwKIAogU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QK
IHsKKyAgICBpZiAobV9pc1RleHRDbG9uZSkgeworICAgICAgICAgQVNTRVJUKGlzQ1NTT01TYWZl
KCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENsb25lQ1NTVmFsdWUq
Pih0aGlzKS0+Y3NzVGV4dCgpOworICAgIH0KKyAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkgfHwg
aXNTdWJ0eXBlRXhwb3NlZFRvQ1NTT00oKSk7CisKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7
CiAgICAgY2FzZSBBc3BlY3RSYXRpb0NsYXNzOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHRoaXMpLT5jdXN0b21Dc3NUZXh0KCk7CkBAIC0x
NzIsNiArMTk4LDEzIEBAIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAKIHZvaWQg
Q1NTVmFsdWU6OmRlc3Ryb3koKQogeworICAgIGlmIChtX2lzVGV4dENsb25lKSB7CisgICAgICAg
IEFTU0VSVChpc0NTU09NU2FmZSgpKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFRleHRD
bG9uZUNTU1ZhbHVlKj4odGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KCFpc0NTU09NU2FmZSgpIHx8IGlzU3VidHlwZUV4cG9zZWRUb0NTU09NKCkpOworCiAgICAgc3dp
dGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKICAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlvVmFsdWUqPih0aGlzKTsKQEAgLTI3NSw0
ICszMDgsMzMgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJveSgpCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1ZhbHVlOjpjbG9uZUZvckNTU09N
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBQcmltaXRp
dmVDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyAgICBjYXNlIFZhbHVlTGlzdENsYXNzOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4odGhpcyktPmNs
b25lRm9yQ1NTT00oKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgY2FzZSBXZWJLaXRD
U1NGaWx0ZXJDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdENT
U0ZpbHRlclZhbHVlKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyNlbmRpZgorICAgIGNhc2Ug
V2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CisjaWYg
RU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgY2FzZSBJbWFnZVNldENsYXNzOgorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW1hZ2VTZXRWYWx1ZSo+KHRoaXMpLT5jbG9uZUZv
ckNTU09NKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgU1ZHQ29sb3JDbGFz
czoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPmNs
b25lRm9yQ1NTT00oKTsKKyAgICBjYXNlIFNWR1BhaW50Q2xhc3M6CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTVkdQYWludCo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CisjZW5k
aWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoIWlzU3VidHlwZUV4cG9zZWRUb0NTU09N
KCkpOworICAgICAgICByZXR1cm4gVGV4dENsb25lQ1NTVmFsdWU6OmNyZWF0ZShjbGFzc1R5cGUo
KSwgY3NzVGV4dCgpKTsKKyAgICB9Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCShy
ZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBDU1NWYWx1ZV9oCiAjZGVmaW5lIENT
U1ZhbHVlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJLVVJMSGFz
aC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0yOSw5ICszMCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
U1NTdHlsZVNoZWV0OworICAgIAorLy8gRklYTUU6IFRoZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBz
dWJjbGFzc2VzIHNob3VsZCBiZSB0dXJuZWQgaW50byBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1
ZSkuCisvLyBUaGUgZmV3IHN1YnR5cGVzIHRoYXQgYXJlIGFjdHVhbGx5IGV4cG9zZWQgaW4gQ1NT
T00gY2FuIGJlIHNlZW4gaW4gdGhlIGNsb25lRm9yQ1NTT00oKSBmdW5jdGlvbi4KKy8vIFRoZXkg
c2hvdWxkIGJlIGhhbmRsZWQgYnkgc2VwYXJhdGUgd3JhcHBlciBjbGFzc2VzLgogCi10eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwotCisvLyBQbGVhc2UgZG9uJ3QgZXhwb3NlIG1vcmUgQ1NTVmFs
dWUgdHlwZXMgdG8gdGhlIHdlYi4KIGNsYXNzIENTU1ZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1NTVmFsdWU+IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewpAQCAtOTAsNiArOTQsMTggQEAg
cHVibGljOgogICAgIGJvb2wgaXNTVkdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBl
ID09IFNWR0NvbG9yQ2xhc3MgfHwgbV9jbGFzc1R5cGUgPT0gU1ZHUGFpbnRDbGFzczsgfQogICAg
IGJvb2wgaXNTVkdQYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNWR1BhaW50
Q2xhc3M7IH0KICNlbmRpZgorICAgIAorICAgIGJvb2wgaXNDU1NPTVNhZmUoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ1NTT01TYWZlOyB9CisgICAgYm9vbCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgp
IGNvbnN0CisgICAgeyAKKyAgICAgICAgcmV0dXJuIGlzUHJpbWl0aXZlVmFsdWUoKSAKKyNpZiBF
TkFCTEUoU1ZHKQorICAgICAgICAgICAgfHwgaXNTVkdDb2xvcigpCisjZW5kaWYKKyAgICAgICAg
ICAgIHx8IGlzVmFsdWVMaXN0KCk7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IENTU1N0eWxlU2hlZXQqKTsKIApAQCAtMTU5LDgg
KzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDbGFzc1R5cGUgY2xhc3NUeXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q2xhc3NUeXBlPihtX2NsYXNzVHlwZSk7IH0KIAotICAgIGV4
cGxpY2l0IENTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUpCi0gICAgICAgIDogbV9wcmltaXRp
dmVVbml0VHlwZSgwKQorICAgIGV4cGxpY2l0IENTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUs
IGJvb2wgaXNDU1NPTVNhZmUgPSBmYWxzZSkKKyAgICAgICAgOiBtX2lzQ1NTT01TYWZlKGlzQ1NT
T01TYWZlKQorICAgICAgICAsIG1faXNUZXh0Q2xvbmUoZmFsc2UpCisgICAgICAgICwgbV9wcmlt
aXRpdmVVbml0VHlwZSgwKQogICAgICAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkKICAg
ICAgICAgLCBtX2lzUXVpcmtWYWx1ZShmYWxzZSkKICAgICAgICAgLCBtX3ZhbHVlTGlzdFNlcGFy
YXRvcihTcGFjZVNlcGFyYXRvcikKQEAgLTE3NywxMyArMTk1LDE1IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZXN0cm95KCk7CiAKIHByb3RlY3RlZDoKKyAgICB1bnNpZ25lZCBtX2lzQ1NTT01TYWZl
IDogMTsKKyAgICB1bnNpZ25lZCBtX2lzVGV4dENsb25lIDogMTsKICAgICAvLyBUaGUgYml0cyBp
biB0aGlzIHNlY3Rpb24gYXJlIG9ubHkgdXNlZCBieSBzcGVjaWZpYyBzdWJjbGFzc2VzIGJ1dCBr
ZXB0IGhlcmUKICAgICAvLyB0byBtYXhpbWl6ZSBzdHJ1Y3QgcGFja2luZy4KIAogICAgIC8vIENT
U1ByaW1pdGl2ZVZhbHVlIGJpdHM6Ci0gICAgdW5zaWduZWQgY2hhciBtX3ByaW1pdGl2ZVVuaXRU
eXBlIDogNzsgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcwotICAgIG11dGFibGUgYm9v
bCBtX2hhc0NhY2hlZENTU1RleHQgOiAxOwotICAgIGJvb2wgbV9pc1F1aXJrVmFsdWUgOiAxOwor
ICAgIHVuc2lnbmVkIG1fcHJpbWl0aXZlVW5pdFR5cGUgOiA3OyAvLyBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzCisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc0NhY2hlZENTU1RleHQgOiAx
OworICAgIHVuc2lnbmVkIG1faXNRdWlya1ZhbHVlIDogMTsKIAogICAgIHVuc2lnbmVkIGNoYXIg
bV92YWx1ZUxpc3RTZXBhcmF0b3IgOiBWYWx1ZUxpc3RTZXBhcmF0b3JCaXRzOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw0ICsx
NDMsMTggQEAgdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJlc291cmNlU3R5bGVVUgogICAgICAg
ICBtX3ZhbHVlc1tpXS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgc3R5bGVTaGVldCk7
CiB9CiAKK0NTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xv
bmVGcm9tKQorICAgIDogQ1NTVmFsdWUoY2xvbmVGcm9tLmNsYXNzVHlwZSgpLCAvKiBpc0NTU09N
U2FmZSAqLyB0cnVlKQoreworICAgIG1fdmFsdWVMaXN0U2VwYXJhdG9yID0gY2xvbmVGcm9tLm1f
dmFsdWVMaXN0U2VwYXJhdG9yOworICAgIG1fdmFsdWVzLnJlc2l6ZShjbG9uZUZyb20ubV92YWx1
ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIG1fdmFsdWVzW2ldID0gY2xvbmVGcm9tLm1fdmFsdWVzW2ldLT5jbG9u
ZUZvckNTU09NKCk7Cit9CisKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6
OmNsb25lRm9yQ1NTT00oKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTVmFs
dWVMaXN0KCp0aGlzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVMaXN0LmgJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsMTIgQEAgcHVi
bGljOgogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgQ1NTU3R5bGVTaGVl
dCopOworICAgIAorICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjbG9uZUZvckNTU09NKCkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBDU1NWYWx1ZUxpc3QoQ2xhc3NUeXBlLCBWYWx1ZUxp
c3RTZXBhcmF0b3IpOworICAgIENTU1ZhbHVlTGlzdChjb25zdCBDU1NWYWx1ZUxpc3QmIGNsb25l
RnJvbSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTVmFsdWVMaXN0KFZhbHVlTGlzdFNl
cGFyYXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgJKHJldmlzaW9uIDExMzU0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAgICAg
dm9pZCBzZXRMaXN0U3R5bGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxl
KSB7IG1fbGlzdFN0eWxlID0gbGlzdFN0eWxlOyB9CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJhdG9yKSB7IG1fc2VwYXJhdG9yID0gc2Vw
YXJhdG9yOyB9CisgICAgCisgICAgUGFzc1JlZlB0cjxDb3VudGVyPiBjbG9uZUZvckNTU09NKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUobV9pZGVudGlmaWVyID8gbV9pZGVu
dGlmaWVyLT5jbG9uZUZvckNTU09NKCkgOiAwCisgICAgICAgICAgICAsIG1fbGlzdFN0eWxlID8g
bV9saXN0U3R5bGUtPmNsb25lRm9yQ1NTT00oKSA6IDAKKyAgICAgICAgICAgICwgbV9zZXBhcmF0
b3IgPyBtX3NlcGFyYXRvci0+Y2xvbmVGb3JDU1NPTSgpIDogMCk7CisgICAgfQogCiBwcml2YXRl
OgogICAgIENvdW50ZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllciwg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMTEzNTQ5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6c2V0CiAgICAgLy8gRklYTUU6IERldGVjdCBzeW50YXggZXJyb3Jz
IGFuZCBzZXQgZWMuCiAgICAgbV9wcm9wZXJ0eVNldC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBj
b250ZXh0U3R5bGVTaGVldCgpKTsKIAotICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBk
aWRNdXRhdGUoKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIG11dGF0aW9u
U2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAogI2VuZGlmCkBAIC0xNjYsNyArMTY2
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZQogICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3Byb3BlcnR5
U2V0LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgIHJldHVybiBjbG9uZUFu
ZENhY2hlRm9yQ1NTT00obV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0
eUlEKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0eU5hbWUpCkBAIC0yMTgsNyAr
MjE4LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogICAgIGlm
IChjaGFuZ2VkKSB7CiAgICAgICAgIC8vIENTUyBET00gcmVxdWlyZXMgcmFpc2luZyBTWU5UQVhf
RVJSIG9mIHBhcnNpbmcgZmFpbGVkLCBidXQgdGhpcyBpcyB0b28gZGFuZ2Vyb3VzIGZvciBjb21w
YXRpYmlsaXR5LAogICAgICAgICAvLyBzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyOTY+LgotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAg
IGRpZE11dGF0ZSgpOwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgIG11
dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAjZW5kaWYKQEAgLTIzNyw3ICsy
MzcsNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyCiAgICAgU3Ry
aW5nIHJlc3VsdDsKICAgICBib29sIGNoYW5nZXMgPSBtX3Byb3BlcnR5U2V0LT5yZW1vdmVQcm9w
ZXJ0eShwcm9wZXJ0eUlELCAmcmVzdWx0KTsKICAgICBpZiAoY2hhbmdlcykgewotICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAgIGRpZE11dGF0ZSgpOwogI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9u
UmVjb3JkKCk7CiAjZW5kaWYKQEAgLTI0Nyw3ICsyNDcsNyBAQCBTdHJpbmcgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpyCiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCkKIHsgCi0gICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmdldFByb3Bl
cnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7IAorICAgIHJldHVybiBjbG9uZUFuZENhY2hlRm9yQ1NT
T00obV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKS5nZXQoKSk7
CiB9CiAKIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCkBAIC0yNjMsMTMgKzI2Mywz
NSBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0CiAgICAgZWMgPSAw
OwogICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogICAgIGlmIChjaGFu
Z2VkKSB7Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgZGlkTXV0YXRl
KCk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgbXV0YXRpb25TY29w
ZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgogICAgIH0KIH0KIAordm9pZCBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmRpZE11dGF0ZSgpCit7CisgICAgbV9jc3NvbUNT
U1ZhbHVlQ2xvbmVzLmNsZWFyKCk7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworfQorCitD
U1NWYWx1ZSogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFuZENhY2hlRm9y
Q1NTT00oQ1NTVmFsdWUqIGludGVybmFsVmFsdWUpCit7CisgICAgaWYgKCFpbnRlcm5hbFZhbHVl
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFp
biB0aGUgb2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZv
Y2F0aW9ucy4KKyAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlz
IG5vdCBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxk
IGJlIHJlbW92ZWQuCisgICAgaWYgKCFtX2Nzc29tQ1NTVmFsdWVDbG9uZXMpCisgICAgICAgIG1f
Y3Nzb21DU1NWYWx1ZUNsb25lcyA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPENTU1ZhbHVlKiwgUmVm
UHRyPENTU1ZhbHVlPiA+KTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFsdWU+JiBjbG9uZWRWYWx1
ZSA9IG1fY3Nzb21DU1NWYWx1ZUNsb25lcy0+YWRkKGludGVybmFsVmFsdWUsIFJlZlB0cjxDU1NW
YWx1ZT4oKSkuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAoIWNsb25lZFZhbHVlKQorICAgICAg
ICBjbG9uZWRWYWx1ZSA9IGludGVybmFsVmFsdWUtPmNsb25lRm9yQ1NTT00oKTsKKyAgICByZXR1
cm4gY2xvbmVkVmFsdWUuZ2V0KCk7Cit9CisKIENTU1N0eWxlU2hlZXQqIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7IAogICAgIHJldHVy
biBjb250ZXh0U3R5bGVTaGVldCgpOyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDExMzU0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDU1NT
dHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpIHsgfSAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpIHsgfQorICAgIAorICAgIHZvaWQg
ZGlkTXV0YXRlKCk7CisgICAgQ1NTVmFsdWUqIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShDU1NWYWx1
ZSopOwogICAgIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUHJvcGVydHlTZXQqIG1fcHJvcGVydHlT
ZXQ7CisgICAgT3duUHRyPEhhc2hNYXA8Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+ID4gPiBt
X2Nzc29tQ1NTVmFsdWVDbG9uZXM7CiB9OwogCiBjbGFzcyBTdHlsZVJ1bGVDU1NTdHlsZURlY2xh
cmF0aW9uIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvUkdCQ29sb3IuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvUkdCQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNSArMzgsMzQgQEAgUGFzc1Jl
ZlB0cjxSR0JDb2xvcj4gUkdCQ29sb3I6OmNyZWF0ZSh1bgogUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gUkdCQ29sb3I6OnJlZCgpCiB7CiAgICAgdW5zaWduZWQgdmFsdWUgPSAobV9yZ2JD
b2xvciA+PiAxNikgJiAweEZGOwotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgLy8gVW5pcXVlIGluc3RhbmNlcyBh
cmUgc2FmZS4KKyAgICByZXN1bHQtPnNldENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6
Z3JlZW4oKQogewogICAgIHVuc2lnbmVkIHZhbHVlID0gKG1fcmdiQ29sb3IgPj4gOCkgJiAweEZG
OwotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1
bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsKKyAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29s
b3I6OmJsdWUoKQogewogICAgIHVuc2lnbmVkIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0g
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKKyAgICByZXN1bHQtPnNldENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6
YWxwaGEoKQogewogICAgIGZsb2F0IHZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNv
bG9yID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwor
ICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9S
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAkocmV2aXNpb24g
MTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsMTQgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgUmVjdEJhc2UoKSB7IH0K
KyAgICBSZWN0QmFzZShjb25zdCBSZWN0QmFzZSYgY2xvbmVGcm9tKQorICAgICAgICA6IG1fdG9w
KGNsb25lRnJvbS5tX3RvcCA/IGNsb25lRnJvbS5tX3RvcC0+Y2xvbmVGb3JDU1NPTSgpIDogMCkK
KyAgICAgICAgLCBtX3JpZ2h0KGNsb25lRnJvbS5tX3JpZ2h0ID8gY2xvbmVGcm9tLm1fcmlnaHQt
PmNsb25lRm9yQ1NTT00oKSA6IDApCisgICAgICAgICwgbV9ib3R0b20oY2xvbmVGcm9tLm1fYm90
dG9tID8gY2xvbmVGcm9tLm1fYm90dG9tLT5jbG9uZUZvckNTU09NKCkgOiAwKQorICAgICAgICAs
IG1fbGVmdChjbG9uZUZyb20ubV9sZWZ0ID8gY2xvbmVGcm9tLm1fbGVmdC0+Y2xvbmVGb3JDU1NP
TSgpIDogMCkKKyAgICB7CisgICAgfQorCiAgICAgflJlY3RCYXNlKCkgeyB9CiAKIHByaXZhdGU6
CkBAIC01MiwxNyArNjAsMjMgQEAgcHJpdmF0ZToKIGNsYXNzIFJlY3QgOiBwdWJsaWMgUmVjdEJh
c2UsIHB1YmxpYyBSZWZDb3VudGVkPFJlY3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSZWN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVjdCk7IH0KKyAgICAK
KyAgICBQYXNzUmVmUHRyPFJlY3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBhZG9w
dFJlZihuZXcgUmVjdCgqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVjdCgpIHsgfQorICAg
IFJlY3QoY29uc3QgUmVjdCYgY2xvbmVGcm9tKSA6IFJlY3RCYXNlKGNsb25lRnJvbSksIFJlZkNv
dW50ZWQ8UmVjdD4oKSB7IH0KIH07CiAKIGNsYXNzIFF1YWQgOiBwdWJsaWMgUmVjdEJhc2UsIHB1
YmxpYyBSZWZDb3VudGVkPFF1YWQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxR
dWFkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUXVhZCk7IH0KKyAgICAKKyAgICBQ
YXNzUmVmUHRyPFF1YWQ+IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihu
ZXcgUXVhZCgqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgUXVhZCgpIHsgfQorICAgIFF1YWQo
Y29uc3QgUXVhZCYgY2xvbmVGcm9tKSA6IFJlY3RCYXNlKGNsb25lRnJvbSksIFJlZkNvdW50ZWQ8
UXVhZD4oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAkocmV2aXNpb24gMTEzNTQ5KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTksNiArOTksMTcgQEAgU3RyaW5nIFdlYktpdENTU0ZpbHRlclZhbHVlOjpjdXN0
b21Dc3NUZQogICAgIHJldHVybiByZXN1bHQgKyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNzc1RleHQo
KSArICIpIjsKIH0KIAorV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OldlYktpdENTU0ZpbHRlclZhbHVl
KGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJiBjbG9uZUZyb20pCisgICAgOiBDU1NWYWx1ZUxp
c3QoY2xvbmVGcm9tKQorICAgICwgbV90eXBlKGNsb25lRnJvbS5tX3R5cGUpCit7Cit9CisKK1Bh
c3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjbG9u
ZUZvckNTU09NKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0Zp
bHRlclZhbHVlKCp0aGlzKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVS
UykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCShyZXZp
c2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsMTEgQEAgcHVibGljOgogCiAgICAgRmlsdGVy
T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
KyAgICBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTRmlsdGVyVmFsdWUoRmlsdGVyT3BlcmF0aW9u
VHlwZSk7CisgICAgV2ViS2l0Q1NTRmlsdGVyVmFsdWUoY29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFs
dWUmIGNsb25lRnJvbSk7CiAKICAgICBGaWx0ZXJPcGVyYXRpb25UeXBlIG1fdHlwZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAJ
KHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw0ICsxMTUsMTUgQEAgU3RyaW5nIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpjdXN0b21DcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K1dlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZShjb25zdCBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSYgY2xvbmVGcm9tKQorICAgIDogQ1NTVmFsdWVMaXN0KGNs
b25lRnJvbSkKKyAgICAsIG1fdHlwZShjbG9uZUZyb20ubV90eXBlKQoreworfQorCitQYXNzUmVm
UHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y2xv
bmVGb3JDU1NPTSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZSgqdGhpcykpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDkgKzY4LDEyIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0
OwogCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgCisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlKFRyYW5zZm9ybU9wZXJhdGlvblR5cGUpOworICAgIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlKGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlJiBjbG9uZUZyb20pOwogCiAg
ICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q29sb3IuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29s
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxOCBAQCBTdHJpbmcgU1ZHQ29sb3I6
OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU1ZHQ29s
b3I6OlNWR0NvbG9yKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFNWR0NvbG9yJiBjbG9uZUZy
b20pCisgICAgOiBDU1NWYWx1ZShjbGFzc1R5cGUsIC8qaXNDU1NPTVNhZmUqLyB0cnVlKQorICAg
ICwgbV9jb2xvcihjbG9uZUZyb20ubV9jb2xvcikKKyAgICAsIG1fY29sb3JUeXBlKGNsb25lRnJv
bS5tX2NvbG9yVHlwZSkKK3sKK30KKworUGFzc1JlZlB0cjxTVkdDb2xvcj4gU1ZHQ29sb3I6OmNs
b25lRm9yQ1NTT00oKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3Io
U1ZHQ29sb3JDbGFzcywgKnRoaXMpKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTEgKzcyLDE0IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCiAgICAgflNWR0NvbG9y
KCkgeyB9CisgICAgCisgICAgUGFzc1JlZlB0cjxTVkdDb2xvcj4gY2xvbmVGb3JDU1NPTSgpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjsKIAogICAgIFNWR0NvbG9yKENsYXNzVHlwZSwgY29uc3QgU1ZHQ29sb3JUeXBlJik7
CisgICAgU1ZHQ29sb3IoQ2xhc3NUeXBlLCBjb25zdCBTVkdDb2xvciYgY2xvbmVGcm9tKTsKIAog
ICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fY29sb3IgPSBjb2xvcjsg
fQogICAgIHZvaWQgc2V0Q29sb3JUeXBlKGNvbnN0IFNWR0NvbG9yVHlwZSYgdHlwZSkgeyBtX2Nv
bG9yVHlwZSA9IHR5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAkocmV2aXNpb24g
MTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTksNiArOTksMTggQEAgU3RyaW5nIFNWR1BhaW50OjpjdXN0b21Dc3NUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1NWR1BhaW50OjpTVkdQYWludChjb25zdCBT
VkdQYWludCYgY2xvbmVGcm9tKQorICAgIDogU1ZHQ29sb3IoU1ZHUGFpbnRDbGFzcywgY2xvbmVG
cm9tKQorICAgICwgbV9wYWludFR5cGUoY2xvbmVGcm9tLm1fcGFpbnRUeXBlKQorICAgICwgbV91
cmkoY2xvbmVGcm9tLm1fdXJpKQoreworfQorCitQYXNzUmVmUHRyPFNWR1BhaW50PiBTVkdQYWlu
dDo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQ
YWludCgqdGhpcykpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhaW50LmgJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYWludC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPFNWR1BhaW50
PiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIApAQCAtMTA1LDYgKzEwNyw3IEBAIHByaXZhdGU6
CiAKIHByaXZhdGU6CiAgICAgU1ZHUGFpbnQoY29uc3QgU1ZHUGFpbnRUeXBlJiwgY29uc3QgU3Ry
aW5nJiB1cmkgPSBTdHJpbmcoKSk7CisgICAgU1ZHUGFpbnQoY29uc3QgU1ZHUGFpbnQmIGNsb25l
RnJvbSk7CiAKICAgICBTVkdQYWludFR5cGUgbV9wYWludFR5cGU7CiAgICAgU3RyaW5nIG1fdXJp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24g
MTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5
bGVkRWxlbWVudDo6ZwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxl
UHJvcGVydHlTZXQ6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2RlKTsKICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmli
dXRlTmFtZShhdHRyLT5uYW1lKCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlE
LCBhdHRyLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
cHJvcGVydHlJRCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IHN0eWxlLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgIHJldHVybiBjc3NWYWx1ZSA/IGNzc1Zh
bHVlLT5jbG9uZUZvckNTU09NKCkgOiAwOwogfQogCiBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Omlu
c3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSBjb25zdAo=
</data>
<flag name="review"
          id="140841"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="140843"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136140</attachid>
            <date>2012-04-07 14:28:49 -0700</date>
            <delta_ts>2012-04-09 10:01:25 -0700</delta_ts>
            <desc>try to fix win build</desc>
            <filename>cssvalue-clone-4.patch</filename>
            <type>text/plain</type>
            <size>37001</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNSBAQAorMjAxMi0wNC0wNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgZXhwb3NlIGludGVy
bmFsIENTU1ZhbHVlcyBpbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNDI2CisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTVmFsdWVzIHJldHVybmVkIGZyb20gZnVuY3Rpb25z
IGxpa2UgQ1NTU3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgYXJlIGN1cnJl
bnRseQorICAgICAgICB0aGUgc2FtZSBpbnN0YW5jZXMgd2UgdXNlIGludGVybmFsbHkuIFRoaXMg
Y3JlYXRlcyB2YXJpb3VzIHByb2JsZW1zLiBUaGUgdmFsdWVzIGNhbid0IGJlIHNoYXJlZCBiZXR3
ZWVuIAorICAgICAgICBkb2N1bWVudHMgYXMgdGhlIHdyYXBwZXJzIHdvdWxkIGJlIHNoYXJlZCB0
b28uIEhhdmluZyB0byBtYWludGFpbiBwZXItZG9jdW1lbnQgQ1NTVmFsdWVQb29scyBjb21wbGlj
YXRlIAorICAgICAgICB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBpbmNyZWFzZSBtZW1vcnkgdXNhZ2Uu
IFRoaXMgYWxzbyBibG9ja3Mgc2hhcmluZyBzdHlsZSBzaGVldCBkYXRhIHN0cnVjdHVyZXMgCisg
ICAgICAgIGJldHdlZW4gZG9jdW1lbnRzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgY29uY2VwdCBvZiBDU1NPTS1zYWZlIENTU1ZhbHVlLiBPbmx5IHRoZSBzYWZlIHZhbHVl
cyBjYW4gYmUgd3JhcHBlZCBmb3IgSlMgYWNjZXNzLiAKKyAgICAgICAgVmFsdWVzIGFyZSB1bnNh
ZmUgYnkgZGVmYXVsdC4gVGhlIENTU09NIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBDU1NWYWx1ZXMg
Y3JlYXRlIHNhZmUgaW5zdGFuY2VzIGJ5CisgICAgICAgIGNsb25pbmcgdGhlIGludGVybmFsIHZh
bHVlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSB1c2Ugb2YgQVBJcyB0aGF0IHJldHVybiBDU1NW
YWx1ZXMgaXMgdmVyeSByYXJlICh0aGUgY3VycmVjdCBDU1NPTSBkcmFmdCBkZXByZWNhdGVzIHRo
ZW0pIGFuZAorICAgICAgICBjbG9uaW5nIGlzIGNoZWFwIGluIGFueSBjYXNlLiBGdXR1cmUgcGF0
Y2hlcyB3aWxsIGVsaW1pbmF0ZSB0aGUgcGVyLWRvY3VtZW50IHZhbHVlIHBvb2wgaW4gZmF2b3IK
KyAgICAgICAgb2YgYSBnbG9iYWwgb25lIGZvciBhIG1lbW9yeSB3aW4uCisgICAgICAgIAorICAg
ICAgICBJbiB0aGUgZnV0dXJlIHdlIHdhbnQgdG8gcmVwbGFjZSBpbnRlcm5hbGx5IHVzZWQgQ1NT
VmFsdWVzIHdpdGggdHJ1ZSBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZXMpIGFuZAorICAgICAg
ICB1c2UgQ1NTVmFsdWVzIGV4Y2x1c2l2ZWx5IGFzIHdyYXBwZXJzIChzaW1pbGFyIHRvIGhvdyBD
U1NTdHlsZVJ1bGUgd3JhcHMgaW50ZXJuYWwgU3R5bGVSdWxlKS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdlU2V0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVl
OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAg
ICAgICAoQ1NTSW1hZ2VTZXRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAg
ICAgICAgCisgICAgICAgICAgICBPcHBvcnR1bmlzdGljYWxseSBmaXggYSBzdHJpbmcgbGVhayBm
b3IgQ1NTX0NPVU5URVJfTkFNRSB2YWx1ZXMuCisgICAgICAgICAgICBBZGQgYWxsIGNhc2VzLCBy
ZW1vdmUgZGVmYXVsdC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpzZXRDU1NPTVNhZmUpOgorICAgICAgICAq
IGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHRDbG9u
ZUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDbG9uZUNTU1ZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENsb25lQ1NTVmFsdWU6OmNzc1RleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENsb25lQ1NTVmFsdWU6OlRleHRDbG9uZUNTU1ZhbHVlKToKKyAgICAg
ICAgCisgICAgICAgICAgICBNb3N0IG5vbi1wcmltaXRpdmUgdmFsdWUgdHlwZXMgYXJlIG5vdCBl
eHBvc2VkIGluIENTU09NLiBGb3IgdGhvc2Ugd2UgY3JlYXRlIGEgZHVtbXkgdmFsdWUKKyAgICAg
ICAgICAgIHRoYXQgY29udGFpbnMgb25seSB0aGUgZGF0YSB0aGF0IGlzIGFjY2Vzc2libGUgdGhv
dWdoIHRoZSBiYXNlIENTU1ZhbHVlIGludGVyZmFjZS4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ry
b3kpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAg
ICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNDU1NPTVNhZmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVmFsdWU6OmlzU3VidHlwZUV4cG9zZWRUb0NTU09NKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhbHVlOjpDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OkNTU1ZhbHVlTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y2xvbmVGb3JD
U1NPTSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAoQ1NTVmFsdWVM
aXN0KToKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgorICAgICAgICAoQ291bnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb3VudGVyOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmRpZE11
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y2xvbmVBbmRDYWNoZUZvckNTU09NKToKKyAgICAgICAgCisg
ICAgICAgICAgICBNYWludGFpbiBhIG1hcCBvZiBzYWZlIENTU1ZhbHVlcyBzbyB3ZSBjYW4gbWFp
bnRhaW4gb2JqZWN0IGlkZW50aXR5LgorICAgICAgICAKKyAgICAgICAgKiBjc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldE5lZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvUkdCQ29sb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UkdCQ29sb3I6OnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSR0JD
b2xvcjo6Z3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6UkdCQ29sb3I6OmJsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UkdCQ29sb3I6OmFscGhhKToKKyAgICAgICAgKiBjc3MvUmVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6OlJlY3RCYXNlKToKKyAgICAgICAgKFJlY3RCYXNlKToK
KyAgICAgICAgKFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdDo6Y2xvbmVGb3JDU1NPTSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWN0OjpSZWN0KToKKyAgICAgICAgKFF1YWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UXVhZDo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgIChXZWJDb3JlOjpRdWFk
OjpRdWFkKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OldlYktpdENTU0ZpbHRlclZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFs
dWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5o
OgorICAgICAgICAoV2ViS2l0Q1NTRmlsdGVyVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y2xvbmVGb3JDU1NPTSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpTVkdDb2xvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBzdmcv
U1ZHQ29sb3IuaDoKKyAgICAgICAgKFNWR0NvbG9yKToKKyAgICAgICAgKiBzdmcvU1ZHUGFpbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OlNWR1BhaW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmNsb25lRm9yQ1NTT00pOgorICAg
ICAgICAqIHN2Zy9TVkdQYWludC5oOgorICAgICAgICAoU1ZHUGFpbnQpOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1l
bnQ6OmdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisKIDIwMTItMDQtMDcgIFBhdHJpY2sgR2Fu
c3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NNYWtlXSBDbGVhbnVwIFdU
RiBpbmNsdWRlIGRpcmVjdG9yaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1ZhbHVlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDYgKzc2LDkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQog
ICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAorICAgIC8vIFNjcmlw
dHMgc2hvdWxkIG9ubHkgZXZlciBzZWUgY2xvbmVkIENTU1ZhbHVlcywgbmV2ZXIgdGhlIGludGVy
bmFsIG9uZXMuCisgICAgQVNTRVJUKHZhbHVlLT5pc0NTU09NU2FmZSgpKTsKKwogICAgIEpTRE9N
V3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCB2
YWx1ZSk7CiAKICAgICBpZiAod3JhcHBlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxMTM1NDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY1Niw3ICsyNjU2LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlYwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3Bl
cnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwor
ICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLT5jbG9uZUZvckNTU09NKCkgOiAwOwogfQogCiBTdHJp
bmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IFN0
cmluZyAmcHJvcGVydHlOYW1lKQpAQCAtMjY5Niw3ICsyNjk3LDggQEAgU3RyaW5nIENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVtbwogICAgIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewotICAgIHJldHVybiBnZXRQcm9wZXJ0eUNTU1ZhbHVl
KHByb3BlcnR5SUQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnR5SUQpOworICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLT5jbG9uZUZvckNT
U09NKCkgOiAwOwogfQogCiBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzksNiArMTM5LDE4IEBAIFN0cmluZyBDU1NJbWFnZVNldFZhbHVlOjpjdXN0b21Dc3NUZXh0
KCkKICAgICByZXR1cm4gIi13ZWJraXQtaW1hZ2Utc2V0KCIgKyBDU1NWYWx1ZUxpc3Q6OmN1c3Rv
bUNzc1RleHQoKSArICIpIjsKIH0KIAorQ1NTSW1hZ2VTZXRWYWx1ZTo6Q1NTSW1hZ2VTZXRWYWx1
ZShjb25zdCBDU1NJbWFnZVNldFZhbHVlJiBjbG9uZUZyb20pCisgICAgOiBDU1NWYWx1ZUxpc3Qo
Y2xvbmVGcm9tKQorICAgICwgbV9hY2Nlc3NlZEJlc3RGaXRJbWFnZShmYWxzZSkKK3sKKyAgICAv
LyBOb24tQ1NTVmFsdWVMaXN0IGRhdGEgaXMgbm90IGFjY2Vzc2libGUgdGhyb3VnaCBDU1MgT00s
IG5vIG5lZWQgdG8gY2xvbmUuCit9CisKK1Bhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gQ1NT
SW1hZ2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDU1NJbWFnZVNldFZhbHVlKCp0aGlzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfSU1BR0VfU0VUKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMSArNjAs
MTQgQEAgcHVibGljOgogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvcjsKICAgICB9OwogCisgICAg
UGFzc1JlZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisKIHBy
b3RlY3RlZDoKICAgICBJbWFnZVdpdGhTY2FsZSBiZXN0SW1hZ2VGb3JTY2FsZUZhY3RvcigpOwog
CiBwcml2YXRlOgogICAgIENTU0ltYWdlU2V0VmFsdWUoKTsKKyAgICBDU1NJbWFnZVNldFZhbHVl
KGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNsb25lRnJvbSk7CiAKICAgICB2b2lkIGZpbGxJbWFn
ZVNldCgpOwogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQnlTY2FsZUZhY3RvcihJbWFn
ZVdpdGhTY2FsZSBmaXJzdCwgSW1hZ2VXaXRoU2NhbGUgc2Vjb25kKSB7IHJldHVybiBmaXJzdC5z
Y2FsZUZhY3RvciA8IHNlY29uZC5zY2FsZUZhY3RvcjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNDEg
KzMzMiw2OSBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6fkNTU1ByaW1pdGl2ZVZhbHVlKCkKIHZvaWQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXAoKQogewogICAgIHN3aXRjaCAobV9wcmltaXRpdmVV
bml0VHlwZSkgewotICAgICAgICBjYXNlIENTU19TVFJJTkc6Ci0gICAgICAgIGNhc2UgQ1NTX1VS
SToKLSAgICAgICAgY2FzZSBDU1NfQVRUUjoKLSAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENP
TE9SOgotICAgICAgICAgICAgaWYgKG1fdmFsdWUuc3RyaW5nKQotICAgICAgICAgICAgICAgIG1f
dmFsdWUuc3RyaW5nLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTX0NPVU5URVI6Ci0gICAgICAgICAgICBtX3ZhbHVlLmNvdW50ZXItPmRlcmVmKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfUkVDVDoKLSAgICAgICAgICAgIG1fdmFs
dWUucmVjdC0+ZGVyZWYoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19R
VUFEOgotICAgICAgICAgICAgbV92YWx1ZS5xdWFkLT5kZXJlZigpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICBtX3ZhbHVlLnBhaXItPmRl
cmVmKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19TVFJJTkc6CisgICAgY2Fz
ZSBDU1NfVVJJOgorICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1F
OgorICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyAgICAgICAgaWYgKG1fdmFsdWUuc3Ry
aW5nKQorICAgICAgICAgICAgbV92YWx1ZS5zdHJpbmctPmRlcmVmKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTX0NPVU5URVI6CisgICAgICAgIG1fdmFsdWUuY291bnRlci0+ZGVyZWYo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfUkVDVDoKKyAgICAgICAgbV92YWx1ZS5y
ZWN0LT5kZXJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAg
ICBtX3ZhbHVlLnF1YWQtPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1BB
SVI6CisgICAgICAgIG1fdmFsdWUucGFpci0+ZGVyZWYoKTsKKyAgICAgICAgYnJlYWs7CiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVH
SU9OOgotICAgICAgICAgICAgaWYgKG1fdmFsdWUucmVnaW9uKQotICAgICAgICAgICAgICAgIG1f
dmFsdWUucmVnaW9uLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1Nf
REFTSEJPQVJEX1JFR0lPTjoKKyAgICAgICAgaWYgKG1fdmFsdWUucmVnaW9uKQorICAgICAgICAg
ICAgbV92YWx1ZS5yZWdpb24tPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAg
ICAgIGNhc2UgQ1NTX0NBTEM6Ci0gICAgICAgICAgICBtX3ZhbHVlLmNhbGMtPmRlcmVmKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICBt
X3ZhbHVlLnNoYXBlLT5kZXJlZigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICBtX3Zh
bHVlLmNhbGMtPmRlcmVmKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1NIQVBFOgor
ICAgICAgICBtX3ZhbHVlLnNoYXBlLT5kZXJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU19OVU1CRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6CisgICAgY2FzZSBDU1Nf
UEVSQ0VOVEFHRToKKyAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1NfRVhTOgorICAgIGNh
c2UgQ1NTX1JFTVM6CisgICAgY2FzZSBDU1NfUFg6CisgICAgY2FzZSBDU1NfQ006CisgICAgY2Fz
ZSBDU1NfTU06CisgICAgY2FzZSBDU1NfSU46CisgICAgY2FzZSBDU1NfUFQ6CisgICAgY2FzZSBD
U1NfUEM6CisgICAgY2FzZSBDU1NfREVHOgorICAgIGNhc2UgQ1NTX1JBRDoKKyAgICBjYXNlIENT
U19HUkFEOgorICAgIGNhc2UgQ1NTX01TOgorICAgIGNhc2UgQ1NTX1M6CisgICAgY2FzZSBDU1Nf
SFo6CisgICAgY2FzZSBDU1NfS0haOgorICAgIGNhc2UgQ1NTX1RVUk46CisgICAgY2FzZSBDU1Nf
Vlc6CisgICAgY2FzZSBDU1NfVkg6CisgICAgY2FzZSBDU1NfVk1JTjoKKyAgICBjYXNlIENTU19J
REVOVDoKKyAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICBjYXNlIENTU19ESU1FTlNJT046Cisg
ICAgY2FzZSBDU1NfVU5LTk9XTjoKKyAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6CisgICAg
Y2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGJyZWFrOwogICAgIH0KLQogICAg
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPSAwOwogICAgIGlmIChtX2hhc0NhY2hlZENTU1RleHQpIHsK
ICAgICAgICAgY3NzVGV4dENhY2hlKCkucmVtb3ZlKHRoaXMpOwpAQCAtMTA1OCw0ICsxMDg2LDg3
IEBAIExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6dmlld3BvcnRQZXJjZW4KICAgICByZXR1cm4g
dmlld3BvcnRMZW5ndGg7CiB9CiAKK1Bhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1By
aW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJlc3VsdDsKKworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkg
eworICAgIGNhc2UgQ1NTX1NUUklORzoKKyAgICBjYXNlIENTU19VUkk6CisgICAgY2FzZSBDU1Nf
QVRUUjoKKyAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CisgICAgICAgIHJlc3VsdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5zdHJpbmcsIHN0YXRpY19jYXN0PFVuaXRUeXBl
cz4obV9wcmltaXRpdmVVbml0VHlwZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19D
T1VOVEVSOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFs
dWUuY291bnRlci0+Y2xvbmVGb3JDU1NPTSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NfUkVDVDoKKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Zh
bHVlLnJlY3QtPmNsb25lRm9yQ1NTT00oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
X1FVQUQ6CisgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1
ZS5xdWFkLT5jbG9uZUZvckNTU09NKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19Q
QUlSOgorICAgICAgICAvLyBQYWlyIGlzIG5vdCBleHBvc2VkIHRvIHRoZSBDU1NPTSwgbm8gbmVl
ZCBmb3IgYSBkZWVwIGNsb25lLgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKG1fdmFsdWUucGFpcik7CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKKyAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOgorICAgICAgICAvLyBE
YXNoYm9hcmRSZWdpb24gaXMgbm90IGV4cG9zZWQgdG8gdGhlIENTU09NLCBubyBuZWVkIGZvciBh
IGRlZXAgY2xvbmUuCisgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
bV92YWx1ZS5yZWdpb24pOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTX0NB
TEM6CisgICAgICAgIC8vIENTU0NhbGNWYWx1ZSBpcyBub3QgZXhwb3NlZCB0byB0aGUgQ1NTT00s
IG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtX3ZhbHVlLmNhbGMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U19TSEFQRToKKyAgICAgICAgLy8gQ1NTU2hhcGVWYWx1ZSBpcyBub3QgZXhwb3NlZCB0byB0aGUg
Q1NTT00sIG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnNoYXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgorICAgIGNhc2Ug
Q1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NfRU1TOgorICAgIGNhc2UgQ1NTX0VYUzoKKyAg
ICBjYXNlIENTU19SRU1TOgorICAgIGNhc2UgQ1NTX1BYOgorICAgIGNhc2UgQ1NTX0NNOgorICAg
IGNhc2UgQ1NTX01NOgorICAgIGNhc2UgQ1NTX0lOOgorICAgIGNhc2UgQ1NTX1BUOgorICAgIGNh
c2UgQ1NTX1BDOgorICAgIGNhc2UgQ1NTX0RFRzoKKyAgICBjYXNlIENTU19SQUQ6CisgICAgY2Fz
ZSBDU1NfR1JBRDoKKyAgICBjYXNlIENTU19NUzoKKyAgICBjYXNlIENTU19TOgorICAgIGNhc2Ug
Q1NTX0haOgorICAgIGNhc2UgQ1NTX0tIWjoKKyAgICBjYXNlIENTU19UVVJOOgorICAgIGNhc2Ug
Q1NTX1ZXOgorICAgIGNhc2UgQ1NTX1ZIOgorICAgIGNhc2UgQ1NTX1ZNSU46CisgICAgICAgIHJl
c3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5udW0sIHN0YXRpY19jYXN0
PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU19JREVOVDoKKyAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIobV92YWx1ZS5pZGVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
X1JHQkNPTE9SOgorICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29s
b3IobV92YWx1ZS5yZ2Jjb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0RJTUVO
U0lPTjoKKyAgICBjYXNlIENTU19VTktOT1dOOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRP
UjoKKyAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKKyAgICBjYXNlIENTU19QQVJTRVJf
SEVYQ09MT1I6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiAxMTM1NDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjc1LDYgKzI3NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgQ1NTU3R5bGVTaGVldCopOwogCiAgICAgTGVu
Z3RoIHZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpOworICAgIAorICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKKyAgICB2b2lkIHNldENTU09N
U2FmZSgpIHsgbV9pc0NTU09NU2FmZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKICAgICAvLyBGSVhN
RTogaW50IHZzLiB1bnNpZ25lZCBvdmVybG9hZGluZyBpcyB0b28gc3VidGxlIHRvIGRpc3Rpbmd1
aXNoIHRoZSBjb2xvciBhbmQgaWRlbnRpZmllciBjYXNlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDI3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNhbWVTaXplQXNDU1NWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVT
aXplQXNDU1NWYWx1ZT4gewotICAgIHVuc2lnbmVkIGNoYXIgYml0ZmllbGRzWzJdOworICAgIHVp
bnQzMl90IGJpdGZpZWxkczsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NWYWx1ZSkg
PT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NWYWx1ZSksIENTU192YWx1ZV9zaG91bGRfc3RheV9zbWFs
bCk7CisgICAgCitjbGFzcyBUZXh0Q2xvbmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShD
bGFzc1R5cGUgY2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0Q2xvbmVDU1NWYWx1ZShjbGFzc1R5cGUsIHRleHQpKTsgfQorCisgICAgU3RyaW5n
IGNzc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2Nzc1RleHQ7IH0KKworcHJpdmF0ZToKKyAgICBU
ZXh0Q2xvbmVDU1NWYWx1ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQp
IAorICAgICAgICA6IENTU1ZhbHVlKGNsYXNzVHlwZSwgLyppc0NTU09NU2FmZSovIHRydWUpCisg
ICAgICAgICwgbV9jc3NUZXh0KHRleHQpCisgICAgeworICAgICAgICBtX2lzVGV4dENsb25lID0g
dHJ1ZTsKKyAgICB9CisKKyAgICBTdHJpbmcgbV9jc3NUZXh0OworfTsKIAogYm9vbCBDU1NWYWx1
ZTo6aXNJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIGNvbnN0CiB7CkBAIC04NCw2ICsxMDEsOSBAQCBD
U1NWYWx1ZTo6VHlwZSBDU1NWYWx1ZTo6Y3NzVmFsdWVUeXBlKCkgCiAKIHZvaWQgQ1NTVmFsdWU6
OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBD
U1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQogeworICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxs
ZWQgZm9yIGludGVybmFsIGluc3RhbmNlcyBvbmx5LgorICAgIEFTU0VSVCghaXNDU1NPTVNhZmUo
KSk7CisKICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMpLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBz
dHlsZVNoZWV0KTsKICAgICBlbHNlIGlmIChpc1ZhbHVlTGlzdCgpKQpAQCAtOTYsNiArMTE2LDEy
IEBAIHZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKEwKIAogU3RyaW5nIENT
U1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKKyAgICBpZiAobV9pc1RleHRDbG9uZSkgeworICAg
ICAgICAgQVNTRVJUKGlzQ1NTT01TYWZlKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgVGV4dENsb25lQ1NTVmFsdWUqPih0aGlzKS0+Y3NzVGV4dCgpOworICAgIH0KKyAgICBB
U1NFUlQoIWlzQ1NTT01TYWZlKCkgfHwgaXNTdWJ0eXBlRXhwb3NlZFRvQ1NTT00oKSk7CisKICAg
ICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CiAgICAgY2FzZSBBc3BlY3RSYXRpb0NsYXNzOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHRoaXMp
LT5jdXN0b21Dc3NUZXh0KCk7CkBAIC0xNzIsNiArMTk4LDEzIEBAIFN0cmluZyBDU1NWYWx1ZTo6
Y3NzVGV4dCgpIGNvbnN0CiAKIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogeworICAgIGlmICht
X2lzVGV4dENsb25lKSB7CisgICAgICAgIEFTU0VSVChpc0NTU09NU2FmZSgpKTsKKyAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PFRleHRDbG9uZUNTU1ZhbHVlKj4odGhpcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgQVNTRVJUKCFpc0NTU09NU2FmZSgpIHx8IGlzU3VidHlwZUV4cG9z
ZWRUb0NTU09NKCkpOworCiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQXNw
ZWN0UmF0aW9DbGFzczoKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlv
VmFsdWUqPih0aGlzKTsKQEAgLTI3NSw0ICszMDgsMzMgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJv
eSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1ZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlw
ZSgpKSB7CisgICAgY2FzZSBQcmltaXRpdmVDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyAg
ICBjYXNlIFZhbHVlTGlzdENsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTVmFsdWVMaXN0Kj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCisgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlKj4odGhpcyktPmNsb25lRm9yQ1NT
T00oKTsKKyNlbmRpZgorICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSo+KHRoaXMp
LT5jbG9uZUZvckNTU09NKCk7CisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgY2FzZSBJ
bWFnZVNldENsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW1hZ2VT
ZXRWYWx1ZSo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoU1ZH
KQorICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFNWR0NvbG9yKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKKyAgICBjYXNlIFNWR1BhaW50
Q2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTVkdQYWludCo+KHRoaXMp
LT5jbG9uZUZvckNTU09NKCk7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQo
IWlzU3VidHlwZUV4cG9zZWRUb0NTU09NKCkpOworICAgICAgICByZXR1cm4gVGV4dENsb25lQ1NT
VmFsdWU6OmNyZWF0ZShjbGFzc1R5cGUoKSwgY3NzVGV4dCgpKTsKKyAgICB9Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBDU1NWYWx1ZV9oCiAjZGVmaW5lIENTU1ZhbHVlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0yOSw5ICszMCwxMiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NTdHlsZVNoZWV0OworICAgIAorLy8gRklYTUU6IFRo
ZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBzdWJjbGFzc2VzIHNob3VsZCBiZSB0dXJuZWQgaW50byBp
bnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZSkuCisvLyBUaGUgZmV3IHN1YnR5cGVzIHRoYXQgYXJl
IGFjdHVhbGx5IGV4cG9zZWQgaW4gQ1NTT00gY2FuIGJlIHNlZW4gaW4gdGhlIGNsb25lRm9yQ1NT
T00oKSBmdW5jdGlvbi4KKy8vIFRoZXkgc2hvdWxkIGJlIGhhbmRsZWQgYnkgc2VwYXJhdGUgd3Jh
cHBlciBjbGFzc2VzLgogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCisvLyBQbGVhc2Ug
ZG9uJ3QgZXhwb3NlIG1vcmUgQ1NTVmFsdWUgdHlwZXMgdG8gdGhlIHdlYi4KIGNsYXNzIENTU1Zh
bHVlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTVmFsdWU+IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5
cGUgewpAQCAtOTAsNiArOTQsMTggQEAgcHVibGljOgogICAgIGJvb2wgaXNTVkdDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNWR0NvbG9yQ2xhc3MgfHwgbV9jbGFzc1R5cGUg
PT0gU1ZHUGFpbnRDbGFzczsgfQogICAgIGJvb2wgaXNTVkdQYWludCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xhc3NUeXBlID09IFNWR1BhaW50Q2xhc3M7IH0KICNlbmRpZgorICAgIAorICAgIGJvb2wg
aXNDU1NPTVNhZmUoKSBjb25zdCB7IHJldHVybiBtX2lzQ1NTT01TYWZlOyB9CisgICAgYm9vbCBp
c1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpIGNvbnN0CisgICAgeyAKKyAgICAgICAgcmV0dXJuIGlz
UHJpbWl0aXZlVmFsdWUoKSAKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICAgICAgfHwgaXNTVkdD
b2xvcigpCisjZW5kaWYKKyAgICAgICAgICAgIHx8IGlzVmFsdWVMaXN0KCk7CisgICAgfQorCisg
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgdm9p
ZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IENTU1N0
eWxlU2hlZXQqKTsKIApAQCAtMTU5LDggKzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDbGFz
c1R5cGUgY2xhc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q2xhc3NUeXBlPiht
X2NsYXNzVHlwZSk7IH0KIAotICAgIGV4cGxpY2l0IENTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5
cGUpCi0gICAgICAgIDogbV9wcmltaXRpdmVVbml0VHlwZSgwKQorICAgIGV4cGxpY2l0IENTU1Zh
bHVlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGJvb2wgaXNDU1NPTVNhZmUgPSBmYWxzZSkKKyAgICAg
ICAgOiBtX2lzQ1NTT01TYWZlKGlzQ1NTT01TYWZlKQorICAgICAgICAsIG1faXNUZXh0Q2xvbmUo
ZmFsc2UpCisgICAgICAgICwgbV9wcmltaXRpdmVVbml0VHlwZSgwKQogICAgICAgICAsIG1faGFz
Q2FjaGVkQ1NTVGV4dChmYWxzZSkKICAgICAgICAgLCBtX2lzUXVpcmtWYWx1ZShmYWxzZSkKICAg
ICAgICAgLCBtX3ZhbHVlTGlzdFNlcGFyYXRvcihTcGFjZVNlcGFyYXRvcikKQEAgLTE3NywxOCAr
MTk1LDIwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKIHByb3RlY3RlZDoKKyAg
ICB1bnNpZ25lZCBtX2lzQ1NTT01TYWZlIDogMTsKKyAgICB1bnNpZ25lZCBtX2lzVGV4dENsb25l
IDogMTsKICAgICAvLyBUaGUgYml0cyBpbiB0aGlzIHNlY3Rpb24gYXJlIG9ubHkgdXNlZCBieSBz
cGVjaWZpYyBzdWJjbGFzc2VzIGJ1dCBrZXB0IGhlcmUKICAgICAvLyB0byBtYXhpbWl6ZSBzdHJ1
Y3QgcGFja2luZy4KIAogICAgIC8vIENTU1ByaW1pdGl2ZVZhbHVlIGJpdHM6Ci0gICAgdW5zaWdu
ZWQgY2hhciBtX3ByaW1pdGl2ZVVuaXRUeXBlIDogNzsgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcwotICAgIG11dGFibGUgYm9vbCBtX2hhc0NhY2hlZENTU1RleHQgOiAxOwotICAgIGJv
b2wgbV9pc1F1aXJrVmFsdWUgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpbWl0aXZlVW5pdFR5cGUg
OiA3OyAvLyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzCisgICAgbXV0YWJsZSB1bnNpZ25l
ZCBtX2hhc0NhY2hlZENTU1RleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNRdWlya1ZhbHVlIDog
MTsKIAotICAgIHVuc2lnbmVkIGNoYXIgbV92YWx1ZUxpc3RTZXBhcmF0b3IgOiBWYWx1ZUxpc3RT
ZXBhcmF0b3JCaXRzOworICAgIHVuc2lnbmVkIG1fdmFsdWVMaXN0U2VwYXJhdG9yIDogVmFsdWVM
aXN0U2VwYXJhdG9yQml0czsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBjaGFyIG1fY2xhc3NU
eXBlIDogQ2xhc3NUeXBlQml0czsgLy8gQ2xhc3NUeXBlCisgICAgdW5zaWduZWQgbV9jbGFzc1R5
cGUgOiBDbGFzc1R5cGVCaXRzOyAvLyBDbGFzc1R5cGUKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCShyZXZpc2lvbiAxMTM1
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQzLDQgKzE0MywxOCBAQCB2b2lkIENTU1ZhbHVlTGlzdDo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSCiAgICAgICAgIG1fdmFsdWVzW2ldLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxz
LCBzdHlsZVNoZWV0KTsKIH0KIAorQ1NTVmFsdWVMaXN0OjpDU1NWYWx1ZUxpc3QoY29uc3QgQ1NT
VmFsdWVMaXN0JiBjbG9uZUZyb20pCisgICAgOiBDU1NWYWx1ZShjbG9uZUZyb20uY2xhc3NUeXBl
KCksIC8qIGlzQ1NTT01TYWZlICovIHRydWUpCit7CisgICAgbV92YWx1ZUxpc3RTZXBhcmF0b3Ig
PSBjbG9uZUZyb20ubV92YWx1ZUxpc3RTZXBhcmF0b3I7CisgICAgbV92YWx1ZXMucmVzaXplKGNs
b25lRnJvbS5tX3ZhbHVlcy5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3ZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV92YWx1ZXNbaV0gPSBjbG9uZUZyb20ubV92
YWx1ZXNbaV0tPmNsb25lRm9yQ1NTT00oKTsKK30KKworUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU1ZhbHVlTGlzdDo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDU1NWYWx1ZUxpc3QoKnRoaXMpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAkocmV2aXNpb24gMTEzNTQ5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5
ICs2MSwxMiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAog
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25z
dCBDU1NTdHlsZVNoZWV0Kik7CisgICAgCisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNs
b25lRm9yQ1NTT00oKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIENTU1ZhbHVlTGlzdChDbGFz
c1R5cGUsIFZhbHVlTGlzdFNlcGFyYXRvcik7CisgICAgQ1NTVmFsdWVMaXN0KGNvbnN0IENTU1Zh
bHVlTGlzdCYgY2xvbmVGcm9tKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NWYWx1ZUxp
c3QoVmFsdWVMaXN0U2VwYXJhdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAkocmV2aXNpb24g
MTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWRlbnRpZmllcihQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50
aWZpZXI7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBsaXN0U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBsaXN0U3R5bGU7IH0KICAgICB2b2lkIHNl
dFNlcGFyYXRvcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpIHsgbV9z
ZXBhcmF0b3IgPSBzZXBhcmF0b3I7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPENvdW50ZXI+IGNs
b25lRm9yQ1NTT00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShtX2lkZW50
aWZpZXIgPyBtX2lkZW50aWZpZXItPmNsb25lRm9yQ1NTT00oKSA6IDAKKyAgICAgICAgICAgICwg
bV9saXN0U3R5bGUgPyBtX2xpc3RTdHlsZS0+Y2xvbmVGb3JDU1NPTSgpIDogMAorICAgICAgICAg
ICAgLCBtX3NlcGFyYXRvciA/IG1fc2VwYXJhdG9yLT5jbG9uZUZvckNTU09NKCkgOiAwKTsKKyAg
ICB9CiAKIHByaXZhdGU6CiAgICAgQ291bnRlcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUsIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShy
ZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICAvLyBGSVhNRTogRGV0ZWN0
IHN5bnRheCBlcnJvcnMgYW5kIHNldCBlYy4KICAgICBtX3Byb3BlcnR5U2V0LT5wYXJzZURlY2xh
cmF0aW9uKHRleHQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCi0gICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOworICAgIGRpZE11dGF0ZSgpOwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
CiAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAgCiAjZW5kaWYK
QEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0
eWxlCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0
eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIG1fcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAg
cmV0dXJuIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShtX3Byb3BlcnR5U2V0LT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnR5SUQpLmdldCgpKTsKIH0KIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcgJnByb3BlcnR5TmFt
ZSkKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0CiAgICAgaWYgKGNoYW5nZWQpIHsKICAgICAgICAgLy8gQ1NTIERPTSByZXF1aXJlcyBy
YWlzaW5nIFNZTlRBWF9FUlIgb2YgcGFyc2luZyBmYWlsZWQsIGJ1dCB0aGlzIGlzIHRvbyBkYW5n
ZXJvdXMgZm9yIGNvbXBhdGliaWxpdHksCiAgICAgICAgIC8vIHNlZSA8aHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKKyAgICAgICAgZGlkTXV0YXRlKCk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVS
UykKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRp
ZgpAQCAtMjM3LDcgKzIzNyw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OnIKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgY2hhbmdlcyA9IG1fcHJvcGVydHlT
ZXQtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpOwogICAgIGlmIChjaGFuZ2Vz
KSB7Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgZGlkTXV0YXRlKCk7
CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgbXV0YXRpb25TY29wZS5l
bnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKICNlbmRpZgpAQCAtMjQ3LDcgKzI0Nyw3IEBAIFN0cmlu
ZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnIKIAogUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogeyAKLSAgICByZXR1cm4gbV9wcm9wZXJ0
eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsgCisgICAgcmV0dXJuIGNsb25l
QW5kQ2FjaGVGb3JDU1NPTShtX3Byb3BlcnR5U2V0LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3Bl
cnR5SUQpLmdldCgpKTsKIH0KIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAg
LTI2MywxMyArMjYzLDM1IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXQKICAgICBlYyA9IDA7CiAgICAgYm9vbCBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQoKSk7
CiAgICAgaWYgKGNoYW5nZWQpIHsKLSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAg
ICAgICBkaWRNdXRhdGUoKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgICAg
ICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwogI2VuZGlmCiAgICAgfQog
fQogCit2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZGlkTXV0YXRlKCkKK3sK
KyAgICBtX2Nzc29tQ1NTVmFsdWVDbG9uZXMuY2xlYXIoKTsKKyAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKCk7Cit9CisKK0NTU1ZhbHVlKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmNs
b25lQW5kQ2FjaGVGb3JDU1NPTShDU1NWYWx1ZSogaW50ZXJuYWxWYWx1ZSkKK3sKKyAgICBpZiAo
IWludGVybmFsVmFsdWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVGhlIG1hcCBpcyBo
ZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1ZhbHVlcyBvdmVy
IG11bHRpcGxlIGludm9jYXRpb25zLgorICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtlbHkgdGhhdCB0
aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkgYW5kIHRo
aXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBpZiAoIW1fY3Nzb21DU1NWYWx1ZUNsb25l
cykKKyAgICAgICAgbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8
Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+ID4pOworICAgIAorICAgIFJlZlB0cjxDU1NWYWx1
ZT4mIGNsb25lZFZhbHVlID0gbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzLT5hZGQoaW50ZXJuYWxWYWx1
ZSwgUmVmUHRyPENTU1ZhbHVlPigpKS5pdGVyYXRvci0+c2Vjb25kOworICAgIGlmICghY2xvbmVk
VmFsdWUpCisgICAgICAgIGNsb25lZFZhbHVlID0gaW50ZXJuYWxWYWx1ZS0+Y2xvbmVGb3JDU1NP
TSgpOworICAgIHJldHVybiBjbG9uZWRWYWx1ZS5nZXQoKTsKK30KKwogQ1NTU3R5bGVTaGVldCog
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QK
IHsgCiAgICAgcmV0dXJuIGNvbnRleHRTdHlsZVNoZWV0KCk7IApJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNp
b24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjksMTQgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weSgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtYWtl
TXV0YWJsZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxj
KCkgeyB9ICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKCkgeyB9Cisg
ICAgCisgICAgdm9pZCBkaWRNdXRhdGUoKTsKKyAgICBDU1NWYWx1ZSogY2xvbmVBbmRDYWNoZUZv
ckNTU09NKENTU1ZhbHVlKik7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVQcm9wZXJ0eVNl
dCogbV9wcm9wZXJ0eVNldDsKKyAgICBPd25QdHI8SGFzaE1hcDxDU1NWYWx1ZSosIFJlZlB0cjxD
U1NWYWx1ZT4gPiA+IG1fY3Nzb21DU1NWYWx1ZUNsb25lczsKIH07CiAKIGNsYXNzIFN0eWxlUnVs
ZUNTU1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI1ICsz
OCwzMyBAQCBQYXNzUmVmUHRyPFJHQkNvbG9yPiBSR0JDb2xvcjo6Y3JlYXRlKHVuCiBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6cmVkKCkKIHsKICAgICB1bnNpZ25lZCB2
YWx1ZSA9IChtX3JnYkNvbG9yID4+IDE2KSAmIDB4RkY7Ci0gICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICByZXN1bHQt
PnNldENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCiBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6Z3JlZW4oKQogewogICAgIHVuc2ln
bmVkIHZhbHVlID0gKG1fcmdiQ29sb3IgPj4gOCkgJiAweEZGOwotICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgcmVz
dWx0LT5zZXRDU1NPTVNhZmUoKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAog
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29sb3I6OmJsdWUoKQogewogICAgIHVu
c2lnbmVkIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0gICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICByZXN1bHQt
PnNldENTU09NU2FmZSgpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCiBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6YWxwaGEoKQogewogICAgIGZsb2F0
IHZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNvbG9yID4+IDI0KSAmIDB4RkYpIC8g
MHhGRjsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZSwgV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIHJlc3VsdC0+c2V0Q1NTT01T
YWZlKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL1JlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTQgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgUmVjdEJhc2UoKSB7IH0KKyAgICBSZWN0QmFzZShjb25zdCBS
ZWN0QmFzZSYgY2xvbmVGcm9tKQorICAgICAgICA6IG1fdG9wKGNsb25lRnJvbS5tX3RvcCA/IGNs
b25lRnJvbS5tX3RvcC0+Y2xvbmVGb3JDU1NPTSgpIDogMCkKKyAgICAgICAgLCBtX3JpZ2h0KGNs
b25lRnJvbS5tX3JpZ2h0ID8gY2xvbmVGcm9tLm1fcmlnaHQtPmNsb25lRm9yQ1NTT00oKSA6IDAp
CisgICAgICAgICwgbV9ib3R0b20oY2xvbmVGcm9tLm1fYm90dG9tID8gY2xvbmVGcm9tLm1fYm90
dG9tLT5jbG9uZUZvckNTU09NKCkgOiAwKQorICAgICAgICAsIG1fbGVmdChjbG9uZUZyb20ubV9s
ZWZ0ID8gY2xvbmVGcm9tLm1fbGVmdC0+Y2xvbmVGb3JDU1NPTSgpIDogMCkKKyAgICB7CisgICAg
fQorCiAgICAgflJlY3RCYXNlKCkgeyB9CiAKIHByaXZhdGU6CkBAIC01MiwxNyArNjAsMjMgQEAg
cHJpdmF0ZToKIGNsYXNzIFJlY3QgOiBwdWJsaWMgUmVjdEJhc2UsIHB1YmxpYyBSZWZDb3VudGVk
PFJlY3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWN0PiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgUmVjdCk7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPFJlY3Q+
IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVjdCgqdGhpcykp
OyB9CiAKIHByaXZhdGU6CiAgICAgUmVjdCgpIHsgfQorICAgIFJlY3QoY29uc3QgUmVjdCYgY2xv
bmVGcm9tKSA6IFJlY3RCYXNlKGNsb25lRnJvbSksIFJlZkNvdW50ZWQ8UmVjdD4oKSB7IH0KIH07
CiAKIGNsYXNzIFF1YWQgOiBwdWJsaWMgUmVjdEJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPFF1YWQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdWFkPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgUXVhZCk7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPFF1YWQ+IGNsb25l
Rm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgUXVhZCgqdGhpcykpOyB9CiAK
IHByaXZhdGU6CiAgICAgUXVhZCgpIHsgfQorICAgIFF1YWQoY29uc3QgUXVhZCYgY2xvbmVGcm9t
KSA6IFJlY3RCYXNlKGNsb25lRnJvbSksIFJlZkNvdW50ZWQ8UXVhZD4oKSB7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0ZpbHRlclZhbHVlLmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksMTcg
QEAgU3RyaW5nIFdlYktpdENTU0ZpbHRlclZhbHVlOjpjdXN0b21Dc3NUZQogICAgIHJldHVybiBy
ZXN1bHQgKyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNzc1RleHQoKSArICIpIjsKIH0KIAorV2ViS2l0
Q1NTRmlsdGVyVmFsdWU6OldlYktpdENTU0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENTU0ZpbHRl
clZhbHVlJiBjbG9uZUZyb20pCisgICAgOiBDU1NWYWx1ZUxpc3QoY2xvbmVGcm9tKQorICAgICwg
bV90eXBlKGNsb25lRnJvbS5tX3R5cGUpCit7Cit9CisKK1Bhc3NSZWZQdHI8V2ViS2l0Q1NTRmls
dGVyVmFsdWU+IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0ZpbHRlclZhbHVlKCp0aGlzKSk7Cit9
CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjYsOCArNjYsMTEgQEAgcHVibGljOgogCiAgICAgRmlsdGVyT3BlcmF0aW9uVHlwZSBvcGVyYXRp
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKKyAgICBQYXNzUmVmUHRyPFdlYktp
dENTU0ZpbHRlclZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
V2ViS2l0Q1NTRmlsdGVyVmFsdWUoRmlsdGVyT3BlcmF0aW9uVHlwZSk7CisgICAgV2ViS2l0Q1NT
RmlsdGVyVmFsdWUoY29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUmIGNsb25lRnJvbSk7CiAKICAg
ICBGaWx0ZXJPcGVyYXRpb25UeXBlIG1fdHlwZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAJKHJldmlzaW9uIDExMzU0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNSw0ICsxMTUsMTUgQEAgU3RyaW5nIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpjdXN0b21DcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZShjb25zdCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSYgY2xvbmVGcm9tKQorICAgIDogQ1NTVmFsdWVMaXN0KGNsb25lRnJvbSkKKyAgICAsIG1fdHlw
ZShjbG9uZUZyb20ubV90eXBlKQoreworfQorCitQYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlPiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSgqdGhpcykp
OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDEyIEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCiAgICAgVHJhbnNmb3JtT3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAg
CisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4gY2xvbmVGb3JDU1NPTSgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKFRyYW5zZm9y
bU9wZXJhdGlvblR5cGUpOworICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKGNvbnN0IFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlJiBjbG9uZUZyb20pOwogCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9u
VHlwZSBtX3R5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCShyZXZpc2lvbiAx
MTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw2ICs5MiwxOCBAQCBTdHJpbmcgU1ZHQ29sb3I6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU1ZHQ29sb3I6OlNWR0NvbG9yKENsYXNzVHlw
ZSBjbGFzc1R5cGUsIGNvbnN0IFNWR0NvbG9yJiBjbG9uZUZyb20pCisgICAgOiBDU1NWYWx1ZShj
bGFzc1R5cGUsIC8qaXNDU1NPTVNhZmUqLyB0cnVlKQorICAgICwgbV9jb2xvcihjbG9uZUZyb20u
bV9jb2xvcikKKyAgICAsIG1fY29sb3JUeXBlKGNsb25lRnJvbS5tX2NvbG9yVHlwZSkKK3sKK30K
KworUGFzc1JlZlB0cjxTVkdDb2xvcj4gU1ZHQ29sb3I6OmNsb25lRm9yQ1NTT00oKSBjb25zdAor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoU1ZHQ29sb3JDbGFzcywgKnRoaXMp
KTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xv
ci5oCShyZXZpc2lvbiAxMTM1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsMTEgKzcyLDE0IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0OwogCiAgICAgflNWR0NvbG9yKCkgeyB9CisgICAgCisgICAgUGFz
c1JlZlB0cjxTVkdDb2xvcj4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAg
ICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIAogICAgIFNWR0Nv
bG9yKENsYXNzVHlwZSwgY29uc3QgU1ZHQ29sb3JUeXBlJik7CisgICAgU1ZHQ29sb3IoQ2xhc3NU
eXBlLCBjb25zdCBTVkdDb2xvciYgY2xvbmVGcm9tKTsKIAogICAgIHZvaWQgc2V0Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKSB7IG1fY29sb3IgPSBjb2xvcjsgfQogICAgIHZvaWQgc2V0Q29sb3JU
eXBlKGNvbnN0IFNWR0NvbG9yVHlwZSYgdHlwZSkgeyBtX2NvbG9yVHlwZSA9IHR5cGU7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksMTggQEAg
U3RyaW5nIFNWR1BhaW50OjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKK1NWR1BhaW50OjpTVkdQYWludChjb25zdCBTVkdQYWludCYgY2xvbmVGcm9tKQor
ICAgIDogU1ZHQ29sb3IoU1ZHUGFpbnRDbGFzcywgY2xvbmVGcm9tKQorICAgICwgbV9wYWludFR5
cGUoY2xvbmVGcm9tLm1fcGFpbnRUeXBlKQorICAgICwgbV91cmkoY2xvbmVGcm9tLm1fdXJpKQor
eworfQorCitQYXNzUmVmUHRyPFNWR1BhaW50PiBTVkdQYWludDo6Y2xvbmVGb3JDU1NPTSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYWludCgqdGhpcykpOworfQorCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgJKHJldmlz
aW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0
KCkgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPFNWR1BhaW50PiBjbG9uZUZvckNTU09NKCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjsKIApAQCAtMTA1LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKIHByaXZhdGU6CiAgICAgU1ZH
UGFpbnQoY29uc3QgU1ZHUGFpbnRUeXBlJiwgY29uc3QgU3RyaW5nJiB1cmkgPSBTdHJpbmcoKSk7
CisgICAgU1ZHUGFpbnQoY29uc3QgU1ZHUGFpbnQmIGNsb25lRnJvbSk7CiAKICAgICBTVkdQYWlu
dFR5cGUgbV9wYWludFR5cGU7CiAgICAgU3RyaW5nIG1fdXJpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyAr
NDIzLDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6ZwogICAgIFJl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShT
VkdBdHRyaWJ1dGVNb2RlKTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBTVkdTdHls
ZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKLSAg
ICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3Bl
cnR5SUQpOworICAgIHJldHVybiBjc3NWYWx1ZSA/IGNzc1ZhbHVlLT5jbG9uZUZvckNTU09NKCkg
OiAwOwogfQogCiBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Omluc3RhbmNlVXBkYXRlc0Jsb2NrZWQo
KSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>