<?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>101882</bug_id>
          
          <creation_ts>2012-11-11 18:55:16 -0800</creation_ts>
          <short_desc>[V8][JSC] HTMLElement::itemValue() needs not to be custom</short_desc>
          <delta_ts>2013-08-08 05:21:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101948</dependson>
    
    <dependson>101950</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>cdumez</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763970</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-11 18:55:16 -0800</bug_when>
    <thetext>We can remove a [Custom] IDL attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763972</commentid>
    <comment_count>1</comment_count>
      <attachid>173537</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-11 18:57:43 -0800</bug_when>
    <thetext>Created attachment 173537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763996</commentid>
    <comment_count>2</comment_count>
      <attachid>173537</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-11 20:16:43 -0800</bug_when>
    <thetext>Comment on attachment 173537
Patch

Looks like there&apos;s a GTK build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763998</commentid>
    <comment_count>3</comment_count>
      <attachid>173537</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-11 20:29:16 -0800</bug_when>
    <thetext>Comment on attachment 173537
Patch

Attachment 173537 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14809247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764210</commentid>
    <comment_count>4</comment_count>
      <attachid>173604</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-12 03:29:00 -0800</bug_when>
    <thetext>Created attachment 173604
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764373</commentid>
    <comment_count>5</comment_count>
      <attachid>173604</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 06:58:03 -0800</bug_when>
    <thetext>Comment on attachment 173604
patch for landing

Clearing flags on attachment: 173604

Committed r134225: &lt;http://trac.webkit.org/changeset/134225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764374</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 06:58:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764474</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-12 09:08:45 -0800</bug_when>
    <thetext>This appears to have broken the EFL and GTK builds:
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release/builds/7523/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764517</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-12 09:51:03 -0800</bug_when>
    <thetext>&gt; This appears to have broken the EFL and GTK builds:

Would you be willing to roll out the change so that haraken can look when he wakes up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764519</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-12 09:53:01 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; This appears to have broken the EFL and GTK builds:
&gt; 
&gt; Would you be willing to roll out the change so that haraken can look when he wakes up?

I don&apos;t have committer rights yet but yes, it would be nice to roll it out for now as the fix does not seem trivial (at least to me).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764523</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 09:57:09 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101948</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764527</commentid>
    <comment_count>11</comment_count>
      <attachid>173666</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-12 09:59:14 -0800</bug_when>
    <thetext>Created attachment 173666
JSHTMLElement.cpp

I&apos;m attaching JSHTMLElement.cpp as generated for JSC in case in helps debugging the issue.

Build error is:
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp: In function ‘JSC::JSValue WebCore::jsHTMLElementItemValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName)’:
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp:449:41: error: ‘class WTF::PassRefPtr&lt;WebCore::MicroDataItemValue&gt;’ has no member named ‘hasNoValue’
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp:449:85: error: ‘class WTF::PassRefPtr&lt;WebCore::MicroDataItemValue&gt;’ has no member named ‘jsValue’
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp: In function ‘void WebCore::setJSHTMLElementItemValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue)’:
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp:651:53: error: no matching function for call to ‘WebCore::HTMLElement::setItemValue(JSC::JSGlobalData&amp;, JSC::JSValue&amp;, WebCore::ExceptionCode&amp;)’
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp:651:53: note: candidate is:
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/html/HTMLElement.h:99:10: note: void WebCore::HTMLElement::setItemValue(const WTF::String&amp;, WebCore::ExceptionCode&amp;)
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/html/HTMLElement.h:99:10: note:   candidate expects 2 arguments, 3 provided
In file included from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WTF/wtf/RefPtr.h:28:0,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/RegisteredEventListener.h:28,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/EventListenerMap.h:36,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/EventTarget.h:35,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/Node.h:29,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/ContainerNode.h:28,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/Document.h:33,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/Element.h:29,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/dom/StyledElement.h:28,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/html/HTMLElement.h:26,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.h:24,
                 from /mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp:22:
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WTF/wtf/PassRefPtr.h: In function ‘void WTF::derefIfNotNull(T*) [with T = WebCore::MicroDataItemValue]’:
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WTF/wtf/PassRefPtr.h:68:39:   instantiated from ‘WTF::PassRefPtr&lt;T&gt;::~PassRefPtr() [with T = WebCore::MicroDataItemValue]’
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/WebKitBuild/Release/DerivedSources/WebCore/JSHTMLElement.cpp:449:39:   instantiated from here
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WTF/wtf/PassRefPtr.h:53:13: error: invalid use of incomplete type ‘struct WebCore::MicroDataItemValue’
/mnt/buildbot/efl-linux-slave-1/efl-linux-64-release/build/Source/WebCore/html/HTMLElement.h:36:7: error: forward declaration of ‘struct WebCore::MicroDataItemValue’
make[2]: *** [Source/WebCore/CMakeFiles/webcore_efl.dir/__/__/DerivedSources/WebCore/JSHTMLElement.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764568</commentid>
    <comment_count>12</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-11-12 10:55:26 -0800</bug_when>
    <thetext>I&apos;ve attached an attachment to bug #101950 that indirectly special-cases the itemValue attribute in the HTMLElement interface, fixing the compilation issues on GTK and EFL ports when this patch relands.

Also marking that bug as blocking this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915390</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-08-08 05:21:09 -0700</bug_when>
    <thetext>Support for the Microdata specification was removed from the source, so this can be resolved as WONTFIX. Someone can return to it if Microdata support ever finds its way back.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173537</attachid>
            <date>2012-11-11 18:57:43 -0800</date>
            <delta_ts>2012-11-12 03:28:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101882-20121112115546.patch</filename>
            <type>text/plain</type>
            <size>3666</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZDBmMGRiOWNmYTE5
N2M1NzU4MWRlZjQ0ZDI5ODRlMmRjOWFkOC4uMjMwOTc3Y2M1ZmRhNmUwZmYzMDFmYWFhYWEwZTlm
NTcwMThmMmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTExICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdW0pTQ10gSFRN
TEVsZW1lbnQ6Oml0ZW1WYWx1ZSgpIG5lZWRzIG5vdCB0byBiZSBjdXN0b20KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiByZW1vdmUgYSBbQ3Vz
dG9tXSBJREwgYXR0cmlidXRlLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5pZGw6CisKIDIwMTItMTEtMTAgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2F2ZSBvbmUgY2FsbCB0byBj
b250YWluZXJGb3JSZXBhaW50KCkgd2hlbiB1cGRhdGluZyBsYXllciBwb3NpdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggYzI1YjgxNzFmYzNkMzk3NjQzMWFlY2RiZmZlYzM0Zjg0MWM5ODhiNS4uYTBjZDk2ZGJmOTU1
MGExMGNkYzA5MTFjZWM3NjU5YzI0ODFjZGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUzLDIwICs1Myw0IEBAIEpT
U2NvcGUqIEpTSFRNTEVsZW1lbnQ6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlKSBjCiAgICAgcmV0dXJuIEpTV2l0aFNjb3BlOjpjcmVhdGUoZXhl
YywgYXNPYmplY3QodG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgZWxlbWVudCkpLCBzY29wZSk7
CiB9CiAKLSNpZiBFTkFCTEUoTUlDUk9EQVRBKQotSlNWYWx1ZSBKU0hUTUxFbGVtZW50OjppdGVt
VmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gaW1wbCgpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihlbGVtZW50LT5pdGVtVmFsdWUoKSkpOwotfQotCi12b2lkIEpTSFRNTEVsZW1lbnQ6OnNl
dEl0ZW1WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgSFRNTEVs
ZW1lbnQqIGltcCA9IGltcGwoKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXAt
PnNldEl0ZW1WYWx1ZSh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSksIGVj
KTsKLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA2M2MwZjY1OGYwYjQ0YTlmZDhi
NGY0ZDExYzM3ZjU2NDQ2MWE1OGI0Li45ZmQxMjkxYzM5ZTZhYTk4MTZlMDdmNDMwOGQxYjNhZWMz
OWQ3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC00NywyMSArNDcsNCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbgogICAgIHJldHVybiBjcmVhdGVWOEhUTUxXcmFwcGVyKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLSNpZiBFTkFCTEUoTUlDUk9EQVRBKQotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEVsZW1lbnQ6Oml0ZW1WYWx1ZUFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQot
ewotICAgIEhUTUxFbGVtZW50KiBpbXBsID0gVjhIVE1MRWxlbWVudDo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wbC0+aXRlbVZhbHVlKCkuZ2V0KCksIGluZm8u
SG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKLX0KLQotdm9pZCBWOEhUTUxFbGVtZW50Ojpp
dGVtVmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0g
ICAgSFRNTEVsZW1lbnQqIGltcGwgPSBWOEhUTUxFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsLT5zZXRJdGVtVmFsdWUo
dG9XZWJDb3JlU3RyaW5nKHZhbHVlKSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBkMzIwNmYy
ZDFiNjgwYmU4YWM1MDVlYjhmYTBlYjVhMTcxYjZiZDIzLi5hMjQ3NWNiY2RkY2Q1NzhiZTdlYWZj
MTNlODgwOGE3OGZhZmRhMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAt
ODAsOCArODAsOCBAQAogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfQ1BQKSB8fCAhTEFOR1VBR0Vf
Q1BQCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpF
Q1RJVkVfQwotICAgICAgICAgICAgIFtDb25kaXRpb25hbD1NSUNST0RBVEEsIEN1c3RvbV0gYXR0
cmlidXRlIERPTU9iamVjdCBpdGVtVmFsdWUKLSAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIFtDb25kaXRpb25hbD1NSUNST0RBVEFdIGF0dHJpYnV0ZSBE
T01PYmplY3QgaXRlbVZhbHVlCisgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICNlbmRpZgogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173604</attachid>
            <date>2012-11-12 03:29:00 -0800</date>
            <delta_ts>2012-11-12 06:58:03 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-101882-20121112202702.patch</filename>
            <type>text/plain</type>
            <size>3795</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZDBmMGRiOWNmYTE5
N2M1NzU4MWRlZjQ0ZDI5ODRlMmRjOWFkOC4uOGMzY2YzNmE5MGM5YTIyMDAzZWUxZTM3OTA3ZDg3
ZDY5Y2FmODdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTExICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdW0pTQ10gSFRN
TEVsZW1lbnQ6Oml0ZW1WYWx1ZSgpIG5lZWRzIG5vdCB0byBiZSBjdXN0b20KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgV2UgY2FuIHJlbW92ZSBhIFtDdXN0b21d
IElETCBhdHRyaWJ1dGUuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmlkbDoKKwogMjAxMi0xMS0xMCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTYXZlIG9uZSBjYWxsIHRvIGNvbnRh
aW5lckZvclJlcGFpbnQoKSB3aGVuIHVwZGF0aW5nIGxheWVyIHBvc2l0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBj
MjViODE3MWZjM2QzOTc2NDMxYWVjZGJmZmVjMzRmODQxYzk4OGI1Li5hMGNkOTZkYmY5NTUwYTEw
Y2RjMDkxMWNlYzc2NTljMjQ4MWNkZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTMsMjAgKzUzLDQgQEAgSlNTY29w
ZSogSlNIVE1MRWxlbWVudDo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUpIGMKICAgICByZXR1cm4gSlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBh
c09iamVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBlbGVtZW50KSksIHNjb3BlKTsKIH0K
IAotI2lmIEVOQUJMRShNSUNST0RBVEEpCi1KU1ZhbHVlIEpTSFRNTEVsZW1lbnQ6Oml0ZW1WYWx1
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBp
bXBsKCk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGVsZW1lbnQtPml0ZW1WYWx1ZSgpKSk7Ci19Ci0KLXZvaWQgSlNIVE1MRWxlbWVudDo6c2V0SXRl
bVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBIVE1MRWxlbWVu
dCogaW1wID0gaW1wbCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcC0+c2V0
SXRlbVZhbHVlKHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSwgZWMpOwot
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDYzYzBmNjU4ZjBiNDRhOWZkOGI0ZjRk
MTFjMzdmNTY0NDYxYTU4YjQuLjlmZDEyOTFjMzllNmFhOTgxNmUwN2Y0MzA4ZDFiM2FlYzM5ZDcz
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxF
bGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ3LDIxICs0Nyw0IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29uCiAgICAgcmV0dXJuIGNyZWF0ZVY4SFRNTFdyYXBwZXIoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIAotI2lmIEVOQUJMRShNSUNST0RBVEEpCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhIVE1MRWxlbWVudDo6aXRlbVZhbHVlQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0g
ICAgSFRNTEVsZW1lbnQqIGltcGwgPSBWOEhUTUxFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKLSAgICByZXR1cm4gdG9WOChpbXBsLT5pdGVtVmFsdWUoKS5nZXQoKSwgaW5mby5Ib2xk
ZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwotfQotCi12b2lkIFY4SFRNTEVsZW1lbnQ6Oml0ZW1W
YWx1ZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKLXsKLSAgICBI
VE1MRWxlbWVudCogaW1wbCA9IFY4SFRNTEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwtPnNldEl0ZW1WYWx1ZSh0b1dl
YkNvcmVTdHJpbmcodmFsdWUpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBzZXRET01FeGNl
cHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IGQzMjA2ZjJkMWI2
ODBiZThhYzUwNWViOGZhMGViNWExNzFiNmJkMjMuLmEwZjljZTMyMzc4NWU0NTgxZjIzZDRlMTk3
NzAyYzU3MmJmZWVjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC03OCwx
MSArNzgsOSBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKExBTkdVQUdFX0NQUCkg
fHwgIUxBTkdVQUdFX0NQUAotI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAh
TEFOR1VBR0VfT0JKRUNUSVZFX0MKLSAgICAgICAgICAgICBbQ29uZGl0aW9uYWw9TUlDUk9EQVRB
LCBDdXN0b21dIGF0dHJpYnV0ZSBET01PYmplY3QgaXRlbVZhbHVlCi0gICAgICAgICAgICAgICAg
IHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSNlbmRpZgorI2lmIGRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgfHwgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgIFtDb25kaXRpb25hbD1N
SUNST0RBVEFdIGF0dHJpYnV0ZSBET01PYmplY3QgaXRlbVZhbHVlCisgICAgICAgIHNldHRlciBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>173666</attachid>
            <date>2012-11-12 09:59:14 -0800</date>
            <delta_ts>2012-11-12 09:59:14 -0800</delta_ts>
            <desc>JSHTMLElement.cpp</desc>
            <filename>JSHTMLElement.cpp</filename>
            <type>text/x-c++src</type>
            <size>31352</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgoqLwoKI2luY2x1ZGUgImNvbmZpZy5oIgojaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgoKI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCiNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgojaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKI2luY2x1ZGUgIkpTRWxlbWVudC5oIgoj
aW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgojaW5jbHVkZSAiS1VSTC5oIgojaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgojaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgojaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgoKI2lmIEVOQUJMRShNSUNST0RBVEEpCiNpbmNsdWRlICJET01TZXR0YWJs
ZVRva2VuTGlzdC5oIgojaW5jbHVkZSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgiCiNpbmNs
dWRlICJKU0RPTVNldHRhYmxlVG9rZW5MaXN0LmgiCiNpbmNsdWRlICJKU0hUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbi5oIgojZW5kaWYKCnVzaW5nIG5hbWVzcGFjZSBKU0M7CgpuYW1lc3BhY2UgV2Vi
Q29yZSB7CgovKiBIYXNoIHRhYmxlICovCgpzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNI
VE1MRWxlbWVudFRhYmxlVmFsdWVzW10gPQp7CiAgICB7ICJpZCIsIERvbnREZWxldGUsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNIVE1MRWxlbWVu
dElkKSwgKGludHB0cl90KXNldEpTSFRNTEVsZW1lbnRJZCwgTm9JbnRyaW5zaWMgfSwKICAgIHsg
InRpdGxlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0hUTUxFbGVtZW50VGl0bGUpLCAoaW50cHRyX3Qpc2V0SlNIVE1MRWxl
bWVudFRpdGxlLCBOb0ludHJpbnNpYyB9LAogICAgeyAibGFuZyIsIERvbnREZWxldGUsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNIVE1MRWxlbWVu
dExhbmcpLCAoaW50cHRyX3Qpc2V0SlNIVE1MRWxlbWVudExhbmcsIE5vSW50cmluc2ljIH0sCiAg
ICB7ICJ0cmFuc2xhdGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRUcmFuc2xhdGUpLCAoaW50cHRyX3Qp
c2V0SlNIVE1MRWxlbWVudFRyYW5zbGF0ZSwgTm9JbnRyaW5zaWMgfSwKICAgIHsgImRpciIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNIVE1MRWxlbWVudERpciksIChpbnRwdHJfdClzZXRKU0hUTUxFbGVtZW50RGlyLCBOb0lu
dHJpbnNpYyB9LAogICAgeyAidGFiSW5kZXgiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRUYWJJbmRleCks
IChpbnRwdHJfdClzZXRKU0hUTUxFbGVtZW50VGFiSW5kZXgsIE5vSW50cmluc2ljIH0sCiAgICB7
ICJkcmFnZ2FibGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnREcmFnZ2FibGUpLCAoaW50cHRyX3Qpc2V0
SlNIVE1MRWxlbWVudERyYWdnYWJsZSwgTm9JbnRyaW5zaWMgfSwKICAgIHsgIndlYmtpdGRyb3B6
b25lIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0hUTUxFbGVtZW50V2Via2l0ZHJvcHpvbmUpLCAoaW50cHRyX3Qpc2V0SlNI
VE1MRWxlbWVudFdlYmtpdGRyb3B6b25lLCBOb0ludHJpbnNpYyB9LAogICAgeyAiaGlkZGVuIiwg
RG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0hUTUxFbGVtZW50SGlkZGVuKSwgKGludHB0cl90KXNldEpTSFRNTEVsZW1lbnRIaWRk
ZW4sIE5vSW50cmluc2ljIH0sCiAgICB7ICJhY2Nlc3NLZXkiLCBEb250RGVsZXRlLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRB
Y2Nlc3NLZXkpLCAoaW50cHRyX3Qpc2V0SlNIVE1MRWxlbWVudEFjY2Vzc0tleSwgTm9JbnRyaW5z
aWMgfSwKICAgIHsgImlubmVySFRNTCIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNIVE1MRWxlbWVudElubmVySFRNTCksIChp
bnRwdHJfdClzZXRKU0hUTUxFbGVtZW50SW5uZXJIVE1MLCBOb0ludHJpbnNpYyB9LAogICAgeyAi
aW5uZXJUZXh0IiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0hUTUxFbGVtZW50SW5uZXJUZXh0KSwgKGludHB0cl90KXNldEpT
SFRNTEVsZW1lbnRJbm5lclRleHQsIE5vSW50cmluc2ljIH0sCiAgICB7ICJvdXRlckhUTUwiLCBE
b250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzSFRNTEVsZW1lbnRPdXRlckhUTUwpLCAoaW50cHRyX3Qpc2V0SlNIVE1MRWxlbWVudE91
dGVySFRNTCwgTm9JbnRyaW5zaWMgfSwKICAgIHsgIm91dGVyVGV4dCIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNIVE1MRWxl
bWVudE91dGVyVGV4dCksIChpbnRwdHJfdClzZXRKU0hUTUxFbGVtZW50T3V0ZXJUZXh0LCBOb0lu
dHJpbnNpYyB9LAogICAgeyAiY2hpbGRyZW4iLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNIVE1MRWxlbWVu
dENoaWxkcmVuKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICB7ICJjb250ZW50RWRp
dGFibGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRDb250ZW50RWRpdGFibGUpLCAoaW50cHRyX3Qpc2V0
SlNIVE1MRWxlbWVudENvbnRlbnRFZGl0YWJsZSwgTm9JbnRyaW5zaWMgfSwKICAgIHsgImlzQ29u
dGVudEVkaXRhYmxlIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRJc0NvbnRlbnRFZGl0
YWJsZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgeyAic3BlbGxjaGVjayIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNIVE1MRWxlbWVudFNwZWxsY2hlY2spLCAoaW50cHRyX3Qpc2V0SlNIVE1MRWxlbWVudFNw
ZWxsY2hlY2ssIE5vSW50cmluc2ljIH0sCiNpZiBFTkFCTEUoTUlDUk9EQVRBKQogICAgeyAiaXRl
bVNjb3BlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0hUTUxFbGVtZW50SXRlbVNjb3BlKSwgKGludHB0cl90KXNldEpTSFRN
TEVsZW1lbnRJdGVtU2NvcGUsIE5vSW50cmluc2ljIH0sCiNlbmRpZgojaWYgRU5BQkxFKE1JQ1JP
REFUQSkKICAgIHsgIml0ZW1UeXBlIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRJdGVt
VHlwZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAojZW5kaWYKI2lmIEVOQUJMRShNSUNS
T0RBVEEpCiAgICB7ICJpdGVtSWQiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRJdGVtSWQpLCAoaW50cHRy
X3Qpc2V0SlNIVE1MRWxlbWVudEl0ZW1JZCwgTm9JbnRyaW5zaWMgfSwKI2VuZGlmCiNpZiBFTkFC
TEUoTUlDUk9EQVRBKQogICAgeyAiaXRlbVJlZiIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0hUTUxFbGVt
ZW50SXRlbVJlZiksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAojZW5kaWYKI2lmIEVOQUJM
RShNSUNST0RBVEEpCiAgICB7ICJpdGVtUHJvcCIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0hUTUxFbGVt
ZW50SXRlbVByb3ApLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKI2VuZGlmCiNpZiBFTkFC
TEUoTUlDUk9EQVRBKQogICAgeyAicHJvcGVydGllcyIsIERvbnREZWxldGUgfCBSZWFkT25seSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0hUTUxF
bGVtZW50UHJvcGVydGllcyksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAojZW5kaWYKI2lm
IEVOQUJMRShNSUNST0RBVEEpCiAgICB7ICJpdGVtVmFsdWUiLCBEb250RGVsZXRlLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzSFRNTEVsZW1lbnRJ
dGVtVmFsdWUpLCAoaW50cHRyX3Qpc2V0SlNIVE1MRWxlbWVudEl0ZW1WYWx1ZSwgTm9JbnRyaW5z
aWMgfSwKI2VuZGlmCiAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwgUmVhZE9ubHksIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNIVE1MRWxl
bWVudENvbnN0cnVjdG9yKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICB7IDAsIDAs
IDAsIDAsIE5vSW50cmluc2ljIH0KfTsKCnN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNIVE1MRWxl
bWVudFRhYmxlID0geyA3MCwgNjMsIEpTSFRNTEVsZW1lbnRUYWJsZVZhbHVlcywgMCB9OwovKiBI
YXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwoKc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTSFRNTEVsZW1lbnRDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQp7CiAgICB7IDAsIDAsIDAs
IDAsIE5vSW50cmluc2ljIH0KfTsKCnN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNIVE1MRWxlbWVu
dENvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTSFRNTEVsZW1lbnRDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwIH07CmNvbnN0IENsYXNzSW5mbyBKU0hUTUxFbGVtZW50Q29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkhUTUxFbGVtZW50Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNIVE1M
RWxlbWVudENvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNIVE1MRWxl
bWVudENvbnN0cnVjdG9yKSB9OwoKSlNIVE1MRWxlbWVudENvbnN0cnVjdG9yOjpKU0hUTUxFbGVt
ZW50Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KQp7Cn0KCnZvaWQgSlNIVE1MRWxlbWVudENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCnsKICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwogICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MRWxlbWVudFByb3RvdHlwZTo6c2VsZihl
eGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwp9Cgpib29sIEpTSFRN
TEVsZW1lbnRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCnsKICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNIVE1MRWxlbWVudENvbnN0cnVj
dG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU0hUTUxFbGVtZW50Q29uc3RydWN0b3JUYWJsZSwg
anNDYXN0PEpTSFRNTEVsZW1lbnRDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwp9Cgpib29sIEpTSFRNTEVsZW1lbnRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQp7CiAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTSFRNTEVsZW1lbnRDb25zdHJ1Y3RvciwgSlNET01X
cmFwcGVyPihleGVjLCAmSlNIVE1MRWxlbWVudENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU0hU
TUxFbGVtZW50Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
Owp9CgovKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KCnN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU0hUTUxFbGVtZW50UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CnsKICAgIHsgImlu
c2VydEFkamFjZW50RWxlbWVudCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzSFRNTEVsZW1lbnRQcm90b3R5cGVGdW5j
dGlvbkluc2VydEFkamFjZW50RWxlbWVudCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9LAog
ICAgeyAiaW5zZXJ0QWRqYWNlbnRIVE1MIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNIVE1MRWxlbWVudFByb3RvdHlw
ZUZ1bmN0aW9uSW5zZXJ0QWRqYWNlbnRIVE1MKSwgKGludHB0cl90KTIsIE5vSW50cmluc2ljIH0s
CiAgICB7ICJpbnNlcnRBZGphY2VudFRleHQiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0hUTUxFbGVtZW50UHJvdG90
eXBlRnVuY3Rpb25JbnNlcnRBZGphY2VudFRleHQpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMg
fSwKICAgIHsgImNsaWNrIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNIVE1MRWxlbWVudFByb3RvdHlwZUZ1bmN0aW9u
Q2xpY2spLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgIHsgMCwgMCwgMCwgMCwgTm9J
bnRyaW5zaWMgfQp9OwoKc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0hUTUxFbGVtZW50UHJvdG90
eXBlVGFibGUgPSB7IDgsIDcsIEpTSFRNTEVsZW1lbnRQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9
Owpjb25zdCBDbGFzc0luZm8gSlNIVE1MRWxlbWVudFByb3RvdHlwZTo6c19pbmZvID0geyAiSFRN
TEVsZW1lbnRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNIVE1MRWxlbWVudFByb3RvdHlw
ZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSFRNTEVsZW1lbnRQcm90b3R5cGUpIH07
CgpKU09iamVjdCogSlNIVE1MRWxlbWVudFByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCnsKICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNIVE1MRWxlbWVudD4oZXhlYywgZ2xvYmFsT2JqZWN0KTsKfQoKYm9vbCBKU0hUTUxFbGVt
ZW50UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKewog
ICAgSlNIVE1MRWxlbWVudFByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hUTUxFbGVt
ZW50UHJvdG90eXBlKj4oY2VsbCk7CiAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpT
T2JqZWN0PihleGVjLCAmSlNIVE1MRWxlbWVudFByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwp9Cgpib29sIEpTSFRNTEVsZW1lbnRQcm90b3R5cGU6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
ewogICAgSlNIVE1MRWxlbWVudFByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hUTUxF
bGVtZW50UHJvdG90eXBlKj4ob2JqZWN0KTsKICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRl
c2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsICZKU0hUTUxFbGVtZW50UHJvdG90eXBlVGFibGUsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cn0KCmNvbnN0IENsYXNzSW5mbyBK
U0hUTUxFbGVtZW50OjpzX2luZm8gPSB7ICJIVE1MRWxlbWVudCIsICZCYXNlOjpzX2luZm8sICZK
U0hUTUxFbGVtZW50VGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTSFRNTEVsZW1lbnQp
IH07CgpKU0hUTUxFbGVtZW50OjpKU0hUTUxFbGVtZW50KFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBp
bXBsKQogICAgOiBKU0VsZW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpCnsKfQoK
dm9pZCBKU0hUTUxFbGVtZW50OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCnsKICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKfQoKSlNPYmplY3QqIEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZVByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCnsKICAg
IHJldHVybiBKU0hUTUxFbGVtZW50UHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBnbG9iYWxPYmplY3QsIEpTSFRNTEVsZW1lbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNFbGVtZW50UHJvdG90eXBlOjpzZWxm
KGV4ZWMsIGdsb2JhbE9iamVjdCkpKTsKfQoKYm9vbCBKU0hUTUxFbGVtZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgSlNIVE1MRWxlbWVudCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oY2VsbCk7CiAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOwogICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVl
U2xvdDxKU0hUTUxFbGVtZW50LCBCYXNlPihleGVjLCAmSlNIVE1MRWxlbWVudFRhYmxlLCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwp9Cgpib29sIEpTSFRNTEVsZW1lbnQ6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
ewogICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4o
b2JqZWN0KTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTSFRNTEVsZW1lbnQsIEJh
c2U+KGV4ZWMsICZKU0hUTUxFbGVtZW50VGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7Cn0KCkpTVmFsdWUganNIVE1MRWxlbWVudElkKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQp7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxI
VE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OmlkQXR0cikpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKCkpTVmFsdWUganNIVE1MRWxlbWVu
dFRpdGxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQp7
CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihh
c09iamVjdChzbG90QmFzZSkpOwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRNTEVsZW1l
bnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CiAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdldEF0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRpdGxlQXR0cikpOwogICAgcmV0dXJuIHJlc3Vs
dDsKfQoKCkpTVmFsdWUganNIVE1MRWxlbWVudExhbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVt
ZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgaW1wbC0+Z2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6bGFu
Z0F0dHIpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCgpKU1ZhbHVlIGpzSFRNTEVsZW1lbnRUcmFu
c2xhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsK
ICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFz
T2JqZWN0KHNsb3RCYXNlKSk7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBIVE1MRWxlbWVu
dCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsK
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwtPnRyYW5zbGF0ZSgpKTsKICAgIHJl
dHVybiByZXN1bHQ7Cn0KCgpKU1ZhbHVlIGpzSFRNTEVsZW1lbnREaXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1lbnQqIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+Z2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6ZGlyQXR0cikpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKCkpTVmFsdWUganNIVE1MRWxl
bWVudFRhYkluZGV4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lKQp7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1l
bnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRN
TEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CiAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPnRhYkluZGV4KCkpOwog
ICAgcmV0dXJuIHJlc3VsdDsKfQoKCkpTVmFsdWUganNIVE1MRWxlbWVudERyYWdnYWJsZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKewogICAgSlNIVE1M
RWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC0+ZHJhZ2dhYmxlKCkpOwogICAgcmV0dXJuIHJlc3Vs
dDsKfQoKCkpTVmFsdWUganNIVE1MRWxlbWVudFdlYmtpdGRyb3B6b25lKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQp7CiAgICBKU0hUTUxFbGVtZW50KiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOwog
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OndlYmtpdGRyb3B6b25lQXR0cikpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKCkpTVmFs
dWUganNIVE1MRWxlbWVudEhpZGRlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKewogICAgSlNIVE1MRWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwogICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC0+aGFz
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6aGlkZGVuQXR0cikpOwogICAgcmV0dXJuIHJl
c3VsdDsKfQoKCkpTVmFsdWUganNIVE1MRWxlbWVudEFjY2Vzc0tleShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKewogICAgSlNIVE1MRWxlbWVudCogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8
SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjphY2Nlc3NrZXlBdHRyKSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKSlNWYWx1ZSBqc0hU
TUxFbGVtZW50SW5uZXJIVE1MKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQp7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRN
TEVsZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwtPmlubmVySFRNTCgpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCgpKU1ZhbHVlIGpzSFRN
TEVsZW1lbnRJbm5lclRleHQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1M
RWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC0+aW5uZXJUZXh0KCkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKCkpTVmFsdWUganNIVE1M
RWxlbWVudE91dGVySFRNTChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSkKewogICAgSlNIVE1MRWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxF
bGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
IEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwogICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBp
bXBsLT5vdXRlckhUTUwoKSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKSlNWYWx1ZSBqc0hUTUxF
bGVtZW50T3V0ZXJUZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKQp7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVs
ZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
SFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMt
PmltcGwoKSk7CiAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwtPm91dGVyVGV4dCgpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCgpKU1ZhbHVlIGpzSFRNTEVs
ZW1lbnRDaGlsZHJlbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSkKewogICAgSlNIVE1MRWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVt
ZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhU
TUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOwogICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT5jaGlsZHJlbigpKSk7CiAgICByZXR1cm4gcmVz
dWx0Owp9CgoKSlNWYWx1ZSBqc0hUTUxFbGVtZW50Q29udGVudEVkaXRhYmxlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQp7CiAgICBKU0hUTUxFbGVtZW50
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNf
Y2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmNvbnRlbnRFZGl0YWJsZSgpKTsKICAg
IHJldHVybiByZXN1bHQ7Cn0KCgpKU1ZhbHVlIGpzSFRNTEVsZW1lbnRJc0NvbnRlbnRFZGl0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKewogICAg
SlNIVE1MRWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhUTUxFbGVtZW50KiBp
bXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC0+aXNDb250ZW50RWRpdGFibGUoKSk7CiAg
ICByZXR1cm4gcmVzdWx0Owp9CgoKSlNWYWx1ZSBqc0hUTUxFbGVtZW50U3BlbGxjaGVjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKewogICAgSlNIVE1M
RWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC0+c3BlbGxjaGVjaygpKTsKICAgIHJldHVybiByZXN1
bHQ7Cn0KCgojaWYgRU5BQkxFKE1JQ1JPREFUQSkKSlNWYWx1ZSBqc0hUTUxFbGVtZW50SXRlbVNj
b3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQp7CiAg
ICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09i
amVjdChzbG90QmFzZSkpOwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRNTEVsZW1lbnQq
IGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLT5oYXNBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjppdGVtc2NvcGVBdHRyKSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CgojZW5kaWYK
CiNpZiBFTkFCTEUoTUlDUk9EQVRBKQpKU1ZhbHVlIGpzSFRNTEVsZW1lbnRJdGVtVHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKewogICAgSlNIVE1M
RWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLT5pdGVtVHlwZSgpKSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CgojZW5kaWYKCiNp
ZiBFTkFCTEUoTUlDUk9EQVRBKQpKU1ZhbHVlIGpzSFRNTEVsZW1lbnRJdGVtSWQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1l
bnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRp
Y19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+Z2V0VVJMQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6aXRlbWlkQXR0cikpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKI2VuZGlm
CgojaWYgRU5BQkxFKE1JQ1JPREFUQSkKSlNWYWx1ZSBqc0hUTUxFbGVtZW50SXRlbVJlZihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKewogICAgSlNIVE1M
RWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLT5pdGVtUmVmKCkpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCiNlbmRpZgoKI2lm
IEVOQUJMRShNSUNST0RBVEEpCkpTVmFsdWUganNIVE1MRWxlbWVudEl0ZW1Qcm9wKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQp7CiAgICBKU0hUTUxFbGVt
ZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdChzbG90QmFz
ZSkpOwogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0
aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwtPml0ZW1Qcm9wKCkpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCiNlbmRpZgoKI2lmIEVO
QUJMRShNSUNST0RBVEEpCkpTVmFsdWUganNIVE1MRWxlbWVudFByb3BlcnRpZXMoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1l
bnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRp
Y19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
aW1wbC0+cHJvcGVydGllcygpKSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CgojZW5kaWYKCiNpZiBF
TkFCTEUoTUlDUk9EQVRBKQpKU1ZhbHVlIGpzSFRNTEVsZW1lbnRJdGVtVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1l
bnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRp
Y19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEpTVmFsdWUgcmVz
dWx0ID0gKGltcGwtPml0ZW1WYWx1ZSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDogaW1wbC0+
aXRlbVZhbHVlKCkuanNWYWx1ZSgpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCiNlbmRpZgoKSlNW
YWx1ZSBqc0hUTUxFbGVtZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUpCnsKICAgIEpTSFRNTEVsZW1lbnQqIGRvbU9iamVjdCA9IGpz
Q2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgIHJldHVybiBKU0hU
TUxFbGVtZW50OjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KTsKfQoKdm9pZCBKU0hUTUxFbGVtZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKewogICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0hU
TUxFbGVtZW50Kj4oY2VsbCk7CiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pOwogICAgbG9va3VwUHV0PEpTSFRNTEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsICZKU0hUTUxFbGVtZW50VGFibGUsIHRoaXNPYmplY3QsIHNsb3Qp
Owp9Cgp2b2lkIHNldEpTSFRNTEVsZW1lbnRJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBK
U0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPih0aGlzT2Jq
ZWN0KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgaW1wbC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6aWRBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSkpOwp9
CgoKdm9pZCBzZXRKU0hUTUxFbGVtZW50VGl0bGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
SlNIVE1MRWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4odGhpc09i
amVjdCk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIGltcGwtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OnRpdGxlQXR0ciwgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgdmFsdWUp
KTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVudExhbmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgSlNIVE1MRWxlbWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4odGhp
c09iamVjdCk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIGltcGwtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmxhbmdBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1
ZSkpOwp9CgoKdm9pZCBzZXRKU0hUTUxFbGVtZW50VHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KHRoaXNPYmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1M
RWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBpbXBsLT5zZXRUcmFuc2xhdGUodmFs
dWUudG9Cb29sZWFuKGV4ZWMpKTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVudERpcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
SFRNTEVsZW1lbnQqPih0aGlzT2JqZWN0KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGlj
X2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgaW1wbC0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlyQXR0ciwgdmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2soZXhlYywgdmFsdWUpKTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVudFRhYkluZGV4KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNIVE1MRWxlbWVudCo+KHRoaXNPYmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBz
dGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBpbXBsLT5z
ZXRUYWJJbmRleCh2YWx1ZS50b0ludDMyKGV4ZWMpKTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVu
dERyYWdnYWJsZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPih0aGlzT2JqZWN0KTsKICAgIEhUTUxFbGVt
ZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OwogICAgaW1wbC0+c2V0RHJhZ2dhYmxlKHZhbHVlLnRvQm9vbGVhbihleGVjKSk7Cn0KCgp2b2lk
IHNldEpTSFRNTEVsZW1lbnRXZWJraXRkcm9wem9uZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPih0aGlz
T2JqZWN0KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgaW1wbC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6d2Via2l0ZHJvcHpvbmVBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhl
eGVjLCB2YWx1ZSkpOwp9CgoKdm9pZCBzZXRKU0hUTUxFbGVtZW50SGlkZGVuKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1M
RWxlbWVudCo+KHRoaXNPYmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBpbXBsLT5zZXRCb29sZWFu
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6aGlkZGVuQXR0ciwgdmFsdWUudG9Cb29sZWFu
KGV4ZWMpKTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVudEFjY2Vzc0tleShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVs
ZW1lbnQqPih0aGlzT2JqZWN0KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8
SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgaW1wbC0+c2V0QXR0cmlidXRl
KFdlYkNvcmU6OkhUTUxOYW1lczo6YWNjZXNza2V5QXR0ciwgdmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2soZXhlYywgdmFsdWUpKTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVudElubmVySFRNTChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTSFRNTEVsZW1lbnQqPih0aGlzT2JqZWN0KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICBpbXBsLT5zZXRJbm5lckhUTUwodmFsdWVUb1N0cmluZ1dpdGhO
dWxsQ2hlY2soZXhlYywgdmFsdWUpLCBlYyk7CiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
Owp9CgoKdm9pZCBzZXRKU0hUTUxFbGVtZW50SW5uZXJUZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+
KHRoaXNPYmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxl
bWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
IGltcGwtPnNldElubmVyVGV4dCh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1
ZSksIGVjKTsKICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cn0KCgp2b2lkIHNldEpTSFRN
TEVsZW1lbnRPdXRlckhUTUwoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSlNIVE1MRWxlbWVu
dCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4odGhpc09iamVjdCk7CiAgICBI
VE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgaW1wbC0+c2V0T3V0ZXJIVE1M
KHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSwgZWMpOwogICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKfQoKCnZvaWQgc2V0SlNIVE1MRWxlbWVudE91dGVyVGV4dChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTSFRNTEVsZW1lbnQqPih0aGlzT2JqZWN0KTsKICAgIEhUTUxFbGVtZW50KiBpbXBsID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICBpbXBsLT5zZXRPdXRlclRleHQodmFsdWVUb1N0cmluZ1dpdGhO
dWxsQ2hlY2soZXhlYywgdmFsdWUpLCBlYyk7CiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
Owp9CgoKdm9pZCBzZXRKU0hUTUxFbGVtZW50Q29udGVudEVkaXRhYmxlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxl
bWVudCo+KHRoaXNPYmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxI
VE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgIGltcGwtPnNldENvbnRlbnRFZGl0YWJsZSh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVj
ayhleGVjLCB2YWx1ZSksIGVjKTsKICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cn0KCgp2
b2lkIHNldEpTSFRNTEVsZW1lbnRTcGVsbGNoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
IEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KHRoaXNP
YmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBpbXBsLT5zZXRTcGVsbGNoZWNrKHZhbHVlLnRvQm9v
bGVhbihleGVjKSk7Cn0KCgojaWYgRU5BQkxFKE1JQ1JPREFUQSkKdm9pZCBzZXRKU0hUTUxFbGVt
ZW50SXRlbVNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KHRoaXNPYmplY3QpOwogICAgSFRNTEVs
ZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwo
KSk7CiAgICBpbXBsLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6aXRl
bXNjb3BlQXR0ciwgdmFsdWUudG9Cb29sZWFuKGV4ZWMpKTsKfQoKI2VuZGlmCgojaWYgRU5BQkxF
KE1JQ1JPREFUQSkKdm9pZCBzZXRKU0hUTUxFbGVtZW50SXRlbUlkKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KHRoaXNPYmplY3QpOwogICAgSFRNTEVsZW1lbnQqIGltcGwgPSBzdGF0aWNfY2FzdDxIVE1M
RWxlbWVudCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICBpbXBsLT5zZXRBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjppdGVtaWRBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhl
eGVjLCB2YWx1ZSkpOwp9CgojZW5kaWYKCiNpZiBFTkFCTEUoTUlDUk9EQVRBKQp2b2lkIHNldEpT
SFRNTEVsZW1lbnRJdGVtVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgSlNIVE1MRWxl
bWVudCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4odGhpc09iamVjdCk7CiAg
ICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgaW1wbC0+c2V0SXRlbVZh
bHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUsIGVjKTsKICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7Cn0KCiNlbmRpZgoKSlNWYWx1ZSBKU0hUTUxFbGVtZW50OjpnZXRDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCnsKICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0hUTUxFbGVtZW50Q29uc3RydWN0b3I+KGV4ZWMsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwp9CgpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSFRNTEVsZW1lbnRQcm90b3R5cGVGdW5jdGlvbkluc2VydEFkamFj
ZW50RWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCnsKICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTSFRNTEVs
ZW1lbnQ6OnNfaW5mbykpCiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAg
ICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09i
amVjdCh0aGlzVmFsdWUpKTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgJkpTSFRNTEVsZW1lbnQ6OnNfaW5mbyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRp
Y19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgY29uc3QgU3RyaW5nJiB3aGVyZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICBFbGVtZW50KiBl
bGVtZW50KHRvRWxlbWVudChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CiAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKCiAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
aW1wbC0+aW5zZXJ0QWRqYWNlbnRFbGVtZW50KHdoZXJlLCBlbGVtZW50LCBlYykpKTsKICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cn0KCkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNIVE1MRWxlbWVudFByb3RvdHlw
ZUZ1bmN0aW9uSW5zZXJ0QWRqYWNlbnRIVE1MKEV4ZWNTdGF0ZSogZXhlYykKewogICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cygmSlNIVE1MRWxlbWVudDo6c19pbmZvKSkKICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKICAgIEpTSFRNTEVsZW1lbnQqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNI
VE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNIVE1MRWxlbWVudDo6c19pbmZvKTsKICAgIEhUTUxFbGVt
ZW50KiBpbXBsID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OwogICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICBjb25zdCBTdHJpbmcmIHdoZXJlKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgp
ID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgIGNvbnN0IFN0cmluZyYgaHRtbChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOwogICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICBpbXBsLT5pbnNlcnRBZGphY2Vu
dEhUTUwod2hlcmUsIGh0bWwsIGVjKTsKICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwp9CgpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSFRNTEVsZW1lbnRQcm90b3R5cGVGdW5jdGlvbkluc2VydEFkamFj
ZW50VGV4dChFeGVjU3RhdGUqIGV4ZWMpCnsKICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTSFRNTEVsZW1l
bnQ6OnNfaW5mbykpCiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICBK
U0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTSFRNTEVsZW1lbnQqPihhc09iamVj
dCh0aGlzVmFsdWUpKTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
JkpTSFRNTEVsZW1lbnQ6OnNfaW5mbyk7CiAgICBIVE1MRWxlbWVudCogaW1wbCA9IHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgY29uc3QgU3RyaW5nJiB3aGVyZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOwogICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICBjb25zdCBTdHJpbmcm
IHRleHQoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVk
KS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEs
IERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgaW1wbC0+aW5zZXJ0QWRqYWNlbnRUZXh0KHdoZXJlLCB0ZXh0LCBl
Yyk7CiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKfQoKRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0hU
TUxFbGVtZW50UHJvdG90eXBlRnVuY3Rpb25DbGljayhFeGVjU3RhdGUqIGV4ZWMpCnsKICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoJkpTSFRNTEVsZW1lbnQ6OnNfaW5mbykpCiAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICBKU0hUTUxFbGVtZW50KiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTSFRNTEVsZW1lbnQqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTSFRNTEVsZW1lbnQ6OnNfaW5mbyk7CiAgICBIVE1M
RWxlbWVudCogaW1wbCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKICAgIGltcGwtPmNsaWNrKCk7CiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwp9CgpIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChKU0M6OkpTVmFsdWUgdmFs
dWUpCnsKICAgIHJldHVybiB2YWx1ZS5pbmhlcml0cygmSlNIVE1MRWxlbWVudDo6c19pbmZvKSA/
IGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpIDogMDsKfQoK
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>