<?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>93333</bug_id>
          
          <creation_ts>2012-08-06 21:16:17 -0700</creation_ts>
          <short_desc>[V8] Factor out V8BindingPerIsolateData from V8Binding to a separate file</short_desc>
          <delta_ts>2012-08-08 03:23:19 -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>WebCore JavaScript</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>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688783</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-06 21:16:17 -0700</bug_when>
    <thetext>We can move V8BindingPerIsolateData to V8BindingPerIsolateData.{h,cpp}.

I&apos;ll rename V8BindingPerIsolateData to V8PerIsolateData in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688784</commentid>
    <comment_count>1</comment_count>
      <attachid>156856</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-06 21:21:53 -0700</bug_when>
    <thetext>Created attachment 156856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688790</commentid>
    <comment_count>2</comment_count>
      <attachid>156856</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 21:30:52 -0700</bug_when>
    <thetext>Comment on attachment 156856
Patch

Attachment 156856 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13447709</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688793</commentid>
    <comment_count>3</comment_count>
      <attachid>156857</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-06 21:34:36 -0700</bug_when>
    <thetext>Created attachment 156857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689627</commentid>
    <comment_count>4</comment_count>
      <attachid>156857</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 17:04:14 -0700</bug_when>
    <thetext>Comment on attachment 156857
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.h:40
&gt; +#include &quot;V8BindingPerIsolateData.h&quot;

Should we just call this V8PerIsolateData ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689632</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 17:06:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:40
&gt; &gt; +#include &quot;V8BindingPerIsolateData.h&quot;
&gt; 
&gt; Should we just call this V8PerIsolateData ?

Yes, I&apos;ll rename V8BindingPerIsolateData to V8PerIsolateData, and rename V8BindingPerContextData to V8PerContextData, in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689665</commentid>
    <comment_count>6</comment_count>
      <attachid>156857</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 17:45:42 -0700</bug_when>
    <thetext>Comment on attachment 156857
Patch

Rejecting attachment 156857 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: 2

Last 500 characters of output:
 #1 FAILED at 37.
Hunk #2 succeeded at 68 (offset -68 lines).
Hunk #3 succeeded at 82 (offset -68 lines).
1 out of 3 hunks FAILED -- saving rejects to file Source/WebCore/bindings/v8/V8Binding.h.rej
patching file Source/WebCore/bindings/v8/V8BindingPerIsolateData.cpp
patching file Source/WebCore/bindings/v8/V8BindingPerIsolateData.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13449637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689716</commentid>
    <comment_count>7</comment_count>
      <attachid>157074</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 18:25:21 -0700</bug_when>
    <thetext>Created attachment 157074
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689878</commentid>
    <comment_count>8</comment_count>
      <attachid>157074</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 22:16:29 -0700</bug_when>
    <thetext>Comment on attachment 157074
patch for landing

Rejecting attachment 157074 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: 2

Last 500 characters of output:
n &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--debug&apos;, &apos;--chromium&apos;, &apos;--update-chromium&apos;]&quot; exit_code: 2
get/webcore_dom/Source/WebCore/dom/MessagePort.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/Debug/obj.target/webcore_dom/Source/WebCore/dom/ActiveDOMObject.o] Error 1
make: *** [out/Debug/obj.target/webcore_remaining/Source/WebCore/Modules/filesystem/WorkerContextFileSystem.o] Error 1
make: *** [out/Debug/obj.target/webcore_dom/Source/WebCore/dom/ScriptExecutionContext.o] Error 1

Full output: http://queues.webkit.org/results/13459085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689922</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 22:46:46 -0700</bug_when>
    <thetext>Sorry for all the naming nits.  The patches themselves are great, which makes my mind wander to how to improve the code further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689957</commentid>
    <comment_count>10</comment_count>
      <attachid>157127</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 23:18:21 -0700</bug_when>
    <thetext>Created attachment 157127
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690105</commentid>
    <comment_count>11</comment_count>
      <attachid>157127</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 03:21:02 -0700</bug_when>
    <thetext>Comment on attachment 157127
patch for landing

Clearing flags on attachment: 157127

Committed r125015: &lt;http://trac.webkit.org/changeset/125015&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156856</attachid>
            <date>2012-08-06 21:21:53 -0700</date>
            <delta_ts>2012-08-06 21:34:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93333-20120807132129.patch</filename>
            <type>text/plain</type>
            <size>24920</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5MDRiYjcwZDdlZDVm
ODJmYWUxNjE1Y2RjNGFjYTZlMTRhNjhlMC4uMGM1YTlkMTQxYWRjNGFjMzM4NTYxYmJjNjQ4YzZl
ZDE4ODRmOWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA4LTA2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEZhY3RvciBv
dXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgZnJvbSBWOEJpbmRpbmcgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggbW92ZXMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgdG8gVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEue2gsY3BwfS4KKworICAgICAgICBUbyBhdm9pZCBjaXJjdWxhciAjaW5jbHVkZSBkZXBl
bmRlbmN5LCBJIHVzZWQgT3duUHRycyBmb3IgbV9zdHJpbmdDYWNoZSwKKyAgICAgICAgbV9pbnRl
Z2VyQ2FjaGUsIG1faGlkZGVuUHJvcGVydHlOYW1lIGFuZCBtX2djRXZlbnREYXRhLgorCisgICAg
ICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBVc2VWOC5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0R0NFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlR0NFdmVudERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmg6CisgICAgICAgIChHQ0V2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGVNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRlbXBsYXRlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0b1N0cmluZ05hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRvU3RyaW5nVGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmxhenlFdmVudExp
c3RlbmVyVG9TdHJpbmdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6c3RyaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OmludGVnZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6YWxsU3RvcmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpoaWRkZW5Qcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmF1eGlsaWFyeUNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlZ2lzdGVyRE9NRGF0YVN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp1bnJlZ2lzdGVyRE9NRGF0YVN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkb21EYXRh
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnNldERP
TURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmluY3JlbWVudFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRSZWN1cnNpb25MZXZlbCk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Z2xvYmFsSGFuZGxlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lv
bkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNy
ZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpnY0V2ZW50
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6c2V0U2hv
dWxkQ29sbGVjdEdhcmJhZ2VTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjpjbGVhclNob3VsZENvbGxlY3RHYXJiYWdlU29vbik6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6c2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKToK
KwogMjAxMi0wOC0wNiAgTWF4IFZ1am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUyBTaGFkZXJzXSBQYXJzZSBtaXggZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1VzZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggYjFh
NzQ4YzRjZmUwYzE5NWJhZGQ0M2QyMDkyNTU5MjM0OTkyZjZjYi4uNmVjNmZkZDU3NzM1OWY0MDFi
MjJmNTdkNTY3ZDgxZjJjOTU3NzA2OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjgu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTQ2LDYgKzQ2LDcgQEAg
TElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0
YVN0b3JlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKyAgICBiaW5kaW5ncy92OC9WOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YS5jcHAKICAgICBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCiAgICAg
YmluZGluZ3MvdjgvVjhET01NYXAuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiMWI0YTZjMWY2ZmM5ZGY3ZjA5ZDNiMDE4YmRkNjEx
ZjdhYmMwOTgwLi4wYjBhNTBjYzQ5NjVmNTVlMWNjZGI0NDc5MGIwZWYxNzM0MTdhMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yMjQ5LDYgKzIyNDksOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJD
b250ZXh0RGF0YS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1BlckNv
bnRleHREYXRhLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xh
dGVEYXRhLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEdDRXZlbnQuY3BwCmluZGV4IDM3ZGQ4NWU1NTM0ZjY2MjMzZTA3MzVlMjI4YTA5ZGM4OTJk
Yzg4NTEuLjY2M2VhNTc0ZTdiOWRjNjE2MTA0ZGNmMzQ0YjJlNGU1ZmE0ZWE1MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCkBAIC00MCw3ICs0MCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEdDRXZlbnREYXRhJiBpc29sYXRl
R0NFdmVudERhdGEoKQorc3RhdGljIEdDRXZlbnREYXRhKiBpc29sYXRlR0NFdmVudERhdGEoKQog
ewogICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBpc29sYXRlRGF0YSA9IFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgQVNTRVJUKGlzb2xhdGVEYXRhKTsKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RhdGljIEdDRXZlbnREYXRhJiBpc29sYXRlR0NFdmVudERhdGEoKQogCiB2
b2lkIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVy
KiBldmVudExpc3RlbmVyKQogewotICAgIEdDRXZlbnREYXRhOjpHQ0V2ZW50TGlzdGVuZXJzJiBs
aXN0ZW5lcnMgPSBpc29sYXRlR0NFdmVudERhdGEoKS5saXN0ZW5lcnMoKTsKKyAgICBHQ0V2ZW50
RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gaXNvbGF0ZUdDRXZlbnREYXRhKCkt
Pmxpc3RlbmVycygpOwogICAgIGlmIChsaXN0ZW5lcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHY4
OjpWODo6QWRkR0NQcm9sb2d1ZUNhbGxiYWNrKFNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxs
YmFjayk7CiAgICAgICAgIHY4OjpWODo6QWRkR0NFcGlsb2d1ZUNhbGxiYWNrKFNjcmlwdEdDRXZl
bnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU2NyaXB0R0NF
dmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVu
ZXIpCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVu
dExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewogICAgIEFTU0VSVChldmVudExpc3RlbmVyKTsK
LSAgICBHQ0V2ZW50RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gaXNvbGF0ZUdD
RXZlbnREYXRhKCkubGlzdGVuZXJzKCk7CisgICAgR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5l
cnMmIGxpc3RlbmVycyA9IGlzb2xhdGVHQ0V2ZW50RGF0YSgpLT5saXN0ZW5lcnMoKTsKICAgICBB
U1NFUlQoIWxpc3RlbmVycy5pc0VtcHR5KCkpOwogICAgIHNpemVfdCBpID0gbGlzdGVuZXJzLmZp
bmQoZXZlbnRMaXN0ZW5lcik7CiAgICAgQVNTRVJUKGkgIT0gbm90Rm91bmQpOwpAQCAtODksMjMg
Kzg5LDIzIEBAIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpnZXRVc2VkSGVhcFNpemUoKQogCiB2b2lk
IFNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxsYmFjayh2ODo6R0NUeXBlIHR5cGUsIHY4OjpH
Q0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgR0NFdmVudERhdGEmIGdjRXZlbnREYXRhID0g
aXNvbGF0ZUdDRXZlbnREYXRhKCk7Ci0gICAgZ2NFdmVudERhdGEuc3RhcnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBnY0V2ZW50RGF0YS51c2VkSGVhcFNp
emUgPSBnZXRVc2VkSGVhcFNpemUoKTsKKyAgICBHQ0V2ZW50RGF0YSogZ2NFdmVudERhdGEgPSBp
c29sYXRlR0NFdmVudERhdGEoKTsKKyAgICBnY0V2ZW50RGF0YS0+c3RhcnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBnY0V2ZW50RGF0YS0+dXNlZEhlYXBT
aXplID0gZ2V0VXNlZEhlYXBTaXplKCk7CiB9CiAKIHZvaWQgU2NyaXB0R0NFdmVudDo6Z2NFcGls
b2d1ZUNhbGxiYWNrKHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykK
IHsKLSAgICBHQ0V2ZW50RGF0YSYgZ2NFdmVudERhdGEgPSBpc29sYXRlR0NFdmVudERhdGEoKTsK
LSAgICBpZiAoIWdjRXZlbnREYXRhLnVzZWRIZWFwU2l6ZSkKKyAgICBHQ0V2ZW50RGF0YSogZ2NF
dmVudERhdGEgPSBpc29sYXRlR0NFdmVudERhdGEoKTsKKyAgICBpZiAoIWdjRXZlbnREYXRhLT51
c2VkSGVhcFNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBkb3VibGUgZW5kVGltZSA9IFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgc2l6ZV90IHVzZWRIZWFwU2l6ZSA9
IGdldFVzZWRIZWFwU2l6ZSgpOwotICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHVzZWRIZWFw
U2l6ZSA+IGdjRXZlbnREYXRhLnVzZWRIZWFwU2l6ZSA/IDAgOiBnY0V2ZW50RGF0YS51c2VkSGVh
cFNpemUgLSB1c2VkSGVhcFNpemU7Ci0gICAgR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5lcnMm
IGxpc3RlbmVycyA9IGdjRXZlbnREYXRhLmxpc3RlbmVycygpOworICAgIHNpemVfdCBjb2xsZWN0
ZWRCeXRlcyA9IHVzZWRIZWFwU2l6ZSA+IGdjRXZlbnREYXRhLT51c2VkSGVhcFNpemUgPyAwIDog
Z2NFdmVudERhdGEtPnVzZWRIZWFwU2l6ZSAtIHVzZWRIZWFwU2l6ZTsKKyAgICBHQ0V2ZW50RGF0
YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gZ2NFdmVudERhdGEtPmxpc3RlbmVycygp
OwogICAgIGZvciAoR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5lcnM6Oml0ZXJhdG9yIGkgPSBs
aXN0ZW5lcnMuYmVnaW4oKTsgaSAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsraSkKLSAgICAgICAgKCpp
KS0+ZGlkR0MoZ2NFdmVudERhdGEuc3RhcnRUaW1lLCBlbmRUaW1lLCBjb2xsZWN0ZWRCeXRlcyk7
Ci0gICAgZ2NFdmVudERhdGEuY2xlYXIoKTsKKyAgICAgICAgKCppKS0+ZGlkR0MoZ2NFdmVudERh
dGEtPnN0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0ZXMpOworICAgIGdjRXZlbnREYXRh
LT5jbGVhcigpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggNDJlYTY0NWViNWMzOTFkMzQ1NTY2NzIw
YWM5MzZjMzhjZTAxMzM2ZS4uYjRkODRiN2MzOTliYTVhNzBhMjI2YWRhMDEzOWU1NDNkZDA2ZThj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC01Miw1NyAr
NTIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLQotVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQotICAgIDog
bV9kb21EYXRhU3RvcmUoMCkKLSAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9k
ZTo6Q3JlYXRlTmV3T2JqZWN0KQotICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQotI2lmbmRlZiBO
REVCVUcKLSAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgwKQotI2VuZGlmCi0g
ICAgLCBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbihmYWxzZSkKLXsKLX0KLQotVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQZXJJc29sYXRlRGF0YSgpCi17Ci19Ci0KLVY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhKiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQotewotICAgIEFTU0VSVChpc29sYXRlKTsKLSAgICBBU1NFUlQoIWlz
b2xhdGUtPkdldERhdGEoKSk7Ci0gICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBu
ZXcgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoaXNvbGF0ZSk7Ci0gICAgaXNvbGF0ZS0+U2V0RGF0
YShkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQodjg6Oklzb2xhdGUqIGlzb2xhdGUpIAotewotICAgIEFT
U0VSVChpc29sYXRlKTsKLSAgICBpZiAoIWlzb2xhdGUtPkdldERhdGEoKSkgCi0gICAgICAgIGNy
ZWF0ZShpc29sYXRlKTsKLX0KLQotdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9z
ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICB2b2lkKiBkYXRhID0gaXNvbGF0ZS0+R2V0
RGF0YSgpOwotICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+
KGRhdGEpOwotICAgIGlzb2xhdGUtPlNldERhdGEoMCk7Ci19Ci0KLXZvaWQgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvPFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1fcmF3VGVtcGxhdGVzKTsKLSAgICBp
bmZvLmFkZEhhc2hNYXAobV90ZW1wbGF0ZXMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fc3RyaW5nQ2FjaGUpOwotICAgIGluZm8uYWRkVmVjdG9yKG1fZG9tRGF0YUxpc3QpOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RvbURhdGFMaXN0LnNpemUoKTsgaSsrKQot
ICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2RvbURhdGFMaXN0W2ldKTsKLX0K
LQogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZvciB2OEV4dGVy
bmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5hZ2UgdGhlIGxpZmUtY3ljbGUgb2YgdGhl
IHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5hbCBzdHJpbmcuCiBjbGFzcyBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJj
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDk3NzVlMGYxNmUx
NzBkMDRiNmQ5ZDAyNWZlNWI5YTAwYTliMDcxMTcuLmQ1MWNkYjA2MTIzOWZmNjM3NjEzZjdjYjFj
MGI0NGM1NWY0MjQ3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBA
IC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhH
Q0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1
ZGUgIlY4UGVySXNvbGF0ZURhdGEuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTEzNiw2
ICsxMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KICAgICAgICAgR0NFdmVu
dExpc3RlbmVycyYgbGlzdGVuZXJzKCkgeyByZXR1cm4gbV9saXN0ZW5lcnM7IH0KIAorICAgICAg
ICAvLyBGSVhNRTogTWFrZSB0aGVzZSBtZW1iZXJzIHByaXZhdGUuCiAgICAgICAgIGRvdWJsZSBz
dGFydFRpbWU7CiAgICAgICAgIHNpemVfdCB1c2VkSGVhcFNpemU7CiAKQEAgLTE0OSwxMTQgKzE1
MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8djg6OlZhbHVl
KiwgR2xvYmFsSGFuZGxlSW5mbyo+IEdsb2JhbEhhbmRsZU1hcDsKICNlbmRpZgogCi0gICAgY2xh
c3MgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjcmVhdGUodjg6Oklzb2xhdGUqKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgZW5zdXJlSW5pdGlhbGl6ZWQodjg6Oklzb2xhdGUqKTsKLSAgICAgICAgc3Rh
dGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjdXJyZW50KHY4OjpJc29sYXRlKiBpc29sYXRl
ID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc29sYXRlKSkKLSAg
ICAgICAgICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKLSAgICAg
ICAgICAgIEFTU0VSVChpc29sYXRlLT5HZXREYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKj4oaXNvbGF0ZS0+R2V0RGF0YSgpKTsg
Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgZGlzcG9zZSh2ODo6SXNvbGF0ZSopOwot
Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKLQotICAgICAgICBUZW1wbGF0
ZU1hcCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsgfQotICAgICAg
ICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3RlbXBsYXRlczsgfQotICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1lKCkgeyByZXR1cm4g
bV90b1N0cmluZ05hbWU7IH0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1cm4gbV90b1N0cmluZ1RlbXBsYXRlOyB9
Ci0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZl
bnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBTdHJpbmdDYWNoZSogc3RyaW5nQ2FjaGUoKSB7IHJldHVybiAmbV9zdHJpbmdDYWNoZTsg
fQotICAgICAgICBJbnRlZ2VyQ2FjaGUqIGludGVnZXJDYWNoZSgpIHsgcmV0dXJuICZtX2ludGVn
ZXJDYWNoZTsgfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgdm9pZCB2aXNpdEV4
dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKLSNlbmRpZgotICAgICAgICBE
T01EYXRhTGlzdCYgYWxsU3RvcmVzKCkgeyByZXR1cm4gbV9kb21EYXRhTGlzdDsgfQotCi0gICAg
ICAgIFY4SGlkZGVuUHJvcGVydHlOYW1lKiBoaWRkZW5Qcm9wZXJ0eU5hbWUoKSB7IHJldHVybiAm
bV9oaWRkZW5Qcm9wZXJ0eU5hbWU7IH0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRl
eHQ+JiBhdXhpbGlhcnlDb250ZXh0KCkgeyByZXR1cm4gbV9hdXhpbGlhcnlDb250ZXh0OyB9Ci0K
LSAgICAgICAgdm9pZCByZWdpc3RlckRPTURhdGFTdG9yZShET01EYXRhU3RvcmUqIGRvbURhdGFT
dG9yZSkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fZG9tRGF0YUxpc3QuYXBwZW5kKGRvbURh
dGFTdG9yZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHVucmVnaXN0ZXJET01EYXRhU3Rv
cmUoRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX2RvbURhdGFMaXN0LmZpbmQoZG9tRGF0YVN0b3JlKSk7Ci0gICAgICAgICAgICBtX2Rv
bURhdGFMaXN0LnJlbW92ZShtX2RvbURhdGFMaXN0LmZpbmQoZG9tRGF0YVN0b3JlKSk7Ci0gICAg
ICAgIH0KLQotCi0gICAgICAgIERPTURhdGFTdG9yZSogZG9tRGF0YVN0b3JlKCkgeyByZXR1cm4g
bV9kb21EYXRhU3RvcmU7IH0KLSAgICAgICAgLy8gRE9NRGF0YVN0b3JlIGlzIG93bmVkIG91dHNp
ZGUgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuCi0gICAgICAgIHZvaWQgc2V0RE9NRGF0YVN0b3Jl
KERPTURhdGFTdG9yZSogc3RvcmUpIHsgbV9kb21EYXRhU3RvcmUgPSBzdG9yZTsgfQotCi0gICAg
ICAgIGludCByZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdXJzaW9uTGV2ZWw7
IH0KLSAgICAgICAgaW50IGluY3JlbWVudFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gKyttX3Jl
Y3Vyc2lvbkxldmVsOyB9Ci0gICAgICAgIGludCBkZWNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsg
cmV0dXJuIC0tbV9yZWN1cnNpb25MZXZlbDsgfQotCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBH
bG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxl
TWFwOyB9Ci0KLSAgICAgICAgaW50IGludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSBjb25z
dCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KLSAgICAgICAgaW50
IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiArK21faW50
ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQotICAgICAgICBpbnQgZGVjcmVtZW50SW50ZXJu
YWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9pbnRlcm5hbFNjcmlwdFJlY3Vy
c2lvbkxldmVsOyB9Ci0jZW5kaWYKLQotICAgICAgICBHQ0V2ZW50RGF0YSYgZ2NFdmVudERhdGEo
KSB7IHJldHVybiBtX2djRXZlbnREYXRhOyB9Ci0KLSAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0KLSAgICAgICAgLy8gR2l2ZXMgdGhlIHN5
c3RlbSBhIGhpbnQgdGhhdCB3ZSBzaG91bGQgcmVxdWVzdCBnYXJiYWdlIGNvbGxlY3Rpb24KLSAg
ICAgICAgLy8gdXBvbiB0aGUgbmV4dCBjbG9zZSBvciBuYXZpZ2F0aW9uIGV2ZW50LCBiZWNhdXNl
IHNvbWUgZXhwZW5zaXZlCi0gICAgICAgIC8vIG9iamVjdHMgaGF2ZSBiZWVuIGFsbG9jYXRlZCB0
aGF0IHdlIHdhbnQgdG8gdGFrZSBldmVyeSBvcHBvcnR1bml0eQotICAgICAgICAvLyB0byBjb2xs
ZWN0LgotICAgICAgICB2b2lkIHNldFNob3VsZENvbGxlY3RHYXJiYWdlU29vbigpIHsgbV9zaG91
bGRDb2xsZWN0R2FyYmFnZVNvb24gPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQgY2xlYXJTaG91bGRD
b2xsZWN0R2FyYmFnZVNvb24oKSB7IG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uID0gZmFsc2U7
IH0KLSAgICAgICAgYm9vbCBzaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbjsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
ZXhwbGljaXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqKTsKLSAgICAgICAg
flY4QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7Ci0KLSAgICAgICAgVGVtcGxhdGVNYXAgbV9yYXdU
ZW1wbGF0ZXM7Ci0gICAgICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzOwotICAgICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3RvU3RyaW5nTmFtZTsKLSAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fdG9TdHJpbmdUZW1wbGF0ZTsKLSAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJU
b1N0cmluZ1RlbXBsYXRlOwotICAgICAgICBTdHJpbmdDYWNoZSBtX3N0cmluZ0NhY2hlOwotICAg
ICAgICBJbnRlZ2VyQ2FjaGUgbV9pbnRlZ2VyQ2FjaGU7Ci0KLSAgICAgICAgRE9NRGF0YUxpc3Qg
bV9kb21EYXRhTGlzdDsKLSAgICAgICAgRE9NRGF0YVN0b3JlKiBtX2RvbURhdGFTdG9yZTsKLQot
ICAgICAgICBWOEhpZGRlblByb3BlcnR5TmFtZSBtX2hpZGRlblByb3BlcnR5TmFtZTsKLSAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fYXV4aWxpYXJ5Q29udGV4dDsKLQotICAg
ICAgICBib29sIG1fY29uc3RydWN0b3JNb2RlOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29uc3Ry
dWN0b3JNb2RlOwotCi0gICAgICAgIGludCBtX3JlY3Vyc2lvbkxldmVsOwotCi0jaWZuZGVmIE5E
RUJVRwotICAgICAgICBHbG9iYWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7Ci0gICAgICAg
IGludCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7Ci0jZW5kaWYKLSAgICAgICAgR0NF
dmVudERhdGEgbV9nY0V2ZW50RGF0YTsKLQotICAgICAgICBib29sIG1fc2hvdWxkQ29sbGVjdEdh
cmJhZ2VTb29uOwotICAgIH07Ci0KICAgICBjbGFzcyBDb25zdHJ1Y3Rvck1vZGUgewogICAgIHB1
YmxpYzoKICAgICAgICAgZW51bSBNb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjFhYWY2
NDY0OWI4ZmU0ZTdkYTQzYzcyYjNjMTBhNGEyNGMzNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuY3BwCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlY4QmluZGluZ1Blcklzb2xhdGVEYXRhLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5n
UGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgOiBtX3N0cmluZ0NhY2hl
KGFkb3B0UHRyKG5ldyBTdHJpbmdDYWNoZSgpKSkKKyAgICAsIG1faW50ZWdlckNhY2hlKGFkb3B0
UHRyKG5ldyBJbnRlZ2VyQ2FjaGUoKSkpCisgICAgLCBtX2RvbURhdGFTdG9yZSgwKQorICAgICwg
bV9oaWRkZW5Qcm9wZXJ0eU5hbWUoYWRvcHRQdHIobmV3IFY4SGlkZGVuUHJvcGVydHlOYW1lKCkp
KQorICAgICwgbV9jb25zdHJ1Y3Rvck1vZGUoQ29uc3RydWN0b3JNb2RlOjpDcmVhdGVOZXdPYmpl
Y3QpCisgICAgLCBtX3JlY3Vyc2lvbkxldmVsKDApCisjaWZuZGVmIE5ERUJVRworICAgICwgbV9p
bnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKDApCisjZW5kaWYKKyAgICAsIG1fZ2NFdmVudERh
dGEoYWRvcHRQdHIobmV3IEdDRXZlbnREYXRhKCkpKQorICAgICwgbV9zaG91bGRDb2xsZWN0R2Fy
YmFnZVNvb24oZmFsc2UpCit7Cit9CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp+VjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEoKQoreworfQorCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmNyZWF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAg
ICBBU1NFUlQoaXNvbGF0ZSk7CisgICAgQVNTRVJUKCFpc29sYXRlLT5HZXREYXRhKCkpOworICAg
IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gbmV3IFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhKGlzb2xhdGUpOworICAgIGlzb2xhdGUtPlNldERhdGEoZGF0YSk7CisgICAgcmV0dXJuIGRh
dGE7Cit9CisKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3VyZUluaXRpYWxpemVk
KHY4OjpJc29sYXRlKiBpc29sYXRlKSAKK3sKKyAgICBBU1NFUlQoaXNvbGF0ZSk7CisgICAgaWYg
KCFpc29sYXRlLT5HZXREYXRhKCkpIAorICAgICAgICBjcmVhdGUoaXNvbGF0ZSk7Cit9CisKK3Zv
aWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRpc3Bvc2Uodjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgdm9pZCogZGF0YSA9IGlzb2xhdGUtPkdldERhdGEoKTsKKyAgICBkZWxldGUgc3Rh
dGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihkYXRhKTsKKyAgICBpc29sYXRlLT5T
ZXREYXRhKDApOworfQorCit2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOworICAgIGluZm8u
YWRkSGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7CisgICAgaW5mby5hZGRIYXNoTWFwKG1fdGVtcGxh
dGVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3N0cmluZ0NhY2hlKTsKKyAg
ICBpbmZvLmFkZFZlY3RvcihtX2RvbURhdGFMaXN0KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9kb21EYXRhTGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9kb21EYXRhTGlzdFtpXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklz
b2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29s
YXRlRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MmEyYzc0ZmZjZDc5ODhiYjVjOWRjMjkyYjQ1Y2UxODJi
MzhhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmdQZXJJc29sYXRlRGF0YS5oCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGFfaAorI2RlZmluZSBWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YV9oCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBET01EYXRhU3RvcmU7CitjbGFzcyBHQ0V2ZW50RGF0YTsK
K2NsYXNzIEludGVnZXJDYWNoZTsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CitjbGFzcyBTdHJp
bmdDYWNoZTsKK2NsYXNzIFY4SGlkZGVuUHJvcGVydHlOYW1lOworY2xhc3MgV3JhcHBlclR5cGVJ
bmZvOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK2NsYXNzIEV4dGVybmFsU3RyaW5nVmlzaXRv
cjsKKyNlbmRpZgorCit0eXBlZGVmIFdURjo6VmVjdG9yPERPTURhdGFTdG9yZSo+IERPTURhdGFM
aXN0OworCitjbGFzcyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjcmVhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBz
dGF0aWMgdm9pZCBlbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSogY3VycmVudCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzb2xhdGUpKQorICAgICAgICAgICAgaXNv
bGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CisgICAgICAgIEFTU0VSVChpc29sYXRl
LT5HZXREYXRhKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRhKCkpOyAKKyAgICB9CisgICAgc3RhdGljIHZvaWQg
ZGlzcG9zZSh2ODo6SXNvbGF0ZSopOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFdyYXBwZXJUeXBl
SW5mbyosIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiA+IFRlbXBsYXRlTWFw
OworCisgICAgVGVtcGxhdGVNYXAmIHJhd1RlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV9yYXdUZW1w
bGF0ZXM7IH0KKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3RlbXBs
YXRlczsgfQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+JiB0b1N0cmluZ05hbWUoKSB7
IHJldHVybiBtX3RvU3RyaW5nTmFtZTsgfQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdUZW1wbGF0
ZTsgfQorCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZl
bnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGF6
eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOworICAgIH0KKworICAgIFN0cmluZ0NhY2hl
KiBzdHJpbmdDYWNoZSgpIHsgcmV0dXJuIG1fc3RyaW5nQ2FjaGUuZ2V0KCk7IH0KKyAgICBJbnRl
Z2VyQ2FjaGUqIGludGVnZXJDYWNoZSgpIHsgcmV0dXJuIG1faW50ZWdlckNhY2hlLmdldCgpOyB9
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHZvaWQgdmlzaXRFeHRlcm5hbFN0cmluZ3Mo
RXh0ZXJuYWxTdHJpbmdWaXNpdG9yKik7CisjZW5kaWYKKyAgICBET01EYXRhTGlzdCYgYWxsU3Rv
cmVzKCkgeyByZXR1cm4gbV9kb21EYXRhTGlzdDsgfQorCisgICAgVjhIaWRkZW5Qcm9wZXJ0eU5h
bWUqIGhpZGRlblByb3BlcnR5TmFtZSgpIHsgcmV0dXJuIG1faGlkZGVuUHJvcGVydHlOYW1lLmdl
dCgpOyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+JiBhdXhpbGlhcnlDb250ZXh0
KCkgeyByZXR1cm4gbV9hdXhpbGlhcnlDb250ZXh0OyB9CisKKyAgICB2b2lkIHJlZ2lzdGVyRE9N
RGF0YVN0b3JlKERPTURhdGFTdG9yZSogZG9tRGF0YVN0b3JlKSAKKyAgICB7CisgICAgICAgIG1f
ZG9tRGF0YUxpc3QuYXBwZW5kKGRvbURhdGFTdG9yZSk7CisgICAgfQorCisgICAgdm9pZCB1bnJl
Z2lzdGVyRE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZSogZG9tRGF0YVN0b3JlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fZG9tRGF0YUxpc3QuZmluZChkb21EYXRhU3RvcmUpKTsKKyAgICAgICAg
bV9kb21EYXRhTGlzdC5yZW1vdmUobV9kb21EYXRhTGlzdC5maW5kKGRvbURhdGFTdG9yZSkpOwor
ICAgIH0KKworICAgIC8vIERPTURhdGFTdG9yZSBpcyBvd25lZCBvdXRzaWRlIFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhLgorICAgIERPTURhdGFTdG9yZSogZG9tRGF0YVN0b3JlKCkgeyByZXR1cm4g
bV9kb21EYXRhU3RvcmU7IH0KKyAgICB2b2lkIHNldERPTURhdGFTdG9yZShET01EYXRhU3RvcmUq
IHN0b3JlKSB7IG1fZG9tRGF0YVN0b3JlID0gc3RvcmU7IH0KKworICAgIGludCByZWN1cnNpb25M
ZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdXJzaW9uTGV2ZWw7IH0KKyAgICBpbnQgaW5jcmVt
ZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiArK21fcmVjdXJzaW9uTGV2ZWw7IH0KKyAgICBp
bnQgZGVjcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiAtLW1fcmVjdXJzaW9uTGV2ZWw7
IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1h
cCgpIHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxlTWFwOyB9CisKKyAgICBpbnQgaW50ZXJuYWxTY3Jp
cHRSZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNp
b25MZXZlbDsgfQorICAgIGludCBpbmNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KCkgeyByZXR1cm4gKyttX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyAgICBpbnQg
ZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9pbnRl
cm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisjZW5kaWYKKworICAgIEdDRXZlbnREYXRhKiBn
Y0V2ZW50RGF0YSgpIHsgcmV0dXJuIG1fZ2NFdmVudERhdGEuZ2V0KCk7IH0KKworICAgIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCisgICAgLy8gR2l2
ZXMgdGhlIHN5c3RlbSBhIGhpbnQgdGhhdCB3ZSBzaG91bGQgcmVxdWVzdCBnYXJiYWdlIGNvbGxl
Y3Rpb24KKyAgICAvLyB1cG9uIHRoZSBuZXh0IGNsb3NlIG9yIG5hdmlnYXRpb24gZXZlbnQsIGJl
Y2F1c2Ugc29tZSBleHBlbnNpdmUKKyAgICAvLyBvYmplY3RzIGhhdmUgYmVlbiBhbGxvY2F0ZWQg
dGhhdCB3ZSB3YW50IHRvIHRha2UgZXZlcnkgb3Bwb3J0dW5pdHkKKyAgICAvLyB0byBjb2xsZWN0
LgorICAgIHZvaWQgc2V0U2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKCkgeyBtX3Nob3VsZENvbGxl
Y3RHYXJiYWdlU29vbiA9IHRydWU7IH0KKyAgICB2b2lkIGNsZWFyU2hvdWxkQ29sbGVjdEdhcmJh
Z2VTb29uKCkgeyBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbiA9IGZhbHNlOyB9CisgICAgYm9v
bCBzaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbGxl
Y3RHYXJiYWdlU29vbjsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CisgICAgflY4QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7
CisKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKKyAgICBUZW1wbGF0ZU1hcCBtX3Rl
bXBsYXRlczsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3RvU3RyaW5nTmFtZTsK
KyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0cmluZ1RlbXBs
YXRlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX2xhenlFdmVu
dExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZTsKKyAgICBPd25QdHI8U3RyaW5nQ2FjaGU+IG1fc3Ry
aW5nQ2FjaGU7CisgICAgT3duUHRyPEludGVnZXJDYWNoZT4gbV9pbnRlZ2VyQ2FjaGU7CisKKyAg
ICBET01EYXRhTGlzdCBtX2RvbURhdGFMaXN0OworICAgIERPTURhdGFTdG9yZSogbV9kb21EYXRh
U3RvcmU7CisKKyAgICBPd25QdHI8VjhIaWRkZW5Qcm9wZXJ0eU5hbWU+IG1faGlkZGVuUHJvcGVy
dHlOYW1lOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2F1eGlsaWFyeUNvbnRl
eHQ7CisKKyAgICBib29sIG1fY29uc3RydWN0b3JNb2RlOworICAgIGZyaWVuZCBjbGFzcyBDb25z
dHJ1Y3Rvck1vZGU7CisKKyAgICBpbnQgbV9yZWN1cnNpb25MZXZlbDsKKworI2lmbmRlZiBOREVC
VUcKKyAgICBHbG9iYWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7CisgICAgaW50IG1faW50
ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKKyNlbmRpZgorICAgIE93blB0cjxHQ0V2ZW50RGF0
YT4gbV9nY0V2ZW50RGF0YTsKKyAgICBib29sIG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhCaW5kaW5nUGVySXNv
bGF0ZURhdGFfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156857</attachid>
            <date>2012-08-06 21:34:36 -0700</date>
            <delta_ts>2012-08-08 03:23:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93333-20120807133411.patch</filename>
            <type>text/plain</type>
            <size>24925</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5MDRiYjcwZDdlZDVm
ODJmYWUxNjE1Y2RjNGFjYTZlMTRhNjhlMC4uMGM1YTlkMTQxYWRjNGFjMzM4NTYxYmJjNjQ4YzZl
ZDE4ODRmOWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA4LTA2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEZhY3RvciBv
dXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgZnJvbSBWOEJpbmRpbmcgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggbW92ZXMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgdG8gVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEue2gsY3BwfS4KKworICAgICAgICBUbyBhdm9pZCBjaXJjdWxhciAjaW5jbHVkZSBkZXBl
bmRlbmN5LCBJIHVzZWQgT3duUHRycyBmb3IgbV9zdHJpbmdDYWNoZSwKKyAgICAgICAgbV9pbnRl
Z2VyQ2FjaGUsIG1faGlkZGVuUHJvcGVydHlOYW1lIGFuZCBtX2djRXZlbnREYXRhLgorCisgICAg
ICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBVc2VWOC5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0R0NFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlR0NFdmVudERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmg6CisgICAgICAgIChHQ0V2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGVNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRlbXBsYXRlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp0b1N0cmluZ05hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRvU3RyaW5nVGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmxhenlFdmVudExp
c3RlbmVyVG9TdHJpbmdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6c3RyaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OmludGVnZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6YWxsU3RvcmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpoaWRkZW5Qcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmF1eGlsaWFyeUNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlZ2lzdGVyRE9NRGF0YVN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp1bnJlZ2lzdGVyRE9NRGF0YVN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkb21EYXRh
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnNldERP
TURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmluY3JlbWVudFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRSZWN1cnNpb25MZXZlbCk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Z2xvYmFsSGFuZGxlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lv
bkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNy
ZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpnY0V2ZW50
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6c2V0U2hv
dWxkQ29sbGVjdEdhcmJhZ2VTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjpjbGVhclNob3VsZENvbGxlY3RHYXJiYWdlU29vbik6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6c2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKToK
KwogMjAxMi0wOC0wNiAgTWF4IFZ1am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUyBTaGFkZXJzXSBQYXJzZSBtaXggZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1VzZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggYjFh
NzQ4YzRjZmUwYzE5NWJhZGQ0M2QyMDkyNTU5MjM0OTkyZjZjYi4uNmVjNmZkZDU3NzM1OWY0MDFi
MjJmNTdkNTY3ZDgxZjJjOTU3NzA2OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjgu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTQ2LDYgKzQ2LDcgQEAg
TElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0
YVN0b3JlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKyAgICBiaW5kaW5ncy92OC9WOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YS5jcHAKICAgICBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCiAgICAg
YmluZGluZ3MvdjgvVjhET01NYXAuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiMWI0YTZjMWY2ZmM5ZGY3ZjA5ZDNiMDE4YmRkNjEx
ZjdhYmMwOTgwLi4wYjBhNTBjYzQ5NjVmNTVlMWNjZGI0NDc5MGIwZWYxNzM0MTdhMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yMjQ5LDYgKzIyNDksOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJD
b250ZXh0RGF0YS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1BlckNv
bnRleHREYXRhLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xh
dGVEYXRhLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEdDRXZlbnQuY3BwCmluZGV4IDM3ZGQ4NWU1NTM0ZjY2MjMzZTA3MzVlMjI4YTA5ZGM4OTJk
Yzg4NTEuLjY2M2VhNTc0ZTdiOWRjNjE2MTA0ZGNmMzQ0YjJlNGU1ZmE0ZWE1MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCkBAIC00MCw3ICs0MCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEdDRXZlbnREYXRhJiBpc29sYXRl
R0NFdmVudERhdGEoKQorc3RhdGljIEdDRXZlbnREYXRhKiBpc29sYXRlR0NFdmVudERhdGEoKQog
ewogICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBpc29sYXRlRGF0YSA9IFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgQVNTRVJUKGlzb2xhdGVEYXRhKTsKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RhdGljIEdDRXZlbnREYXRhJiBpc29sYXRlR0NFdmVudERhdGEoKQogCiB2
b2lkIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVy
KiBldmVudExpc3RlbmVyKQogewotICAgIEdDRXZlbnREYXRhOjpHQ0V2ZW50TGlzdGVuZXJzJiBs
aXN0ZW5lcnMgPSBpc29sYXRlR0NFdmVudERhdGEoKS5saXN0ZW5lcnMoKTsKKyAgICBHQ0V2ZW50
RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gaXNvbGF0ZUdDRXZlbnREYXRhKCkt
Pmxpc3RlbmVycygpOwogICAgIGlmIChsaXN0ZW5lcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHY4
OjpWODo6QWRkR0NQcm9sb2d1ZUNhbGxiYWNrKFNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxs
YmFjayk7CiAgICAgICAgIHY4OjpWODo6QWRkR0NFcGlsb2d1ZUNhbGxiYWNrKFNjcmlwdEdDRXZl
bnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU2NyaXB0R0NF
dmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVu
ZXIpCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVu
dExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewogICAgIEFTU0VSVChldmVudExpc3RlbmVyKTsK
LSAgICBHQ0V2ZW50RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gaXNvbGF0ZUdD
RXZlbnREYXRhKCkubGlzdGVuZXJzKCk7CisgICAgR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5l
cnMmIGxpc3RlbmVycyA9IGlzb2xhdGVHQ0V2ZW50RGF0YSgpLT5saXN0ZW5lcnMoKTsKICAgICBB
U1NFUlQoIWxpc3RlbmVycy5pc0VtcHR5KCkpOwogICAgIHNpemVfdCBpID0gbGlzdGVuZXJzLmZp
bmQoZXZlbnRMaXN0ZW5lcik7CiAgICAgQVNTRVJUKGkgIT0gbm90Rm91bmQpOwpAQCAtODksMjMg
Kzg5LDIzIEBAIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpnZXRVc2VkSGVhcFNpemUoKQogCiB2b2lk
IFNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxsYmFjayh2ODo6R0NUeXBlIHR5cGUsIHY4OjpH
Q0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgR0NFdmVudERhdGEmIGdjRXZlbnREYXRhID0g
aXNvbGF0ZUdDRXZlbnREYXRhKCk7Ci0gICAgZ2NFdmVudERhdGEuc3RhcnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBnY0V2ZW50RGF0YS51c2VkSGVhcFNp
emUgPSBnZXRVc2VkSGVhcFNpemUoKTsKKyAgICBHQ0V2ZW50RGF0YSogZ2NFdmVudERhdGEgPSBp
c29sYXRlR0NFdmVudERhdGEoKTsKKyAgICBnY0V2ZW50RGF0YS0+c3RhcnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBnY0V2ZW50RGF0YS0+dXNlZEhlYXBT
aXplID0gZ2V0VXNlZEhlYXBTaXplKCk7CiB9CiAKIHZvaWQgU2NyaXB0R0NFdmVudDo6Z2NFcGls
b2d1ZUNhbGxiYWNrKHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykK
IHsKLSAgICBHQ0V2ZW50RGF0YSYgZ2NFdmVudERhdGEgPSBpc29sYXRlR0NFdmVudERhdGEoKTsK
LSAgICBpZiAoIWdjRXZlbnREYXRhLnVzZWRIZWFwU2l6ZSkKKyAgICBHQ0V2ZW50RGF0YSogZ2NF
dmVudERhdGEgPSBpc29sYXRlR0NFdmVudERhdGEoKTsKKyAgICBpZiAoIWdjRXZlbnREYXRhLT51
c2VkSGVhcFNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBkb3VibGUgZW5kVGltZSA9IFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgc2l6ZV90IHVzZWRIZWFwU2l6ZSA9
IGdldFVzZWRIZWFwU2l6ZSgpOwotICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHVzZWRIZWFw
U2l6ZSA+IGdjRXZlbnREYXRhLnVzZWRIZWFwU2l6ZSA/IDAgOiBnY0V2ZW50RGF0YS51c2VkSGVh
cFNpemUgLSB1c2VkSGVhcFNpemU7Ci0gICAgR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5lcnMm
IGxpc3RlbmVycyA9IGdjRXZlbnREYXRhLmxpc3RlbmVycygpOworICAgIHNpemVfdCBjb2xsZWN0
ZWRCeXRlcyA9IHVzZWRIZWFwU2l6ZSA+IGdjRXZlbnREYXRhLT51c2VkSGVhcFNpemUgPyAwIDog
Z2NFdmVudERhdGEtPnVzZWRIZWFwU2l6ZSAtIHVzZWRIZWFwU2l6ZTsKKyAgICBHQ0V2ZW50RGF0
YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gZ2NFdmVudERhdGEtPmxpc3RlbmVycygp
OwogICAgIGZvciAoR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5lcnM6Oml0ZXJhdG9yIGkgPSBs
aXN0ZW5lcnMuYmVnaW4oKTsgaSAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsraSkKLSAgICAgICAgKCpp
KS0+ZGlkR0MoZ2NFdmVudERhdGEuc3RhcnRUaW1lLCBlbmRUaW1lLCBjb2xsZWN0ZWRCeXRlcyk7
Ci0gICAgZ2NFdmVudERhdGEuY2xlYXIoKTsKKyAgICAgICAgKCppKS0+ZGlkR0MoZ2NFdmVudERh
dGEtPnN0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0ZXMpOworICAgIGdjRXZlbnREYXRh
LT5jbGVhcigpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggNDJlYTY0NWViNWMzOTFkMzQ1NTY2NzIw
YWM5MzZjMzhjZTAxMzM2ZS4uYjRkODRiN2MzOTliYTVhNzBhMjI2YWRhMDEzOWU1NDNkZDA2ZThj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC01Miw1NyAr
NTIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLQotVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQotICAgIDog
bV9kb21EYXRhU3RvcmUoMCkKLSAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9k
ZTo6Q3JlYXRlTmV3T2JqZWN0KQotICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQotI2lmbmRlZiBO
REVCVUcKLSAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgwKQotI2VuZGlmCi0g
ICAgLCBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbihmYWxzZSkKLXsKLX0KLQotVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQZXJJc29sYXRlRGF0YSgpCi17Ci19Ci0KLVY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhKiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQotewotICAgIEFTU0VSVChpc29sYXRlKTsKLSAgICBBU1NFUlQoIWlz
b2xhdGUtPkdldERhdGEoKSk7Ci0gICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBu
ZXcgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoaXNvbGF0ZSk7Ci0gICAgaXNvbGF0ZS0+U2V0RGF0
YShkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQodjg6Oklzb2xhdGUqIGlzb2xhdGUpIAotewotICAgIEFT
U0VSVChpc29sYXRlKTsKLSAgICBpZiAoIWlzb2xhdGUtPkdldERhdGEoKSkgCi0gICAgICAgIGNy
ZWF0ZShpc29sYXRlKTsKLX0KLQotdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9z
ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICB2b2lkKiBkYXRhID0gaXNvbGF0ZS0+R2V0
RGF0YSgpOwotICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+
KGRhdGEpOwotICAgIGlzb2xhdGUtPlNldERhdGEoMCk7Ci19Ci0KLXZvaWQgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvPFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1fcmF3VGVtcGxhdGVzKTsKLSAgICBp
bmZvLmFkZEhhc2hNYXAobV90ZW1wbGF0ZXMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fc3RyaW5nQ2FjaGUpOwotICAgIGluZm8uYWRkVmVjdG9yKG1fZG9tRGF0YUxpc3QpOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RvbURhdGFMaXN0LnNpemUoKTsgaSsrKQot
ICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2RvbURhdGFMaXN0W2ldKTsKLX0K
LQogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZvciB2OEV4dGVy
bmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5hZ2UgdGhlIGxpZmUtY3ljbGUgb2YgdGhl
IHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5hbCBzdHJpbmcuCiBjbGFzcyBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJj
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDk3NzVlMGYxNmUx
NzBkMDRiNmQ5ZDAyNWZlNWI5YTAwYTliMDcxMTcuLjU3ODc1OTYyYjZjMTZkNmNlNmYzYTdkOTdi
ZjhiZDhmNDA5YzJlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgorI2luY2x1ZGUgIlY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAi
VjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgpAQCAt
MTM2LDYgKzEzNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgICAgICBH
Q0V2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMoKSB7IHJldHVybiBtX2xpc3RlbmVyczsgfQogCisg
ICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIG1lbWJlcnMgcHJpdmF0ZS4KICAgICAgICAgZG91
YmxlIHN0YXJ0VGltZTsKICAgICAgICAgc2l6ZV90IHVzZWRIZWFwU2l6ZTsKIApAQCAtMTQ5LDEx
NCArMTUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHR5cGVkZWYgSGFzaE1hcDx2ODo6
VmFsdWUqLCBHbG9iYWxIYW5kbGVJbmZvKj4gR2xvYmFsSGFuZGxlTWFwOwogI2VuZGlmCiAKLSAg
ICBjbGFzcyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGNyZWF0ZSh2ODo6SXNvbGF0ZSopOwotICAg
ICAgICBzdGF0aWMgdm9pZCBlbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZSopOwotICAgICAg
ICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGN1cnJlbnQodjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzb2xhdGUp
KQotICAgICAgICAgICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwot
ICAgICAgICAgICAgQVNTRVJUKGlzb2xhdGUtPkdldERhdGEoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRh
KCkpOyAKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBkaXNwb3NlKHY4OjpJc29sYXRl
Kik7Ci0KLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFdyYXBwZXJUeXBlSW5mbyosIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiA+IFRlbXBsYXRlTWFwOwotCi0gICAgICAgIFRl
bXBsYXRlTWFwJiByYXdUZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fcmF3VGVtcGxhdGVzOyB9Ci0g
ICAgICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVzOyB9
Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+JiB0b1N0cmluZ05hbWUoKSB7IHJl
dHVybiBtX3RvU3RyaW5nTmFtZTsgfQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4mIHRvU3RyaW5nVGVtcGxhdGUoKSB7IHJldHVybiBtX3RvU3RyaW5nVGVtcGxh
dGU7IH0KLQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4mIGxh
enlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBtX2xhenlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFN0cmluZ0NhY2hlKiBzdHJpbmdDYWNoZSgpIHsgcmV0dXJuICZtX3N0cmluZ0Nh
Y2hlOyB9Ci0gICAgICAgIEludGVnZXJDYWNoZSogaW50ZWdlckNhY2hlKCkgeyByZXR1cm4gJm1f
aW50ZWdlckNhY2hlOyB9Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICB2b2lkIHZp
c2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciopOwotI2VuZGlmCi0gICAg
ICAgIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKSB7IHJldHVybiBtX2RvbURhdGFMaXN0OyB9Ci0K
LSAgICAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUqIGhpZGRlblByb3BlcnR5TmFtZSgpIHsgcmV0
dXJuICZtX2hpZGRlblByb3BlcnR5TmFtZTsgfQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
Q29udGV4dD4mIGF1eGlsaWFyeUNvbnRleHQoKSB7IHJldHVybiBtX2F1eGlsaWFyeUNvbnRleHQ7
IH0KLQotICAgICAgICB2b2lkIHJlZ2lzdGVyRE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZSogZG9t
RGF0YVN0b3JlKSAKLSAgICAgICAgewotICAgICAgICAgICAgbV9kb21EYXRhTGlzdC5hcHBlbmQo
ZG9tRGF0YVN0b3JlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdW5yZWdpc3RlckRPTURh
dGFTdG9yZShET01EYXRhU3RvcmUqIGRvbURhdGFTdG9yZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKG1fZG9tRGF0YUxpc3QuZmluZChkb21EYXRhU3RvcmUpKTsKLSAgICAgICAgICAg
IG1fZG9tRGF0YUxpc3QucmVtb3ZlKG1fZG9tRGF0YUxpc3QuZmluZChkb21EYXRhU3RvcmUpKTsK
LSAgICAgICAgfQotCi0KLSAgICAgICAgRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUoKSB7IHJl
dHVybiBtX2RvbURhdGFTdG9yZTsgfQotICAgICAgICAvLyBET01EYXRhU3RvcmUgaXMgb3duZWQg
b3V0c2lkZSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YS4KLSAgICAgICAgdm9pZCBzZXRET01EYXRh
U3RvcmUoRE9NRGF0YVN0b3JlKiBzdG9yZSkgeyBtX2RvbURhdGFTdG9yZSA9IHN0b3JlOyB9Ci0K
LSAgICAgICAgaW50IHJlY3Vyc2lvbkxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9yZWN1cnNpb25M
ZXZlbDsgfQotICAgICAgICBpbnQgaW5jcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiAr
K21fcmVjdXJzaW9uTGV2ZWw7IH0KLSAgICAgICAgaW50IGRlY3JlbWVudFJlY3Vyc2lvbkxldmVs
KCkgeyByZXR1cm4gLS1tX3JlY3Vyc2lvbkxldmVsOyB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAg
ICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwKCkgeyByZXR1cm4gbV9nbG9iYWxI
YW5kbGVNYXA7IH0KLQotICAgICAgICBpbnQgaW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQotICAgICAg
ICBpbnQgaW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuICsr
bV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9Ci0gICAgICAgIGludCBkZWNyZW1lbnRJ
bnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gLS1tX2ludGVybmFsU2NyaXB0
UmVjdXJzaW9uTGV2ZWw7IH0KLSNlbmRpZgotCi0gICAgICAgIEdDRXZlbnREYXRhJiBnY0V2ZW50
RGF0YSgpIHsgcmV0dXJuIG1fZ2NFdmVudERhdGE7IH0KLQotICAgICAgICB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKLQotICAgICAgICAvLyBHaXZlcyB0
aGUgc3lzdGVtIGEgaGludCB0aGF0IHdlIHNob3VsZCByZXF1ZXN0IGdhcmJhZ2UgY29sbGVjdGlv
bgotICAgICAgICAvLyB1cG9uIHRoZSBuZXh0IGNsb3NlIG9yIG5hdmlnYXRpb24gZXZlbnQsIGJl
Y2F1c2Ugc29tZSBleHBlbnNpdmUKLSAgICAgICAgLy8gb2JqZWN0cyBoYXZlIGJlZW4gYWxsb2Nh
dGVkIHRoYXQgd2Ugd2FudCB0byB0YWtlIGV2ZXJ5IG9wcG9ydHVuaXR5Ci0gICAgICAgIC8vIHRv
IGNvbGxlY3QuCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKCkgeyBt
X3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbiA9IHRydWU7IH0KLSAgICAgICAgdm9pZCBjbGVhclNo
b3VsZENvbGxlY3RHYXJiYWdlU29vbigpIHsgbV9zaG91bGRDb2xsZWN0R2FyYmFnZVNvb24gPSBm
YWxzZTsgfQotICAgICAgICBib29sIHNob3VsZENvbGxlY3RHYXJiYWdlU29vbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uOyB9Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICBleHBsaWNpdCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSopOwotICAg
ICAgICB+VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoKTsKLQotICAgICAgICBUZW1wbGF0ZU1hcCBt
X3Jhd1RlbXBsYXRlczsKLSAgICAgICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXM7Ci0gICAgICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fdG9TdHJpbmdOYW1lOwotICAgICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0cmluZ1RlbXBsYXRlOwotICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9sYXp5RXZlbnRMaXN0
ZW5lclRvU3RyaW5nVGVtcGxhdGU7Ci0gICAgICAgIFN0cmluZ0NhY2hlIG1fc3RyaW5nQ2FjaGU7
Ci0gICAgICAgIEludGVnZXJDYWNoZSBtX2ludGVnZXJDYWNoZTsKLQotICAgICAgICBET01EYXRh
TGlzdCBtX2RvbURhdGFMaXN0OwotICAgICAgICBET01EYXRhU3RvcmUqIG1fZG9tRGF0YVN0b3Jl
OwotCi0gICAgICAgIFY4SGlkZGVuUHJvcGVydHlOYW1lIG1faGlkZGVuUHJvcGVydHlOYW1lOwot
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9hdXhpbGlhcnlDb250ZXh0Owot
Ci0gICAgICAgIGJvb2wgbV9jb25zdHJ1Y3Rvck1vZGU7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBD
b25zdHJ1Y3Rvck1vZGU7Ci0KLSAgICAgICAgaW50IG1fcmVjdXJzaW9uTGV2ZWw7Ci0KLSNpZm5k
ZWYgTkRFQlVHCi0gICAgICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsKLSAg
ICAgICAgaW50IG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKLSNlbmRpZgotICAgICAg
ICBHQ0V2ZW50RGF0YSBtX2djRXZlbnREYXRhOwotCi0gICAgICAgIGJvb2wgbV9zaG91bGRDb2xs
ZWN0R2FyYmFnZVNvb247Ci0gICAgfTsKLQogICAgIGNsYXNzIENvbnN0cnVjdG9yTW9kZSB7CiAg
ICAgcHVibGljOgogICAgICAgICBlbnVtIE1vZGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2
MWFhZjY0NjQ5YjhmZTRlN2RhNDNjNzJiM2MxMGE0YTI0YzM3MWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHAK
QEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJp
bmRpbmdQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICA6IG1fc3RyaW5n
Q2FjaGUoYWRvcHRQdHIobmV3IFN0cmluZ0NhY2hlKCkpKQorICAgICwgbV9pbnRlZ2VyQ2FjaGUo
YWRvcHRQdHIobmV3IEludGVnZXJDYWNoZSgpKSkKKyAgICAsIG1fZG9tRGF0YVN0b3JlKDApCisg
ICAgLCBtX2hpZGRlblByb3BlcnR5TmFtZShhZG9wdFB0cihuZXcgVjhIaWRkZW5Qcm9wZXJ0eU5h
bWUoKSkpCisgICAgLCBtX2NvbnN0cnVjdG9yTW9kZShDb25zdHJ1Y3Rvck1vZGU6OkNyZWF0ZU5l
d09iamVjdCkKKyAgICAsIG1fcmVjdXJzaW9uTGV2ZWwoMCkKKyNpZm5kZWYgTkRFQlVHCisgICAg
LCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoMCkKKyNlbmRpZgorICAgICwgbV9nY0V2
ZW50RGF0YShhZG9wdFB0cihuZXcgR0NFdmVudERhdGEoKSkpCisgICAgLCBtX3Nob3VsZENvbGxl
Y3RHYXJiYWdlU29vbihmYWxzZSkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6On5W
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSgpCit7Cit9CisKK1Y4QmluZGluZ1Blcklzb2xhdGVEYXRh
KiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQor
eworICAgIEFTU0VSVChpc29sYXRlKTsKKyAgICBBU1NFUlQoIWlzb2xhdGUtPkdldERhdGEoKSk7
CisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBuZXcgVjhCaW5kaW5nUGVySXNv
bGF0ZURhdGEoaXNvbGF0ZSk7CisgICAgaXNvbGF0ZS0+U2V0RGF0YShkYXRhKTsKKyAgICByZXR1
cm4gZGF0YTsKK30KKwordm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlh
bGl6ZWQodjg6Oklzb2xhdGUqIGlzb2xhdGUpIAoreworICAgIEFTU0VSVChpc29sYXRlKTsKKyAg
ICBpZiAoIWlzb2xhdGUtPkdldERhdGEoKSkgCisgICAgICAgIGNyZWF0ZShpc29sYXRlKTsKK30K
Kwordm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3sKKyAgICB2b2lkKiBkYXRhID0gaXNvbGF0ZS0+R2V0RGF0YSgpOworICAgIGRlbGV0
ZSBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+KGRhdGEpOworICAgIGlzb2xh
dGUtPlNldERhdGEoMCk7Cit9CisKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPFY4QmluZGluZ1Blcklzb2xhdGVEYXRhPiBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAg
aW5mby5hZGRIYXNoTWFwKG1fcmF3VGVtcGxhdGVzKTsKKyAgICBpbmZvLmFkZEhhc2hNYXAobV90
ZW1wbGF0ZXMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc3RyaW5nQ2FjaGUp
OworICAgIGluZm8uYWRkVmVjdG9yKG1fZG9tRGF0YUxpc3QpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2RvbURhdGFMaXN0LnNpemUoKTsgaSsrKQorICAgICAgICBpbmZvLmFkZElu
c3RydW1lbnRlZE1lbWJlcihtX2RvbURhdGFMaXN0W2ldKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Bl
cklzb2xhdGVEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcyYTJjNzRmZmNkNzk4OGJiNWM5ZGMyOTJiNDVj
ZTE4MmIzOGE0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmgKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YV9oCisjZGVmaW5lIFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhX2gKKworI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTURhdGFTdG9yZTsKK2NsYXNzIEdDRXZlbnRE
YXRhOworY2xhc3MgSW50ZWdlckNhY2hlOworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKK2NsYXNz
IFN0cmluZ0NhY2hlOworY2xhc3MgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU7CitjbGFzcyBXcmFwcGVy
VHlwZUluZm87CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorY2xhc3MgRXh0ZXJuYWxTdHJpbmdW
aXNpdG9yOworI2VuZGlmCisKK3R5cGVkZWYgV1RGOjpWZWN0b3I8RE9NRGF0YVN0b3JlKj4gRE9N
RGF0YUxpc3Q7CisKK2NsYXNzIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGNyZWF0ZSh2ODo6SXNvbGF0ZSopOwor
ICAgIHN0YXRpYyB2b2lkIGVuc3VyZUluaXRpYWxpemVkKHY4OjpJc29sYXRlKik7CisgICAgc3Rh
dGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjdXJyZW50KHY4OjpJc29sYXRlKiBpc29sYXRl
ID0gMCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghaXNvbGF0ZSkpCisgICAgICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKKyAgICAgICAgQVNTRVJUKGlz
b2xhdGUtPkdldERhdGEoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSo+KGlzb2xhdGUtPkdldERhdGEoKSk7IAorICAgIH0KKyAgICBzdGF0aWMg
dm9pZCBkaXNwb3NlKHY4OjpJc29sYXRlKik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8V3JhcHBl
clR5cGVJbmZvKiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ID4gVGVtcGxh
dGVNYXA7CisKKyAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jh
d1RlbXBsYXRlczsgfQorICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1f
dGVtcGxhdGVzOyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFt
ZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdOYW1lOyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1cm4gbV90b1N0cmluZ1Rl
bXBsYXRlOyB9CisKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4mIGxh
enlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGU7CisgICAgfQorCisgICAgU3RyaW5n
Q2FjaGUqIHN0cmluZ0NhY2hlKCkgeyByZXR1cm4gbV9zdHJpbmdDYWNoZS5nZXQoKTsgfQorICAg
IEludGVnZXJDYWNoZSogaW50ZWdlckNhY2hlKCkgeyByZXR1cm4gbV9pbnRlZ2VyQ2FjaGUuZ2V0
KCk7IH0KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgdm9pZCB2aXNpdEV4dGVybmFsU3Ry
aW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKKyNlbmRpZgorICAgIERPTURhdGFMaXN0JiBh
bGxTdG9yZXMoKSB7IHJldHVybiBtX2RvbURhdGFMaXN0OyB9CisKKyAgICBWOEhpZGRlblByb3Bl
cnR5TmFtZSogaGlkZGVuUHJvcGVydHlOYW1lKCkgeyByZXR1cm4gbV9oaWRkZW5Qcm9wZXJ0eU5h
bWUuZ2V0KCk7IH0KKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4mIGF1eGlsaWFyeUNv
bnRleHQoKSB7IHJldHVybiBtX2F1eGlsaWFyeUNvbnRleHQ7IH0KKworICAgIHZvaWQgcmVnaXN0
ZXJET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUpIAorICAgIHsKKyAgICAg
ICAgbV9kb21EYXRhTGlzdC5hcHBlbmQoZG9tRGF0YVN0b3JlKTsKKyAgICB9CisKKyAgICB2b2lk
IHVucmVnaXN0ZXJET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUpCisgICAg
eworICAgICAgICBBU1NFUlQobV9kb21EYXRhTGlzdC5maW5kKGRvbURhdGFTdG9yZSkpOworICAg
ICAgICBtX2RvbURhdGFMaXN0LnJlbW92ZShtX2RvbURhdGFMaXN0LmZpbmQoZG9tRGF0YVN0b3Jl
KSk7CisgICAgfQorCisgICAgLy8gRE9NRGF0YVN0b3JlIGlzIG93bmVkIG91dHNpZGUgVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEuCisgICAgRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUoKSB7IHJl
dHVybiBtX2RvbURhdGFTdG9yZTsgfQorICAgIHZvaWQgc2V0RE9NRGF0YVN0b3JlKERPTURhdGFT
dG9yZSogc3RvcmUpIHsgbV9kb21EYXRhU3RvcmUgPSBzdG9yZTsgfQorCisgICAgaW50IHJlY3Vy
c2lvbkxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9yZWN1cnNpb25MZXZlbDsgfQorICAgIGludCBp
bmNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuICsrbV9yZWN1cnNpb25MZXZlbDsgfQor
ICAgIGludCBkZWNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9yZWN1cnNpb25M
ZXZlbDsgfQorCisjaWZuZGVmIE5ERUJVRworICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFu
ZGxlTWFwKCkgeyByZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0KKworICAgIGludCBpbnRlcm5h
bFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFNjcmlwdFJl
Y3Vyc2lvbkxldmVsOyB9CisgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSB7IHJldHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAg
IGludCBkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gLS1t
X2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyNlbmRpZgorCisgICAgR0NFdmVudERh
dGEqIGdjRXZlbnREYXRhKCkgeyByZXR1cm4gbV9nY0V2ZW50RGF0YS5nZXQoKTsgfQorCisgICAg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKKyAgICAv
LyBHaXZlcyB0aGUgc3lzdGVtIGEgaGludCB0aGF0IHdlIHNob3VsZCByZXF1ZXN0IGdhcmJhZ2Ug
Y29sbGVjdGlvbgorICAgIC8vIHVwb24gdGhlIG5leHQgY2xvc2Ugb3IgbmF2aWdhdGlvbiBldmVu
dCwgYmVjYXVzZSBzb21lIGV4cGVuc2l2ZQorICAgIC8vIG9iamVjdHMgaGF2ZSBiZWVuIGFsbG9j
YXRlZCB0aGF0IHdlIHdhbnQgdG8gdGFrZSBldmVyeSBvcHBvcnR1bml0eQorICAgIC8vIHRvIGNv
bGxlY3QuCisgICAgdm9pZCBzZXRTaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSB7IG1fc2hvdWxk
Q29sbGVjdEdhcmJhZ2VTb29uID0gdHJ1ZTsgfQorICAgIHZvaWQgY2xlYXJTaG91bGRDb2xsZWN0
R2FyYmFnZVNvb24oKSB7IG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uID0gZmFsc2U7IH0KKyAg
ICBib29sIHNob3VsZENvbGxlY3RHYXJiYWdlU29vbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxk
Q29sbGVjdEdhcmJhZ2VTb29uOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqKTsKKyAgICB+VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEoKTsKKworICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzOworICAgIFRlbXBsYXRlTWFw
IG1fdGVtcGxhdGVzOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fdG9TdHJpbmdO
YW1lOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX3RvU3RyaW5n
VGVtcGxhdGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fbGF6
eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOworICAgIE93blB0cjxTdHJpbmdDYWNoZT4g
bV9zdHJpbmdDYWNoZTsKKyAgICBPd25QdHI8SW50ZWdlckNhY2hlPiBtX2ludGVnZXJDYWNoZTsK
KworICAgIERPTURhdGFMaXN0IG1fZG9tRGF0YUxpc3Q7CisgICAgRE9NRGF0YVN0b3JlKiBtX2Rv
bURhdGFTdG9yZTsKKworICAgIE93blB0cjxWOEhpZGRlblByb3BlcnR5TmFtZT4gbV9oaWRkZW5Q
cm9wZXJ0eU5hbWU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fYXV4aWxpYXJ5
Q29udGV4dDsKKworICAgIGJvb2wgbV9jb25zdHJ1Y3Rvck1vZGU7CisgICAgZnJpZW5kIGNsYXNz
IENvbnN0cnVjdG9yTW9kZTsKKworICAgIGludCBtX3JlY3Vyc2lvbkxldmVsOworCisjaWZuZGVm
IE5ERUJVRworICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsKKyAgICBpbnQg
bV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOworI2VuZGlmCisgICAgT3duUHRyPEdDRXZl
bnREYXRhPiBtX2djRXZlbnREYXRhOworICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0R2FyYmFnZVNv
b247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YV9oCg==
</data>
<flag name="commit-queue"
          id="166879"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157074</attachid>
            <date>2012-08-07 18:25:21 -0700</date>
            <delta_ts>2012-08-07 22:16:29 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93333-20120808102456.patch</filename>
            <type>text/plain</type>
            <size>24887</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uZDMyYzQxODUxMGY5NmNiMWQ0NWM5NTUwMTkwNGVi
MDZjY2MyZWMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA4LTA2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEZhY3RvciBv
dXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgZnJvbSBWOEJpbmRpbmcgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtb3ZlcyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSB0byBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YS57aCxjcHB9LgorCisgICAgICAgIFRvIGF2b2lkIGNpcmN1bGFyICNpbmNsdWRlIGRlcGVuZGVu
Y3ksIEkgdXNlZCBPd25QdHJzIGZvciBtX3N0cmluZ0NhY2hlLAorICAgICAgICBtX2ludGVnZXJD
YWNoZSwgbV9oaWRkZW5Qcm9wZXJ0eU5hbWUgYW5kIG1fZ2NFdmVudERhdGEuCisKKyAgICAgICAg
Tm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVzZVY4LmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRH
Q0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xhdGVHQ0V2ZW50RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEdDRXZlbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0R0NFdmVudDo6Z2NQcm9sb2d1ZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEdDRXZlbnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcu
aDoKKyAgICAgICAgKEdDRXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6flY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3VyZUluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dGVtcGxhdGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRvU3RyaW5nTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dG9TdHJpbmdUZW1wbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6bGF6eUV2ZW50TGlzdGVu
ZXJUb1N0cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpzdHJpbmdDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6aW50ZWdlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjphbGxTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmhpZGRlblByb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6YXV4aWxpYXJ5Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmVnaXN0ZXJET01EYXRhU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnVucmVnaXN0ZXJET01EYXRhU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRvbURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6c2V0RE9NRGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZWN1
cnNpb25MZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
aW5jcmVtZW50UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OmRlY3JlbWVudFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpnbG9iYWxIYW5kbGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmluY3JlbWVu
dEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5k
aW5nUGVySXNvbGF0ZURhdGE6OmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmdjRXZlbnREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpzZXRTaG91bGRD
b2xsZWN0R2FyYmFnZVNvb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmNsZWFyU2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpzaG91bGRDb2xsZWN0R2FyYmFnZVNvb24pOgorCiAy
MDEyLTA4LTA3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXSBSZW1vdmUgUGxhdGZvcm1Ub3VjaEV2ZW50RWZsIGFuZCBQbGF0Zm9ybVRvdWNoUG9p
bnRFZmwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvVXNlVjguY21ha2UKaW5kZXggZGYxZGRkMTA2ODEwMjZlZDE0MTFjYTI4OTA1MjFiNTQ2
NDlkYzRmOC4uZjFkOTNiNzBlNGZkMDc3NzEwNjUxNjE3OTVmOWJlNGI1YWEzNzBhYyAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNl
VjguY21ha2UKQEAgLTQ2LDYgKzQ2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgYmluZGluZ3MvdjgvU3RhdGljRE9NRGF0YVN0b3JlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4
QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
KyAgICBiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHAKICAgICBiaW5kaW5n
cy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmNwcCwKICAgICBiaW5kaW5n
cy92OC9WOENvbGxlY3Rpb24uY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggZTk2MWVmODIwOGFjNDkyYTVlMTA3ODFjYTY4MjYxYmMzNTYzZjI5ZC4u
OTEwZjZhZWM5ODA3ZDQxMGVkMjRlODI2ZTgwNTAzYTBhMDA3M2M0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMjI0Niw2ICsyMjQ2LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRp
bmcuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5o
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHAn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhv
ZHMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0
ZXNBbmRNZXRob2RzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcAppbmRl
eCAzN2RkODVlNTUzNGY2NjIzM2UwNzM1ZTIyOGEwOWRjODkyZGM4ODUxLi42NjNlYTU3NGU3Yjlk
YzYxNjEwNGRjZjM0NGIyZTRlNWZhNGVhNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRHQ0V2ZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBHQ0V2ZW50RGF0YSYgaXNvbGF0ZUdDRXZlbnREYXRhKCkKK3N0YXRp
YyBHQ0V2ZW50RGF0YSogaXNvbGF0ZUdDRXZlbnREYXRhKCkKIHsKICAgICBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YSogaXNvbGF0ZURhdGEgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpOwogICAgIEFTU0VSVChpc29sYXRlRGF0YSk7CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBH
Q0V2ZW50RGF0YSYgaXNvbGF0ZUdDRXZlbnREYXRhKCkKIAogdm9pZCBTY3JpcHRHQ0V2ZW50Ojph
ZGRFdmVudExpc3RlbmVyKFNjcmlwdEdDRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lcikKIHsK
LSAgICBHQ0V2ZW50RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gaXNvbGF0ZUdD
RXZlbnREYXRhKCkubGlzdGVuZXJzKCk7CisgICAgR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5l
cnMmIGxpc3RlbmVycyA9IGlzb2xhdGVHQ0V2ZW50RGF0YSgpLT5saXN0ZW5lcnMoKTsKICAgICBp
ZiAobGlzdGVuZXJzLmlzRW1wdHkoKSkgewogICAgICAgICB2ODo6Vjg6OkFkZEdDUHJvbG9ndWVD
YWxsYmFjayhTY3JpcHRHQ0V2ZW50OjpnY1Byb2xvZ3VlQ2FsbGJhY2spOwogICAgICAgICB2ODo6
Vjg6OkFkZEdDRXBpbG9ndWVDYWxsYmFjayhTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJh
Y2spOwpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVu
ZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogdm9pZCBTY3JpcHRHQ0V2
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKFNjcmlwdEdDRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0
ZW5lcikKIHsKICAgICBBU1NFUlQoZXZlbnRMaXN0ZW5lcik7Ci0gICAgR0NFdmVudERhdGE6OkdD
RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9IGlzb2xhdGVHQ0V2ZW50RGF0YSgpLmxpc3RlbmVy
cygpOworICAgIEdDRXZlbnREYXRhOjpHQ0V2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBpc29s
YXRlR0NFdmVudERhdGEoKS0+bGlzdGVuZXJzKCk7CiAgICAgQVNTRVJUKCFsaXN0ZW5lcnMuaXNF
bXB0eSgpKTsKICAgICBzaXplX3QgaSA9IGxpc3RlbmVycy5maW5kKGV2ZW50TGlzdGVuZXIpOwog
ICAgIEFTU0VSVChpICE9IG5vdEZvdW5kKTsKQEAgLTg5LDIzICs4OSwyMyBAQCBzaXplX3QgU2Ny
aXB0R0NFdmVudDo6Z2V0VXNlZEhlYXBTaXplKCkKIAogdm9pZCBTY3JpcHRHQ0V2ZW50OjpnY1By
b2xvZ3VlQ2FsbGJhY2sodjg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdz
KQogewotICAgIEdDRXZlbnREYXRhJiBnY0V2ZW50RGF0YSA9IGlzb2xhdGVHQ0V2ZW50RGF0YSgp
OwotICAgIGdjRXZlbnREYXRhLnN0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7Ci0gICAgZ2NFdmVudERhdGEudXNlZEhlYXBTaXplID0gZ2V0VXNlZEhlYXBTaXpl
KCk7CisgICAgR0NFdmVudERhdGEqIGdjRXZlbnREYXRhID0gaXNvbGF0ZUdDRXZlbnREYXRhKCk7
CisgICAgZ2NFdmVudERhdGEtPnN0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CisgICAgZ2NFdmVudERhdGEtPnVzZWRIZWFwU2l6ZSA9IGdldFVzZWRIZWFwU2l6
ZSgpOwogfQogCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OmdjRXBpbG9ndWVDYWxsYmFjayh2ODo6R0NU
eXBlIHR5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgR0NFdmVudERhdGEm
IGdjRXZlbnREYXRhID0gaXNvbGF0ZUdDRXZlbnREYXRhKCk7Ci0gICAgaWYgKCFnY0V2ZW50RGF0
YS51c2VkSGVhcFNpemUpCisgICAgR0NFdmVudERhdGEqIGdjRXZlbnREYXRhID0gaXNvbGF0ZUdD
RXZlbnREYXRhKCk7CisgICAgaWYgKCFnY0V2ZW50RGF0YS0+dXNlZEhlYXBTaXplKQogICAgICAg
ICByZXR1cm47CiAgICAgZG91YmxlIGVuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOwogICAgIHNpemVfdCB1c2VkSGVhcFNpemUgPSBnZXRVc2VkSGVhcFNpemUoKTsK
LSAgICBzaXplX3QgY29sbGVjdGVkQnl0ZXMgPSB1c2VkSGVhcFNpemUgPiBnY0V2ZW50RGF0YS51
c2VkSGVhcFNpemUgPyAwIDogZ2NFdmVudERhdGEudXNlZEhlYXBTaXplIC0gdXNlZEhlYXBTaXpl
OwotICAgIEdDRXZlbnREYXRhOjpHQ0V2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBnY0V2ZW50
RGF0YS5saXN0ZW5lcnMoKTsKKyAgICBzaXplX3QgY29sbGVjdGVkQnl0ZXMgPSB1c2VkSGVhcFNp
emUgPiBnY0V2ZW50RGF0YS0+dXNlZEhlYXBTaXplID8gMCA6IGdjRXZlbnREYXRhLT51c2VkSGVh
cFNpemUgLSB1c2VkSGVhcFNpemU7CisgICAgR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0ZW5lcnMm
IGxpc3RlbmVycyA9IGdjRXZlbnREYXRhLT5saXN0ZW5lcnMoKTsKICAgICBmb3IgKEdDRXZlbnRE
YXRhOjpHQ0V2ZW50TGlzdGVuZXJzOjppdGVyYXRvciBpID0gbGlzdGVuZXJzLmJlZ2luKCk7IGkg
IT0gbGlzdGVuZXJzLmVuZCgpOyArK2kpCi0gICAgICAgICgqaSktPmRpZEdDKGdjRXZlbnREYXRh
LnN0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0ZXMpOwotICAgIGdjRXZlbnREYXRhLmNs
ZWFyKCk7CisgICAgICAgICgqaSktPmRpZEdDKGdjRXZlbnREYXRhLT5zdGFydFRpbWUsIGVuZFRp
bWUsIGNvbGxlY3RlZEJ5dGVzKTsKKyAgICBnY0V2ZW50RGF0YS0+Y2xlYXIoKTsKIH0KICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwCmluZGV4IGQ1NTg5MTA5NGM4YzQzODg0OTRhYzFkNTIwYmZlNTI5M2JmMjgxYjYuLmY0
ZGMyOGI4OGY0MWU3MmVlMzgyZTJkNjRlMGY0MjA0NjkwODk4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNTIsNTcgKzUyLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0KLVY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLSAgICA6IG1fZG9tRGF0YVN0b3JlKDApCi0g
ICAgLCBtX2NvbnN0cnVjdG9yTW9kZShDb25zdHJ1Y3Rvck1vZGU6OkNyZWF0ZU5ld09iamVjdCkK
LSAgICAsIG1fcmVjdXJzaW9uTGV2ZWwoMCkKLSNpZm5kZWYgTkRFQlVHCi0gICAgLCBtX2ludGVy
bmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoMCkKLSNlbmRpZgotICAgICwgbV9zaG91bGRDb2xsZWN0
R2FyYmFnZVNvb24oZmFsc2UpCi17Ci19Ci0KLVY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp+VjhC
aW5kaW5nUGVySXNvbGF0ZURhdGEoKQotewotfQotCi1WOEJpbmRpbmdQZXJJc29sYXRlRGF0YSog
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmNyZWF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsK
LSAgICBBU1NFUlQoaXNvbGF0ZSk7Ci0gICAgQVNTRVJUKCFpc29sYXRlLT5HZXREYXRhKCkpOwot
ICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gbmV3IFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKGlzb2xhdGUpOwotICAgIGlzb2xhdGUtPlNldERhdGEoZGF0YSk7Ci0gICAgcmV0dXJu
IGRhdGE7Ci19Ci0KLXZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3VyZUluaXRpYWxp
emVkKHY4OjpJc29sYXRlKiBpc29sYXRlKSAKLXsKLSAgICBBU1NFUlQoaXNvbGF0ZSk7Ci0gICAg
aWYgKCFpc29sYXRlLT5HZXREYXRhKCkpIAotICAgICAgICBjcmVhdGUoaXNvbGF0ZSk7Ci19Ci0K
LXZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRpc3Bvc2Uodjg6Oklzb2xhdGUqIGlzb2xh
dGUpCi17Ci0gICAgdm9pZCogZGF0YSA9IGlzb2xhdGUtPkdldERhdGEoKTsKLSAgICBkZWxldGUg
c3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihkYXRhKTsKLSAgICBpc29sYXRl
LT5TZXREYXRhKDApOwotfQotCi12b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewot
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1fcmF3VGVtcGxh
dGVzKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV90ZW1wbGF0ZXMpOwotICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fc3RyaW5nQ2FjaGUpOwotICAgIGluZm8uYWRkVmVjdG9yKG1fZG9t
RGF0YUxpc3QpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RvbURhdGFMaXN0LnNp
emUoKTsgaSsrKQotICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2RvbURhdGFM
aXN0W2ldKTsKLX0KLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiB2b2lkIFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjp2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZp
c2l0b3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IGM2MzJi
MWIzNjg5ZTQ3ODViNjY4ZmFlYzU3NjVkNGQ4MWRjOTk1YmYuLjMzYmY3ZjFjNTMyYTI2NTE5NjE3
YjcwNWFlNDgzNjMyN2VjMjRhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgorI2luY2x1ZGUg
IlY4QmluZGluZ1Blcklzb2xhdGVEYXRhLmgiCiAjaW5jbHVkZSAiVjhDb25maWd1cmVET01BdHRy
aWJ1dGVzQW5kTWV0aG9kcy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUg
IlY4R0NDb250cm9sbGVyLmgiCkBAIC02OCw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgfQogICAgICAgICBHQ0V2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMoKSB7IHJldHVy
biBtX2xpc3RlbmVyczsgfQogCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIG1lbWJlcnMg
cHJpdmF0ZS4KICAgICAgICAgZG91YmxlIHN0YXJ0VGltZTsKICAgICAgICAgc2l6ZV90IHVzZWRI
ZWFwU2l6ZTsKIApAQCAtODEsMTE0ICs4Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0
eXBlZGVmIEhhc2hNYXA8djg6OlZhbHVlKiwgR2xvYmFsSGFuZGxlSW5mbyo+IEdsb2JhbEhhbmRs
ZU1hcDsKICNlbmRpZgogCi0gICAgY2xhc3MgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgewotICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjcmVhdGUo
djg6Oklzb2xhdGUqKTsKLSAgICAgICAgc3RhdGljIHZvaWQgZW5zdXJlSW5pdGlhbGl6ZWQodjg6
Oklzb2xhdGUqKTsKLSAgICAgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjdXJy
ZW50KHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFpc29sYXRlKSkKLSAgICAgICAgICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xh
dGU6OkdldEN1cnJlbnQoKTsKLSAgICAgICAgICAgIEFTU0VSVChpc29sYXRlLT5HZXREYXRhKCkp
OwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4QmluZGluZ1Blcklzb2xhdGVEYXRh
Kj4oaXNvbGF0ZS0+R2V0RGF0YSgpKTsgCi0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQg
ZGlzcG9zZSh2ODo6SXNvbGF0ZSopOwotCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxXcmFwcGVy
VHlwZUluZm8qLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0
ZU1hcDsKLQotICAgICAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBt
X3Jhd1RlbXBsYXRlczsgfQotICAgICAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoKSB7IHJl
dHVybiBtX3RlbXBsYXRlczsgfQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYg
dG9TdHJpbmdOYW1lKCkgeyByZXR1cm4gbV90b1N0cmluZ05hbWU7IH0KLSAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1
cm4gbV90b1N0cmluZ1RlbXBsYXRlOyB9Ci0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGUoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVt
cGxhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmdDYWNoZSogc3RyaW5nQ2FjaGUoKSB7
IHJldHVybiAmbV9zdHJpbmdDYWNoZTsgfQotICAgICAgICBJbnRlZ2VyQ2FjaGUqIGludGVnZXJD
YWNoZSgpIHsgcmV0dXJuICZtX2ludGVnZXJDYWNoZTsgfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICAgICAgdm9pZCB2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0
b3IqKTsKLSNlbmRpZgotICAgICAgICBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCkgeyByZXR1cm4g
bV9kb21EYXRhTGlzdDsgfQotCi0gICAgICAgIFY4SGlkZGVuUHJvcGVydHlOYW1lKiBoaWRkZW5Q
cm9wZXJ0eU5hbWUoKSB7IHJldHVybiAmbV9oaWRkZW5Qcm9wZXJ0eU5hbWU7IH0KLSAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+JiBhdXhpbGlhcnlDb250ZXh0KCkgeyByZXR1cm4g
bV9hdXhpbGlhcnlDb250ZXh0OyB9Ci0KLSAgICAgICAgdm9pZCByZWdpc3RlckRPTURhdGFTdG9y
ZShET01EYXRhU3RvcmUqIGRvbURhdGFTdG9yZSkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1f
ZG9tRGF0YUxpc3QuYXBwZW5kKGRvbURhdGFTdG9yZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHVucmVnaXN0ZXJET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2RvbURhdGFMaXN0LmZpbmQoZG9tRGF0YVN0
b3JlKSk7Ci0gICAgICAgICAgICBtX2RvbURhdGFMaXN0LnJlbW92ZShtX2RvbURhdGFMaXN0LmZp
bmQoZG9tRGF0YVN0b3JlKSk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIERPTURhdGFTdG9yZSog
ZG9tRGF0YVN0b3JlKCkgeyByZXR1cm4gbV9kb21EYXRhU3RvcmU7IH0KLSAgICAgICAgLy8gRE9N
RGF0YVN0b3JlIGlzIG93bmVkIG91dHNpZGUgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuCi0gICAg
ICAgIHZvaWQgc2V0RE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZSogc3RvcmUpIHsgbV9kb21EYXRh
U3RvcmUgPSBzdG9yZTsgfQotCi0gICAgICAgIGludCByZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdXJzaW9uTGV2ZWw7IH0KLSAgICAgICAgaW50IGluY3JlbWVudFJlY3Vyc2lv
bkxldmVsKCkgeyByZXR1cm4gKyttX3JlY3Vyc2lvbkxldmVsOyB9Ci0gICAgICAgIGludCBkZWNy
ZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9yZWN1cnNpb25MZXZlbDsgfQotCi0j
aWZuZGVmIE5ERUJVRwotICAgICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgp
IHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxlTWFwOyB9Ci0KLSAgICAgICAgaW50IGludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJz
aW9uTGV2ZWw7IH0KLSAgICAgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSB7IHJldHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQotICAg
ICAgICBpbnQgZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJu
IC0tbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9Ci0jZW5kaWYKLQotICAgICAgICBH
Q0V2ZW50RGF0YSYgZ2NFdmVudERhdGEoKSB7IHJldHVybiBtX2djRXZlbnREYXRhOyB9Ci0KLSAg
ICAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0K
LSAgICAgICAgLy8gR2l2ZXMgdGhlIHN5c3RlbSBhIGhpbnQgdGhhdCB3ZSBzaG91bGQgcmVxdWVz
dCBnYXJiYWdlIGNvbGxlY3Rpb24KLSAgICAgICAgLy8gdXBvbiB0aGUgbmV4dCBjbG9zZSBvciBu
YXZpZ2F0aW9uIGV2ZW50LCBiZWNhdXNlIHNvbWUgZXhwZW5zaXZlCi0gICAgICAgIC8vIG9iamVj
dHMgaGF2ZSBiZWVuIGFsbG9jYXRlZCB0aGF0IHdlIHdhbnQgdG8gdGFrZSBldmVyeSBvcHBvcnR1
bml0eQotICAgICAgICAvLyB0byBjb2xsZWN0LgotICAgICAgICB2b2lkIHNldFNob3VsZENvbGxl
Y3RHYXJiYWdlU29vbigpIHsgbV9zaG91bGRDb2xsZWN0R2FyYmFnZVNvb24gPSB0cnVlOyB9Ci0g
ICAgICAgIHZvaWQgY2xlYXJTaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSB7IG1fc2hvdWxkQ29s
bGVjdEdhcmJhZ2VTb29uID0gZmFsc2U7IH0KLSAgICAgICAgYm9vbCBzaG91bGRDb2xsZWN0R2Fy
YmFnZVNvb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbjsgfQot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEo
djg6Oklzb2xhdGUqKTsKLSAgICAgICAgflY4QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7Ci0KLSAg
ICAgICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXM7Ci0gICAgICAgIFRlbXBsYXRlTWFwIG1f
dGVtcGxhdGVzOwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3RvU3RyaW5n
TmFtZTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fdG9T
dHJpbmdUZW1wbGF0ZTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOwotICAgICAgICBTdHJpbmdD
YWNoZSBtX3N0cmluZ0NhY2hlOwotICAgICAgICBJbnRlZ2VyQ2FjaGUgbV9pbnRlZ2VyQ2FjaGU7
Ci0KLSAgICAgICAgRE9NRGF0YUxpc3QgbV9kb21EYXRhTGlzdDsKLSAgICAgICAgRE9NRGF0YVN0
b3JlKiBtX2RvbURhdGFTdG9yZTsKLQotICAgICAgICBWOEhpZGRlblByb3BlcnR5TmFtZSBtX2hp
ZGRlblByb3BlcnR5TmFtZTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1f
YXV4aWxpYXJ5Q29udGV4dDsKLQotICAgICAgICBib29sIG1fY29uc3RydWN0b3JNb2RlOwotICAg
ICAgICBmcmllbmQgY2xhc3MgQ29uc3RydWN0b3JNb2RlOwotCi0gICAgICAgIGludCBtX3JlY3Vy
c2lvbkxldmVsOwotCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBHbG9iYWxIYW5kbGVNYXAgbV9n
bG9iYWxIYW5kbGVNYXA7Ci0gICAgICAgIGludCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2
ZWw7Ci0jZW5kaWYKLSAgICAgICAgR0NFdmVudERhdGEgbV9nY0V2ZW50RGF0YTsKLQotICAgICAg
ICBib29sIG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uOwotICAgIH07Ci0KICAgICBjbGFzcyBD
b25zdHJ1Y3Rvck1vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBNb2RlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRh
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNjFhYWY2NDY0OWI4ZmU0ZTdkYTQzYzcyYjNjMTBhNGEyNGMzNzFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGEuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ1Blcklzb2xhdGVEYXRhLmgiCisKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xh
dGUpCisgICAgOiBtX3N0cmluZ0NhY2hlKGFkb3B0UHRyKG5ldyBTdHJpbmdDYWNoZSgpKSkKKyAg
ICAsIG1faW50ZWdlckNhY2hlKGFkb3B0UHRyKG5ldyBJbnRlZ2VyQ2FjaGUoKSkpCisgICAgLCBt
X2RvbURhdGFTdG9yZSgwKQorICAgICwgbV9oaWRkZW5Qcm9wZXJ0eU5hbWUoYWRvcHRQdHIobmV3
IFY4SGlkZGVuUHJvcGVydHlOYW1lKCkpKQorICAgICwgbV9jb25zdHJ1Y3Rvck1vZGUoQ29uc3Ry
dWN0b3JNb2RlOjpDcmVhdGVOZXdPYmplY3QpCisgICAgLCBtX3JlY3Vyc2lvbkxldmVsKDApCisj
aWZuZGVmIE5ERUJVRworICAgICwgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKDApCisj
ZW5kaWYKKyAgICAsIG1fZ2NFdmVudERhdGEoYWRvcHRQdHIobmV3IEdDRXZlbnREYXRhKCkpKQor
ICAgICwgbV9zaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oZmFsc2UpCit7Cit9CisKK1Y4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjp+VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoKQoreworfQorCitWOEJp
bmRpbmdQZXJJc29sYXRlRGF0YSogVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmNyZWF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQoaXNvbGF0ZSk7CisgICAgQVNTRVJUKCFp
c29sYXRlLT5HZXREYXRhKCkpOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0g
bmV3IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKGlzb2xhdGUpOworICAgIGlzb2xhdGUtPlNldERh
dGEoZGF0YSk7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmVuc3VyZUluaXRpYWxpemVkKHY4OjpJc29sYXRlKiBpc29sYXRlKSAKK3sKKyAgICBB
U1NFUlQoaXNvbGF0ZSk7CisgICAgaWYgKCFpc29sYXRlLT5HZXREYXRhKCkpIAorICAgICAgICBj
cmVhdGUoaXNvbGF0ZSk7Cit9CisKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRpc3Bv
c2Uodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgdm9pZCogZGF0YSA9IGlzb2xhdGUtPkdl
dERhdGEoKTsKKyAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEq
PihkYXRhKTsKKyAgICBpc29sYXRlLT5TZXREYXRhKDApOworfQorCit2b2lkIFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkJpbmRpbmcpOworICAgIGluZm8uYWRkSGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7CisgICAg
aW5mby5hZGRIYXNoTWFwKG1fdGVtcGxhdGVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1l
bWJlcihtX3N0cmluZ0NhY2hlKTsKKyAgICBpbmZvLmFkZFZlY3RvcihtX2RvbURhdGFMaXN0KTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kb21EYXRhTGlzdC5zaXplKCk7IGkrKykK
KyAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9kb21EYXRhTGlzdFtpXSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MmEyYzc0ZmZj
ZDc5ODhiYjVjOWRjMjkyYjQ1Y2UxODJiMzhhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5oCkBAIC0wLDAgKzEs
MTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGFfaAor
I2RlZmluZSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YV9oCisKKyNpbmNsdWRlIDx2OC5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01EYXRhU3Rv
cmU7CitjbGFzcyBHQ0V2ZW50RGF0YTsKK2NsYXNzIEludGVnZXJDYWNoZTsKK2NsYXNzIE1lbW9y
eU9iamVjdEluZm87CitjbGFzcyBTdHJpbmdDYWNoZTsKK2NsYXNzIFY4SGlkZGVuUHJvcGVydHlO
YW1lOworY2xhc3MgV3JhcHBlclR5cGVJbmZvOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK2Ns
YXNzIEV4dGVybmFsU3RyaW5nVmlzaXRvcjsKKyNlbmRpZgorCit0eXBlZGVmIFdURjo6VmVjdG9y
PERPTURhdGFTdG9yZSo+IERPTURhdGFMaXN0OworCitjbGFzcyBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YSB7CitwdWJsaWM6CisgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjcmVh
dGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVJbml0aWFsaXplZCh2ODo6
SXNvbGF0ZSopOworICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogY3VycmVudCh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWlz
b2xhdGUpKQorICAgICAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7
CisgICAgICAgIEFTU0VSVChpc29sYXRlLT5HZXREYXRhKCkpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRhKCkpOyAK
KyAgICB9CisgICAgc3RhdGljIHZvaWQgZGlzcG9zZSh2ODo6SXNvbGF0ZSopOworCisgICAgdHlw
ZWRlZiBIYXNoTWFwPFdyYXBwZXJUeXBlSW5mbyosIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiA+IFRlbXBsYXRlTWFwOworCisgICAgVGVtcGxhdGVNYXAmIHJhd1RlbXBsYXRl
TWFwKCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7IH0KKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxh
dGVNYXAoKSB7IHJldHVybiBtX3RlbXBsYXRlczsgfQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpT
dHJpbmc+JiB0b1N0cmluZ05hbWUoKSB7IHJldHVybiBtX3RvU3RyaW5nTmFtZTsgfQorICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSgpIHsg
cmV0dXJuIG1fdG9TdHJpbmdUZW1wbGF0ZTsgfQorCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOwor
ICAgIH0KKworICAgIFN0cmluZ0NhY2hlKiBzdHJpbmdDYWNoZSgpIHsgcmV0dXJuIG1fc3RyaW5n
Q2FjaGUuZ2V0KCk7IH0KKyAgICBJbnRlZ2VyQ2FjaGUqIGludGVnZXJDYWNoZSgpIHsgcmV0dXJu
IG1faW50ZWdlckNhY2hlLmdldCgpOyB9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHZv
aWQgdmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKik7CisjZW5kaWYK
KyAgICBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCkgeyByZXR1cm4gbV9kb21EYXRhTGlzdDsgfQor
CisgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUqIGhpZGRlblByb3BlcnR5TmFtZSgpIHsgcmV0dXJu
IG1faGlkZGVuUHJvcGVydHlOYW1lLmdldCgpOyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNv
bnRleHQ+JiBhdXhpbGlhcnlDb250ZXh0KCkgeyByZXR1cm4gbV9hdXhpbGlhcnlDb250ZXh0OyB9
CisKKyAgICB2b2lkIHJlZ2lzdGVyRE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZSogZG9tRGF0YVN0
b3JlKSAKKyAgICB7CisgICAgICAgIG1fZG9tRGF0YUxpc3QuYXBwZW5kKGRvbURhdGFTdG9yZSk7
CisgICAgfQorCisgICAgdm9pZCB1bnJlZ2lzdGVyRE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZSog
ZG9tRGF0YVN0b3JlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZG9tRGF0YUxpc3QuZmluZChk
b21EYXRhU3RvcmUpKTsKKyAgICAgICAgbV9kb21EYXRhTGlzdC5yZW1vdmUobV9kb21EYXRhTGlz
dC5maW5kKGRvbURhdGFTdG9yZSkpOworICAgIH0KKworICAgIC8vIERPTURhdGFTdG9yZSBpcyBv
d25lZCBvdXRzaWRlIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhLgorICAgIERPTURhdGFTdG9yZSog
ZG9tRGF0YVN0b3JlKCkgeyByZXR1cm4gbV9kb21EYXRhU3RvcmU7IH0KKyAgICB2b2lkIHNldERP
TURhdGFTdG9yZShET01EYXRhU3RvcmUqIHN0b3JlKSB7IG1fZG9tRGF0YVN0b3JlID0gc3RvcmU7
IH0KKworICAgIGludCByZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdXJzaW9u
TGV2ZWw7IH0KKyAgICBpbnQgaW5jcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiArK21f
cmVjdXJzaW9uTGV2ZWw7IH0KKyAgICBpbnQgZGVjcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJl
dHVybiAtLW1fcmVjdXJzaW9uTGV2ZWw7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBHbG9iYWxI
YW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxlTWFwOyB9
CisKKyAgICBpbnQgaW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAgIGludCBpbmNyZW1lbnRJbnRl
cm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gKyttX2ludGVybmFsU2NyaXB0UmVj
dXJzaW9uTGV2ZWw7IH0KKyAgICBpbnQgZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbCgpIHsgcmV0dXJuIC0tbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisjZW5k
aWYKKworICAgIEdDRXZlbnREYXRhKiBnY0V2ZW50RGF0YSgpIHsgcmV0dXJuIG1fZ2NFdmVudERh
dGEuZ2V0KCk7IH0KKworICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCisgICAgLy8gR2l2ZXMgdGhlIHN5c3RlbSBhIGhpbnQgdGhhdCB3ZSBzaG91
bGQgcmVxdWVzdCBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAvLyB1cG9uIHRoZSBuZXh0IGNsb3Nl
IG9yIG5hdmlnYXRpb24gZXZlbnQsIGJlY2F1c2Ugc29tZSBleHBlbnNpdmUKKyAgICAvLyBvYmpl
Y3RzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgdGhhdCB3ZSB3YW50IHRvIHRha2UgZXZlcnkgb3Bwb3J0
dW5pdHkKKyAgICAvLyB0byBjb2xsZWN0LgorICAgIHZvaWQgc2V0U2hvdWxkQ29sbGVjdEdhcmJh
Z2VTb29uKCkgeyBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbiA9IHRydWU7IH0KKyAgICB2b2lk
IGNsZWFyU2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKCkgeyBtX3Nob3VsZENvbGxlY3RHYXJiYWdl
U29vbiA9IGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSBjb25z
dCB7IHJldHVybiBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbjsgfQorCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CisgICAgflY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKCk7CisKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRl
czsKKyAgICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRlczsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6
U3RyaW5nPiBtX3RvU3RyaW5nTmFtZTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gbV90b1N0cmluZ1RlbXBsYXRlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBtX2xhenlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZTsKKyAgICBP
d25QdHI8U3RyaW5nQ2FjaGU+IG1fc3RyaW5nQ2FjaGU7CisgICAgT3duUHRyPEludGVnZXJDYWNo
ZT4gbV9pbnRlZ2VyQ2FjaGU7CisKKyAgICBET01EYXRhTGlzdCBtX2RvbURhdGFMaXN0OworICAg
IERPTURhdGFTdG9yZSogbV9kb21EYXRhU3RvcmU7CisKKyAgICBPd25QdHI8VjhIaWRkZW5Qcm9w
ZXJ0eU5hbWU+IG1faGlkZGVuUHJvcGVydHlOYW1lOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpD
b250ZXh0PiBtX2F1eGlsaWFyeUNvbnRleHQ7CisKKyAgICBib29sIG1fY29uc3RydWN0b3JNb2Rl
OworICAgIGZyaWVuZCBjbGFzcyBDb25zdHJ1Y3Rvck1vZGU7CisKKyAgICBpbnQgbV9yZWN1cnNp
b25MZXZlbDsKKworI2lmbmRlZiBOREVCVUcKKyAgICBHbG9iYWxIYW5kbGVNYXAgbV9nbG9iYWxI
YW5kbGVNYXA7CisgICAgaW50IG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKKyNlbmRp
ZgorICAgIE93blB0cjxHQ0V2ZW50RGF0YT4gbV9nY0V2ZW50RGF0YTsKKyAgICBib29sIG1fc2hv
dWxkQ29sbGVjdEdhcmJhZ2VTb29uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGFfaAo=
</data>
<flag name="commit-queue"
          id="166907"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157127</attachid>
            <date>2012-08-07 23:18:21 -0700</date>
            <delta_ts>2012-08-08 03:21:02 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93333-20120808151755.patch</filename>
            <type>text/plain</type>
            <size>25057</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc2YTZmOWMwMzliMGMz
ZjU1OGE1ODhiYTcwZTBjYTc1OTgxOTkyZi4uZGU2ODEyM2IxNTM2YzAxMDVmNzI0OGU5MjcwOThl
YWQzYjJlM2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA4LTA2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEZhY3RvciBv
dXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEgZnJvbSBWOEJpbmRpbmcgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtb3ZlcyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSB0byBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YS57aCxjcHB9LgorCisgICAgICAgIFRvIGF2b2lkIGNpcmN1bGFyICNpbmNsdWRlIGRlcGVuZGVu
Y3ksIEkgdXNlZCBPd25QdHJzIGZvciBtX3N0cmluZ0NhY2hlLAorICAgICAgICBtX2ludGVnZXJD
YWNoZSwgbV9oaWRkZW5Qcm9wZXJ0eU5hbWUgYW5kIG1fZ2NFdmVudERhdGEuCisKKyAgICAgICAg
Tm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVzZVY4LmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRH
Q0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xhdGVHQ0V2ZW50RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEdDRXZlbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0R0NFdmVudDo6Z2NQcm9sb2d1ZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEdDRXZlbnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcu
aDoKKyAgICAgICAgKEdDRXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6flY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3VyZUluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dGVtcGxhdGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnRvU3RyaW5nTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dG9TdHJpbmdUZW1wbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6bGF6eUV2ZW50TGlzdGVu
ZXJUb1N0cmluZ1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpzdHJpbmdDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6aW50ZWdlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjphbGxTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmhpZGRlblByb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6YXV4aWxpYXJ5Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmVnaXN0ZXJET01EYXRhU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnVucmVnaXN0ZXJET01EYXRhU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRvbURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6c2V0RE9NRGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZWN1
cnNpb25MZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
aW5jcmVtZW50UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OmRlY3JlbWVudFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpnbG9iYWxIYW5kbGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmluY3JlbWVu
dEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5k
aW5nUGVySXNvbGF0ZURhdGE6OmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwp
OgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmdjRXZlbnREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpzZXRTaG91bGRD
b2xsZWN0R2FyYmFnZVNvb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmNsZWFyU2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpzaG91bGRDb2xsZWN0R2FyYmFnZVNvb24pOgorCiAy
MDEyLTA4LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0OTY5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQppbmRl
eCBkZjFkZGQxMDY4MTAyNmVkMTQxMWNhMjg5MDUyMWI1NDY0OWRjNGY4Li5mMWQ5M2I3MGU0ZmQw
Nzc3MTA2NTE2MTc5NWY5YmU0YjVhYTM3MGFjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9V
c2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQpAQCAtNDYsNiArNDYs
NyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9TdGF0aWNE
T01EYXRhU3RvcmUuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIu
Y3BwCiAgICAgYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorICAgIGJpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0
cmlidXRlc0FuZE1ldGhvZHMuY3BwLAogICAgIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAK
ICAgICBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5MWJhYWRl
NDc4ZTQ1NDY3ZjI2Zjc1ZWY2MWM0ZDBmYTBjMTQ4ZDVmLi41YjlmYzNiZTFkMmIwZGM3MDZlOGI4
YWM1YjE3NGExMWFlZmI0ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjUyLDYgKzIyNTIsOCBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1BlckNvbnRleHREYXRhLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmNwcCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCmluZGV4IDM3ZGQ4NWU1NTM0ZjY2
MjMzZTA3MzVlMjI4YTA5ZGM4OTJkYzg4NTEuLjY2M2VhNTc0ZTdiOWRjNjE2MTA0ZGNmMzQ0YjJl
NGU1ZmE0ZWE1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEdDRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZl
bnQuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IEdDRXZlbnREYXRhJiBpc29sYXRlR0NFdmVudERhdGEoKQorc3RhdGljIEdDRXZlbnREYXRhKiBp
c29sYXRlR0NFdmVudERhdGEoKQogewogICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBpc29s
YXRlRGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgQVNTRVJU
KGlzb2xhdGVEYXRhKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIEdDRXZlbnREYXRhJiBpc29s
YXRlR0NFdmVudERhdGEoKQogCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIo
U2NyaXB0R0NFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewotICAgIEdDRXZlbnREYXRh
OjpHQ0V2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBpc29sYXRlR0NFdmVudERhdGEoKS5saXN0
ZW5lcnMoKTsKKyAgICBHQ0V2ZW50RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0g
aXNvbGF0ZUdDRXZlbnREYXRhKCktPmxpc3RlbmVycygpOwogICAgIGlmIChsaXN0ZW5lcnMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIHY4OjpWODo6QWRkR0NQcm9sb2d1ZUNhbGxiYWNrKFNjcmlwdEdD
RXZlbnQ6OmdjUHJvbG9ndWVDYWxsYmFjayk7CiAgICAgICAgIHY4OjpWODo6QWRkR0NFcGlsb2d1
ZUNhbGxiYWNrKFNjcmlwdEdDRXZlbnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk7CkBAIC02MCw3ICs2
MCw3IEBAIHZvaWQgU2NyaXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50
TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIpCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewogICAgIEFT
U0VSVChldmVudExpc3RlbmVyKTsKLSAgICBHQ0V2ZW50RGF0YTo6R0NFdmVudExpc3RlbmVycyYg
bGlzdGVuZXJzID0gaXNvbGF0ZUdDRXZlbnREYXRhKCkubGlzdGVuZXJzKCk7CisgICAgR0NFdmVu
dERhdGE6OkdDRXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9IGlzb2xhdGVHQ0V2ZW50RGF0YSgp
LT5saXN0ZW5lcnMoKTsKICAgICBBU1NFUlQoIWxpc3RlbmVycy5pc0VtcHR5KCkpOwogICAgIHNp
emVfdCBpID0gbGlzdGVuZXJzLmZpbmQoZXZlbnRMaXN0ZW5lcik7CiAgICAgQVNTRVJUKGkgIT0g
bm90Rm91bmQpOwpAQCAtODksMjMgKzg5LDIzIEBAIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpnZXRV
c2VkSGVhcFNpemUoKQogCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxsYmFjayh2
ODo6R0NUeXBlIHR5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgR0NFdmVu
dERhdGEmIGdjRXZlbnREYXRhID0gaXNvbGF0ZUdDRXZlbnREYXRhKCk7Ci0gICAgZ2NFdmVudERh
dGEuc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBn
Y0V2ZW50RGF0YS51c2VkSGVhcFNpemUgPSBnZXRVc2VkSGVhcFNpemUoKTsKKyAgICBHQ0V2ZW50
RGF0YSogZ2NFdmVudERhdGEgPSBpc29sYXRlR0NFdmVudERhdGEoKTsKKyAgICBnY0V2ZW50RGF0
YS0+c3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBn
Y0V2ZW50RGF0YS0+dXNlZEhlYXBTaXplID0gZ2V0VXNlZEhlYXBTaXplKCk7CiB9CiAKIHZvaWQg
U2NyaXB0R0NFdmVudDo6Z2NFcGlsb2d1ZUNhbGxiYWNrKHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdD
Q2FsbGJhY2tGbGFncyBmbGFncykKIHsKLSAgICBHQ0V2ZW50RGF0YSYgZ2NFdmVudERhdGEgPSBp
c29sYXRlR0NFdmVudERhdGEoKTsKLSAgICBpZiAoIWdjRXZlbnREYXRhLnVzZWRIZWFwU2l6ZSkK
KyAgICBHQ0V2ZW50RGF0YSogZ2NFdmVudERhdGEgPSBpc29sYXRlR0NFdmVudERhdGEoKTsKKyAg
ICBpZiAoIWdjRXZlbnREYXRhLT51c2VkSGVhcFNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBk
b3VibGUgZW5kVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAg
c2l6ZV90IHVzZWRIZWFwU2l6ZSA9IGdldFVzZWRIZWFwU2l6ZSgpOwotICAgIHNpemVfdCBjb2xs
ZWN0ZWRCeXRlcyA9IHVzZWRIZWFwU2l6ZSA+IGdjRXZlbnREYXRhLnVzZWRIZWFwU2l6ZSA/IDAg
OiBnY0V2ZW50RGF0YS51c2VkSGVhcFNpemUgLSB1c2VkSGVhcFNpemU7Ci0gICAgR0NFdmVudERh
dGE6OkdDRXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9IGdjRXZlbnREYXRhLmxpc3RlbmVycygp
OworICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHVzZWRIZWFwU2l6ZSA+IGdjRXZlbnREYXRh
LT51c2VkSGVhcFNpemUgPyAwIDogZ2NFdmVudERhdGEtPnVzZWRIZWFwU2l6ZSAtIHVzZWRIZWFw
U2l6ZTsKKyAgICBHQ0V2ZW50RGF0YTo6R0NFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gZ2NF
dmVudERhdGEtPmxpc3RlbmVycygpOwogICAgIGZvciAoR0NFdmVudERhdGE6OkdDRXZlbnRMaXN0
ZW5lcnM6Oml0ZXJhdG9yIGkgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgaSAhPSBsaXN0ZW5lcnMuZW5k
KCk7ICsraSkKLSAgICAgICAgKCppKS0+ZGlkR0MoZ2NFdmVudERhdGEuc3RhcnRUaW1lLCBlbmRU
aW1lLCBjb2xsZWN0ZWRCeXRlcyk7Ci0gICAgZ2NFdmVudERhdGEuY2xlYXIoKTsKKyAgICAgICAg
KCppKS0+ZGlkR0MoZ2NFdmVudERhdGEtPnN0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0
ZXMpOworICAgIGdjRXZlbnREYXRhLT5jbGVhcigpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggZDU1
ODkxMDk0YzhjNDM4ODQ5NGFjMWQ1MjBiZmU1MjkzYmYyODFiNi4uZjRkYzI4Yjg4ZjQxZTcyZWUz
ODJlMmQ2NGUwZjQyMDQ2OTA4OThlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCkBAIC01Miw1NyArNTIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLQot
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29s
YXRlKiBpc29sYXRlKQotICAgIDogbV9kb21EYXRhU3RvcmUoMCkKLSAgICAsIG1fY29uc3RydWN0
b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3JlYXRlTmV3T2JqZWN0KQotICAgICwgbV9yZWN1cnNp
b25MZXZlbCgwKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNp
b25MZXZlbCgwKQotI2VuZGlmCi0gICAgLCBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbihmYWxz
ZSkKLXsKLX0KLQotVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6On5WOEJpbmRpbmdQZXJJc29sYXRl
RGF0YSgpCi17Ci19Ci0KLVY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6Y3JlYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIEFTU0VSVChpc29s
YXRlKTsKLSAgICBBU1NFUlQoIWlzb2xhdGUtPkdldERhdGEoKSk7Ci0gICAgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGEqIGRhdGEgPSBuZXcgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEoaXNvbGF0ZSk7
Ci0gICAgaXNvbGF0ZS0+U2V0RGF0YShkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotdm9p
ZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQodjg6Oklzb2xhdGUq
IGlzb2xhdGUpIAotewotICAgIEFTU0VSVChpc29sYXRlKTsKLSAgICBpZiAoIWlzb2xhdGUtPkdl
dERhdGEoKSkgCi0gICAgICAgIGNyZWF0ZShpc29sYXRlKTsKLX0KLQotdm9pZCBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6ZGlzcG9zZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICB2b2lk
KiBkYXRhID0gaXNvbGF0ZS0+R2V0RGF0YSgpOwotICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxWOEJp
bmRpbmdQZXJJc29sYXRlRGF0YSo+KGRhdGEpOwotICAgIGlzb2xhdGUtPlNldERhdGEoMCk7Ci19
Ci0KLXZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpC
aW5kaW5nKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9yYXdUZW1wbGF0ZXMpOwotICAgIGluZm8u
YWRkSGFzaE1hcChtX3RlbXBsYXRlcyk7Ci0gICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV9zdHJpbmdDYWNoZSk7Ci0gICAgaW5mby5hZGRWZWN0b3IobV9kb21EYXRhTGlzdCk7Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZG9tRGF0YUxpc3Quc2l6ZSgpOyBpKyspCi0gICAg
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9tRGF0YUxpc3RbaV0pOwotfQotCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0
RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggZmJjMzk2ZTA5Zjc2MzEzM2Y4Y2Vh
NWU5MGQxMjgxNDY4MzVhMTE3NS4uMjA3OGE2ZmI2ZjIxZTk3Yjc0ZjkwNjliNTVlNjBkMThkNGM0
M2M4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nUGVySXNv
bGF0ZURhdGEuaCIKICNpbmNsdWRlICJWOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2Rz
LmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIu
aCIKQEAgLTY4LDYgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAg
ICAgIEdDRXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycygpIHsgcmV0dXJuIG1fbGlzdGVuZXJzOyB9
CiAKKyAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgbWVtYmVycyBwcml2YXRlLgogICAgICAg
ICBkb3VibGUgc3RhcnRUaW1lOwogICAgICAgICBzaXplX3QgdXNlZEhlYXBTaXplOwogCkBAIC03
NSwxMjAgKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHQ0V2ZW50TGlzdGVu
ZXJzIG1fbGlzdGVuZXJzOwogICAgIH07CiAKLSAgICBjbGFzcyBDb25zdHJ1Y3Rvck1vZGU7Ci0K
LSNpZm5kZWYgTkRFQlVHCi0gICAgdHlwZWRlZiBIYXNoTWFwPHY4OjpWYWx1ZSosIEdsb2JhbEhh
bmRsZUluZm8qPiBHbG9iYWxIYW5kbGVNYXA7Ci0jZW5kaWYKLQotICAgIGNsYXNzIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSogY3JlYXRlKHY4OjpJc29sYXRlKik7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGVuc3VyZUluaXRpYWxpemVkKHY4OjpJc29sYXRlKik7Ci0gICAgICAgIHN0YXRpYyBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YSogY3VycmVudCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNvbGF0ZSkpCi0gICAgICAgICAgICAg
ICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7Ci0gICAgICAgICAgICBBU1NF
UlQoaXNvbGF0ZS0+R2V0RGF0YSgpKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+KGlzb2xhdGUtPkdldERhdGEoKSk7IAotICAgICAgICB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRpc3Bvc2Uodjg6Oklzb2xhdGUqKTsKLQotICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+ID4gVGVtcGxhdGVNYXA7Ci0KLSAgICAgICAgVGVtcGxhdGVNYXAmIHJhd1Rl
bXBsYXRlTWFwKCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7IH0KLSAgICAgICAgVGVtcGxhdGVN
YXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0ZXM7IH0KLSAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OlN0cmluZz4mIHRvU3RyaW5nTmFtZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdO
YW1lOyB9Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgdG9T
dHJpbmdUZW1wbGF0ZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdUZW1wbGF0ZTsgfQotCi0gICAgICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgbGF6eUV2ZW50TGlzdGVuZXJU
b1N0cmluZ1RlbXBsYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fbGF6eUV2
ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5n
Q2FjaGUqIHN0cmluZ0NhY2hlKCkgeyByZXR1cm4gJm1fc3RyaW5nQ2FjaGU7IH0KLSAgICAgICAg
SW50ZWdlckNhY2hlKiBpbnRlZ2VyQ2FjaGUoKSB7IHJldHVybiAmbV9pbnRlZ2VyQ2FjaGU7IH0K
LQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHZvaWQgdmlzaXRFeHRlcm5hbFN0cmlu
Z3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKik7Ci0jZW5kaWYKLSAgICAgICAgRE9NRGF0YUxpc3Qm
IGFsbFN0b3JlcygpIHsgcmV0dXJuIG1fZG9tRGF0YUxpc3Q7IH0KLQotICAgICAgICBWOEhpZGRl
blByb3BlcnR5TmFtZSogaGlkZGVuUHJvcGVydHlOYW1lKCkgeyByZXR1cm4gJm1faGlkZGVuUHJv
cGVydHlOYW1lOyB9Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiYgYXV4aWxp
YXJ5Q29udGV4dCgpIHsgcmV0dXJuIG1fYXV4aWxpYXJ5Q29udGV4dDsgfQotCi0gICAgICAgIHZv
aWQgcmVnaXN0ZXJET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlKiBkb21EYXRhU3RvcmUpIAotICAg
ICAgICB7Ci0gICAgICAgICAgICBtX2RvbURhdGFMaXN0LmFwcGVuZChkb21EYXRhU3RvcmUpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB1bnJlZ2lzdGVyRE9NRGF0YVN0b3JlKERPTURhdGFT
dG9yZSogZG9tRGF0YVN0b3JlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9kb21E
YXRhTGlzdC5maW5kKGRvbURhdGFTdG9yZSkpOwotICAgICAgICAgICAgbV9kb21EYXRhTGlzdC5y
ZW1vdmUobV9kb21EYXRhTGlzdC5maW5kKGRvbURhdGFTdG9yZSkpOwotICAgICAgICB9Ci0KLQot
ICAgICAgICBET01EYXRhU3RvcmUqIGRvbURhdGFTdG9yZSgpIHsgcmV0dXJuIG1fZG9tRGF0YVN0
b3JlOyB9Ci0gICAgICAgIC8vIERPTURhdGFTdG9yZSBpcyBvd25lZCBvdXRzaWRlIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhLgotICAgICAgICB2b2lkIHNldERPTURhdGFTdG9yZShET01EYXRhU3Rv
cmUqIHN0b3JlKSB7IG1fZG9tRGF0YVN0b3JlID0gc3RvcmU7IH0KLQotICAgICAgICBpbnQgcmVj
dXJzaW9uTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3JlY3Vyc2lvbkxldmVsOyB9Ci0gICAgICAg
IGludCBpbmNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuICsrbV9yZWN1cnNpb25MZXZl
bDsgfQotICAgICAgICBpbnQgZGVjcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiAtLW1f
cmVjdXJzaW9uTGV2ZWw7IH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgR2xvYmFsSGFuZGxl
TWFwJiBnbG9iYWxIYW5kbGVNYXAoKSB7IHJldHVybiBtX2dsb2JhbEhhbmRsZU1hcDsgfQotCi0g
ICAgICAgIGludCBpbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9Ci0gICAgICAgIGludCBpbmNyZW1lbnRJ
bnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gKyttX2ludGVybmFsU2NyaXB0
UmVjdXJzaW9uTGV2ZWw7IH0KLSAgICAgICAgaW50IGRlY3JlbWVudEludGVybmFsU2NyaXB0UmVj
dXJzaW9uTGV2ZWwoKSB7IHJldHVybiAtLW1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsg
fQotI2VuZGlmCi0KLSAgICAgICAgR0NFdmVudERhdGEmIGdjRXZlbnREYXRhKCkgeyByZXR1cm4g
bV9nY0V2ZW50RGF0YTsgfQotCi0gICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwotCi0gICAgICAgIC8vIEdpdmVzIHRoZSBzeXN0ZW0gYSBoaW50
IHRoYXQgd2Ugc2hvdWxkIHJlcXVlc3QgZ2FyYmFnZSBjb2xsZWN0aW9uCi0gICAgICAgIC8vIHVw
b24gdGhlIG5leHQgY2xvc2Ugb3IgbmF2aWdhdGlvbiBldmVudCwgYmVjYXVzZSBzb21lIGV4cGVu
c2l2ZQotICAgICAgICAvLyBvYmplY3RzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgdGhhdCB3ZSB3YW50
IHRvIHRha2UgZXZlcnkgb3Bwb3J0dW5pdHkKLSAgICAgICAgLy8gdG8gY29sbGVjdC4KLSAgICAg
ICAgdm9pZCBzZXRTaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSB7IG1fc2hvdWxkQ29sbGVjdEdh
cmJhZ2VTb29uID0gdHJ1ZTsgfQotICAgICAgICB2b2lkIGNsZWFyU2hvdWxkQ29sbGVjdEdhcmJh
Z2VTb29uKCkgeyBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbiA9IGZhbHNlOyB9Ci0gICAgICAg
IGJvb2wgc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRD
b2xsZWN0R2FyYmFnZVNvb247IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7Ci0gICAgICAgIH5WOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSgpOwotCi0gICAgICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzOwot
ICAgICAgICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRlczsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OlN0cmluZz4gbV90b1N0cmluZ05hbWU7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBtX3RvU3RyaW5nVGVtcGxhdGU7Ci0gICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX2xhenlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1w
bGF0ZTsKLSAgICAgICAgU3RyaW5nQ2FjaGUgbV9zdHJpbmdDYWNoZTsKLSAgICAgICAgSW50ZWdl
ckNhY2hlIG1faW50ZWdlckNhY2hlOwotCi0gICAgICAgIERPTURhdGFMaXN0IG1fZG9tRGF0YUxp
c3Q7Ci0gICAgICAgIERPTURhdGFTdG9yZSogbV9kb21EYXRhU3RvcmU7Ci0KLSAgICAgICAgVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUgbV9oaWRkZW5Qcm9wZXJ0eU5hbWU7Ci0gICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpDb250ZXh0PiBtX2F1eGlsaWFyeUNvbnRleHQ7Ci0KLSAgICAgICAgYm9vbCBt
X2NvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvbnN0cnVjdG9yTW9kZTsK
LQotICAgICAgICBpbnQgbV9yZWN1cnNpb25MZXZlbDsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAg
ICAgR2xvYmFsSGFuZGxlTWFwIG1fZ2xvYmFsSGFuZGxlTWFwOwotICAgICAgICBpbnQgbV9pbnRl
cm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOwotI2VuZGlmCi0gICAgICAgIEdDRXZlbnREYXRhIG1f
Z2NFdmVudERhdGE7Ci0KLSAgICAgICAgYm9vbCBtX3Nob3VsZENvbGxlY3RHYXJiYWdlU29vbjsK
LSAgICB9OwotCiAgICAgY2xhc3MgQ29uc3RydWN0b3JNb2RlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIGVudW0gTW9kZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTcwNzgxYzU4MjJlZmQxOTNk
YThiMmJmY2ZkZTBjMGM2ODRmYWIwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmNwcApAQCAtMCwwICsxLDg3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YS5oIgorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVE
YXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgIDogbV9zdHJpbmdDYWNoZShhZG9wdFB0cihu
ZXcgU3RyaW5nQ2FjaGUoKSkpCisgICAgLCBtX2ludGVnZXJDYWNoZShhZG9wdFB0cihuZXcgSW50
ZWdlckNhY2hlKCkpKQorICAgICwgbV9kb21EYXRhU3RvcmUoMCkKKyAgICAsIG1faGlkZGVuUHJv
cGVydHlOYW1lKGFkb3B0UHRyKG5ldyBWOEhpZGRlblByb3BlcnR5TmFtZSgpKSkKKyAgICAsIG1f
Y29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3JlYXRlTmV3T2JqZWN0KQorICAgICwg
bV9yZWN1cnNpb25MZXZlbCgwKQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1faW50ZXJuYWxTY3Jp
cHRSZWN1cnNpb25MZXZlbCgwKQorI2VuZGlmCisgICAgLCBtX2djRXZlbnREYXRhKGFkb3B0UHRy
KG5ldyBHQ0V2ZW50RGF0YSgpKSkKKyAgICAsIG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKGZh
bHNlKQoreworfQorCitWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6flY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKCkKK3sKK30KKworVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjpjcmVhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKGlz
b2xhdGUpOworICAgIEFTU0VSVCghaXNvbGF0ZS0+R2V0RGF0YSgpKTsKKyAgICBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IG5ldyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YShpc29sYXRl
KTsKKyAgICBpc29sYXRlLT5TZXREYXRhKGRhdGEpOworICAgIHJldHVybiBkYXRhOworfQorCit2
b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkgCit7CisgICAgQVNTRVJUKGlzb2xhdGUpOworICAgIGlmICghaXNvbGF0ZS0+
R2V0RGF0YSgpKSAKKyAgICAgICAgY3JlYXRlKGlzb2xhdGUpOworfQorCit2b2lkIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpkaXNwb3NlKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHZv
aWQqIGRhdGEgPSBpc29sYXRlLT5HZXREYXRhKCk7CisgICAgZGVsZXRlIHN0YXRpY19jYXN0PFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKj4oZGF0YSk7CisgICAgaXNvbGF0ZS0+U2V0RGF0YSgwKTsK
K30KKwordm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkJpbmRpbmcpOworICAgIGluZm8uYWRkSGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7CisgICAgaW5m
by5hZGRIYXNoTWFwKG1fdGVtcGxhdGVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJl
cihtX3N0cmluZ0NhY2hlKTsKKyAgICBpbmZvLmFkZFZlY3RvcihtX2RvbURhdGFMaXN0KTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kb21EYXRhTGlzdC5zaXplKCk7IGkrKykKKyAg
ICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9kb21EYXRhTGlzdFtpXSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZWQ5ODg2NWYxYzU2
MGVmYjNjYzFhYTliYWRkOTNhNDBlY2M5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5oCkBAIC0wLDAgKzEsMTYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGFfaAorI2Rl
ZmluZSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YV9oCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01EYXRhU3RvcmU7
CitjbGFzcyBHQ0V2ZW50RGF0YTsKK2NsYXNzIEludGVnZXJDYWNoZTsKK2NsYXNzIE1lbW9yeU9i
amVjdEluZm87CitjbGFzcyBTdHJpbmdDYWNoZTsKK2NsYXNzIFY4SGlkZGVuUHJvcGVydHlOYW1l
OworY2xhc3MgV3JhcHBlclR5cGVJbmZvOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK2NsYXNz
IEV4dGVybmFsU3RyaW5nVmlzaXRvcjsKKyNlbmRpZgorCit0eXBlZGVmIFdURjo6VmVjdG9yPERP
TURhdGFTdG9yZSo+IERPTURhdGFMaXN0OworCisjaWZuZGVmIE5ERUJVRworY2xhc3MgR2xvYmFs
SGFuZGxlSW5mbzsKK3R5cGVkZWYgSGFzaE1hcDx2ODo6VmFsdWUqLCBHbG9iYWxIYW5kbGVJbmZv
Kj4gR2xvYmFsSGFuZGxlTWFwOworI2VuZGlmCisKK2NsYXNzIFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGNyZWF0
ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZUluaXRpYWxpemVkKHY4OjpJ
c29sYXRlKik7CisgICAgc3RhdGljIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBjdXJyZW50KHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghaXNv
bGF0ZSkpCisgICAgICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsK
KyAgICAgICAgQVNTRVJUKGlzb2xhdGUtPkdldERhdGEoKSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSo+KGlzb2xhdGUtPkdldERhdGEoKSk7IAor
ICAgIH0KKyAgICBzdGF0aWMgdm9pZCBkaXNwb3NlKHY4OjpJc29sYXRlKik7CisKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+ID4gVGVtcGxhdGVNYXA7CisKKyAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVN
YXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsgfQorICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0
ZU1hcCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVzOyB9CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0
cmluZz4mIHRvU3RyaW5nTmFtZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdOYW1lOyB9CisgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyBy
ZXR1cm4gbV90b1N0cmluZ1RlbXBsYXRlOyB9CisKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4mIGxhenlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGU7Cisg
ICAgfQorCisgICAgU3RyaW5nQ2FjaGUqIHN0cmluZ0NhY2hlKCkgeyByZXR1cm4gbV9zdHJpbmdD
YWNoZS5nZXQoKTsgfQorICAgIEludGVnZXJDYWNoZSogaW50ZWdlckNhY2hlKCkgeyByZXR1cm4g
bV9pbnRlZ2VyQ2FjaGUuZ2V0KCk7IH0KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgdm9p
ZCB2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKKyNlbmRpZgor
ICAgIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKSB7IHJldHVybiBtX2RvbURhdGFMaXN0OyB9CisK
KyAgICBWOEhpZGRlblByb3BlcnR5TmFtZSogaGlkZGVuUHJvcGVydHlOYW1lKCkgeyByZXR1cm4g
bV9oaWRkZW5Qcm9wZXJ0eU5hbWUuZ2V0KCk7IH0KKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29u
dGV4dD4mIGF1eGlsaWFyeUNvbnRleHQoKSB7IHJldHVybiBtX2F1eGlsaWFyeUNvbnRleHQ7IH0K
KworICAgIHZvaWQgcmVnaXN0ZXJET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlKiBkb21EYXRhU3Rv
cmUpIAorICAgIHsKKyAgICAgICAgbV9kb21EYXRhTGlzdC5hcHBlbmQoZG9tRGF0YVN0b3JlKTsK
KyAgICB9CisKKyAgICB2b2lkIHVucmVnaXN0ZXJET01EYXRhU3RvcmUoRE9NRGF0YVN0b3JlKiBk
b21EYXRhU3RvcmUpCisgICAgeworICAgICAgICBBU1NFUlQobV9kb21EYXRhTGlzdC5maW5kKGRv
bURhdGFTdG9yZSkpOworICAgICAgICBtX2RvbURhdGFMaXN0LnJlbW92ZShtX2RvbURhdGFMaXN0
LmZpbmQoZG9tRGF0YVN0b3JlKSk7CisgICAgfQorCisgICAgLy8gRE9NRGF0YVN0b3JlIGlzIG93
bmVkIG91dHNpZGUgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuCisgICAgRE9NRGF0YVN0b3JlKiBk
b21EYXRhU3RvcmUoKSB7IHJldHVybiBtX2RvbURhdGFTdG9yZTsgfQorICAgIHZvaWQgc2V0RE9N
RGF0YVN0b3JlKERPTURhdGFTdG9yZSogc3RvcmUpIHsgbV9kb21EYXRhU3RvcmUgPSBzdG9yZTsg
fQorCisgICAgaW50IHJlY3Vyc2lvbkxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9yZWN1cnNpb25M
ZXZlbDsgfQorICAgIGludCBpbmNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuICsrbV9y
ZWN1cnNpb25MZXZlbDsgfQorICAgIGludCBkZWNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0
dXJuIC0tbV9yZWN1cnNpb25MZXZlbDsgfQorCisjaWZuZGVmIE5ERUJVRworICAgIEdsb2JhbEhh
bmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwKCkgeyByZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0K
KworICAgIGludCBpbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisgICAgaW50IGluY3JlbWVudEludGVy
bmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1
cnNpb25MZXZlbDsgfQorICAgIGludCBkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKCkgeyByZXR1cm4gLS1tX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyNlbmRp
ZgorCisgICAgR0NFdmVudERhdGEqIGdjRXZlbnREYXRhKCkgeyByZXR1cm4gbV9nY0V2ZW50RGF0
YS5nZXQoKTsgfQorCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CisKKyAgICAvLyBHaXZlcyB0aGUgc3lzdGVtIGEgaGludCB0aGF0IHdlIHNob3Vs
ZCByZXF1ZXN0IGdhcmJhZ2UgY29sbGVjdGlvbgorICAgIC8vIHVwb24gdGhlIG5leHQgY2xvc2Ug
b3IgbmF2aWdhdGlvbiBldmVudCwgYmVjYXVzZSBzb21lIGV4cGVuc2l2ZQorICAgIC8vIG9iamVj
dHMgaGF2ZSBiZWVuIGFsbG9jYXRlZCB0aGF0IHdlIHdhbnQgdG8gdGFrZSBldmVyeSBvcHBvcnR1
bml0eQorICAgIC8vIHRvIGNvbGxlY3QuCisgICAgdm9pZCBzZXRTaG91bGRDb2xsZWN0R2FyYmFn
ZVNvb24oKSB7IG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uID0gdHJ1ZTsgfQorICAgIHZvaWQg
Y2xlYXJTaG91bGRDb2xsZWN0R2FyYmFnZVNvb24oKSB7IG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VT
b29uID0gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZENvbGxlY3RHYXJiYWdlU29vbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uOyB9CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqKTsKKyAgICB+VjhC
aW5kaW5nUGVySXNvbGF0ZURhdGEoKTsKKworICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVz
OworICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpT
dHJpbmc+IG1fdG9TdHJpbmdOYW1lOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBtX3RvU3RyaW5nVGVtcGxhdGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOworICAgIE93
blB0cjxTdHJpbmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKKyAgICBPd25QdHI8SW50ZWdlckNhY2hl
PiBtX2ludGVnZXJDYWNoZTsKKworICAgIERPTURhdGFMaXN0IG1fZG9tRGF0YUxpc3Q7CisgICAg
RE9NRGF0YVN0b3JlKiBtX2RvbURhdGFTdG9yZTsKKworICAgIE93blB0cjxWOEhpZGRlblByb3Bl
cnR5TmFtZT4gbV9oaWRkZW5Qcm9wZXJ0eU5hbWU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNv
bnRleHQ+IG1fYXV4aWxpYXJ5Q29udGV4dDsKKworICAgIGJvb2wgbV9jb25zdHJ1Y3Rvck1vZGU7
CisgICAgZnJpZW5kIGNsYXNzIENvbnN0cnVjdG9yTW9kZTsKKworICAgIGludCBtX3JlY3Vyc2lv
bkxldmVsOworCisjaWZuZGVmIE5ERUJVRworICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhh
bmRsZU1hcDsKKyAgICBpbnQgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOworI2VuZGlm
CisgICAgT3duUHRyPEdDRXZlbnREYXRhPiBtX2djRXZlbnREYXRhOworICAgIGJvb2wgbV9zaG91
bGRDb2xsZWN0R2FyYmFnZVNvb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>