<?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>91598</bug_id>
          
          <creation_ts>2012-07-18 00:40:28 -0700</creation_ts>
          <short_desc>[EFL] Add central error management to EFL port</short_desc>
          <delta_ts>2012-07-18 13:02:05 -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>WebKit EFL</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>61838</blocked>
    
    <blocked>91602</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>jochen</cc>
    
    <cc>kenneth</cc>
    
    <cc>keunsoon.lee</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672087</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 00:40:28 -0700</bug_when>
    <thetext>We need a ErrorsEfl.h header in WebCore that defines all the possible errors used by EFL port. We can then use that header in both WebKit1 and WebKit2 EFL.
This is the approach used by the GTK port.

At the moment, the EFL port has no central error management and we use static constants defined here and there for error domains and codes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672151</commentid>
    <comment_count>1</comment_count>
      <attachid>152966</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 02:22:04 -0700</bug_when>
    <thetext>Created attachment 152966
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672170</commentid>
    <comment_count>2</comment_count>
      <attachid>152966</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-18 02:47:01 -0700</bug_when>
    <thetext>Comment on attachment 152966
Proposed patch

Looks good to me. Thanks !!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672177</commentid>
    <comment_count>3</comment_count>
      <attachid>152966</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-18 02:52:54 -0700</bug_when>
    <thetext>Comment on attachment 152966
Proposed patch

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

LGTM with the two nits.

&gt; Source/WebCore/platform/efl/ErrorsEfl.h:52
&gt; +// Sync&apos;d with Mac&apos;s WebKit Errors.

Can you mention here where these are copied from, i.e. 
// copied from WebKit/Misc/WebKitErrors[Private].h

&gt; Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:365
&gt; +    if (!strcmp(error-&gt;domain, &quot;WebKitNetworkError&quot;)) {

I think this translation deserves a comment explaining why it&apos;s done - matching test expectations etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672182</commentid>
    <comment_count>4</comment_count>
      <attachid>152966</attachid>
    <who name="">jochen</who>
    <bug_when>2012-07-18 02:59:06 -0700</bug_when>
    <thetext>Comment on attachment 152966
Proposed patch

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

&gt; Source/WebCore/platform/efl/ErrorsEfl.cpp:41
&gt; +                         request.url().string(), &quot;Load request cancelled&quot;);

you don&apos;t need to wrap the line here and below

&gt; Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:374
&gt;      if (error-&gt;failing_url &amp;&amp; *error-&gt;failing_url != &apos;\0&apos;) {

no need for { } since the body is one line only now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672183</commentid>
    <comment_count>5</comment_count>
      <attachid>152975</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 03:05:45 -0700</bug_when>
    <thetext>Created attachment 152975
Patch

Take Dominik and Jochen&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672201</commentid>
    <comment_count>6</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-07-18 03:38:56 -0700</bug_when>
    <thetext>The patch looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672208</commentid>
    <comment_count>7</comment_count>
      <attachid>152975</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-18 03:45:09 -0700</bug_when>
    <thetext>Comment on attachment 152975
Patch

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

&gt; Source/WebCore/platform/efl/ErrorsEfl.cpp:42
&gt; +namespace WebCore {
&gt; +
&gt; +ResourceError cancelledError(const ResourceRequest&amp; request)
&gt; +{
&gt; +    return ResourceError(errorDomainNetwork, NetworkErrorCancelled, request.url().string(), &quot;Load request cancelled&quot;);
&gt; +}
&gt; +

I guess this is not really EFL related. Maybe it makes sense to share with Qt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672211</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-18 03:45:46 -0700</bug_when>
    <thetext>Simon would it make sense to use some of this for Qt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672222</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 04:04:03 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 152975 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152975&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/efl/ErrorsEfl.cpp:42
&gt; &gt; +namespace WebCore {
&gt; &gt; +
&gt; &gt; +ResourceError cancelledError(const ResourceRequest&amp; request)
&gt; &gt; +{
&gt; &gt; +    return ResourceError(errorDomainNetwork, NetworkErrorCancelled, request.url().string(), &quot;Load request cancelled&quot;);
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; I guess this is not really EFL related. Maybe it makes sense to share with Qt?

In Qt port, you would probably want to use tr() for the strings. GTK port is using Gettext for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672234</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-18 04:20:22 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 152975 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152975&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/efl/ErrorsEfl.cpp:42
&gt; &gt; &gt; +namespace WebCore {
&gt; &gt; &gt; +
&gt; &gt; &gt; +ResourceError cancelledError(const ResourceRequest&amp; request)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    return ResourceError(errorDomainNetwork, NetworkErrorCancelled, request.url().string(), &quot;Load request cancelled&quot;);
&gt; &gt; &gt; +}
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; I guess this is not really EFL related. Maybe it makes sense to share with Qt?
&gt; 
&gt; In Qt port, you would probably want to use tr() for the strings. GTK port is using Gettext for example.

That could easily be fixed with a macro in Platform.h or so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672236</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-18 04:21:10 -0700</bug_when>
    <thetext>
&gt; That could easily be fixed with a macro in Platform.h or so

hmm, maybe not gettext has to look thought the files and search for _ or something. Not sure how tr() works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672243</commentid>
    <comment_count>12</comment_count>
      <attachid>152975</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-07-18 04:38:13 -0700</bug_when>
    <thetext>Comment on attachment 152975
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/efl/ErrorsEfl.cpp:42
&gt;&gt;&gt;&gt; +
&gt;&gt;&gt; 
&gt;&gt;&gt; I guess this is not really EFL related. Maybe it makes sense to share with Qt?
&gt;&gt; 
&gt;&gt; In Qt port, you would probably want to use tr() for the strings. GTK port is using Gettext for example.
&gt; 
&gt; That could easily be fixed with a macro in Platform.h or so

Sounds interesting. The macro part I&apos;m not sure about, because for the purpose of translation the name of the &quot;function&quot; that encloses the translation matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672273</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 05:21:44 -0700</bug_when>
    <thetext>We need this as soon as possible for our port. While integrating with Qt (and likely GTK) is an interesting idea, this may take time as we need to solve some issues such as localization and patch all the relevant code for those ports. 

Could we land this patch like as it is for now and discuss the possible code sharing with other ports in a separate thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672555</commentid>
    <comment_count>14</comment_count>
      <attachid>152975</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-18 11:19:06 -0700</bug_when>
    <thetext>Comment on attachment 152975
Patch

sure r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672605</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 12:04:34 -0700</bug_when>
    <thetext>Could someone please cq+ ? I need this to land so that I can rebase the dependency at Bug 91602.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672664</commentid>
    <comment_count>16</comment_count>
      <attachid>152975</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 13:01:57 -0700</bug_when>
    <thetext>Comment on attachment 152975
Patch

Clearing flags on attachment: 152975

Committed r123004: &lt;http://trac.webkit.org/changeset/123004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672665</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 13:02:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152966</attachid>
            <date>2012-07-18 02:22:04 -0700</date>
            <delta_ts>2012-07-18 03:05:45 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>91598_errorsefl.patch</filename>
            <type>text/plain</type>
            <size>24727</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMmU1MjI5Li42NmQ2Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgY2VudHJhbCBlcnJvciBtYW5hZ2VtZW50IHRvIEVG
TCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
ZmluZSBwb3NzaWJsZSBlcnJvciB0eXBlcyBpbiBFcnJvcnNFZmwgc28KKyAgICAgICAgdGhhdCB3
ZSBjYW4gcmV1c2UgdGhlIGhlYWRlciBpbiBib3RoIFdlYktpdDEKKyAgICAgICAgYW5kIFdlYktp
dDIuIFRoaXMgaXMgaW5zcGlyZWQgZnJvbSB0aGUgR1RLCisgICAgICAgIHBvcnQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbmNlbGxlZEVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3du
bG9hZE5ldHdvcmtFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5
VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpwcmludEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50
ZXJOb3RGb3VuZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRQYWdlUmFuZ2VUb1By
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisKIDIwMTItMDctMTggIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29u
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGlu
dHJvZHVjZWQgYnkgQ2hhbmdlc2V0IDEyMTg3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggMzJhMzFiNi4uNDk0YmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMzLDYg
KzMzLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2VmbC9EcmFn
SW1hZ2VFZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9FZmxLZXlib2FyZFV0aWxpdGllcy5jcHAKICAg
cGxhdGZvcm0vZWZsL0VmbFNjcmVlblV0aWxpdGllcy5jcHAKKyAgcGxhdGZvcm0vZWZsL0Vycm9y
c0VmbC5jcHAKICAgcGxhdGZvcm0vZWZsL0V2ZW50TG9vcEVmbC5jcHAKICAgcGxhdGZvcm0vZWZs
L0ZpbGVTeXN0ZW1FZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9HYW1lcGFkc0VmbC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzRmYTRjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXJyb3JzRWZsLmgiCisK
KyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiUHJpbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIp
OworfQorCitSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ks
IFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmlj
dGVkIG5ldHdvcmsgcG9ydCIpOworfQorCitSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiVVJMIGNhbm5vdCBi
ZSBzaG93biIpOworfQorCitSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVw
dGVkQnlQb2xpY3lDaGFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIik7Cit9CisKK1Jlc291cmNl
RXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBv
bGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCAiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0
eXBlIGNhbm5vdCBiZSBzaG93biIpOworfQorCitSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhp
c3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90
RXhpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
ICJGaWxlIGRvZXMgbm90IGV4aXN0Iik7Cit9CisKK1Jlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhh
bmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFu
ZGxlTG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgIlBsdWdpbiB3aWxsIGhhbmRsZSBsb2FkIik7Cit9CisKK1Jlc291cmNlRXJyb3IgZG93bmxv
YWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0d29ya0Vycm9yKQoreworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JO
ZXR3b3JrLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtFcnJvci5mYWlsaW5nVVJM
KCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKK30KKworUmVzb3VyY2VF
cnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxv
YWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksICJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQi
KTsKK30KKworUmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorewor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJy
b3JEZXN0aW5hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5z
dHJpbmcoKSwgZXJyb3JNZXNzYWdlKTsKK30KKworUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNv
bnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKK3sKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQt
PmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50RXJyb3JHZW5lcmFsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VS
TCgpLCBlcnJvck1lc3NhZ2UpOworfQorCitSZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVy
cm9yKGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KQoreworICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qcmlu
dCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwgIlByaW50ZXIg
bm90IGZvdW5kIik7Cit9CisKK1Jlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
Y29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQpCit7CisgICAgRG9jdW1lbnRMb2FkZXIq
IGRvY3VtZW50TG9hZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQ
cmludEVycm9ySW52YWxpZFBhZ2VSYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwgIkludmFsaWQgcGFn
ZSByYW5nZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvRXJyb3JzRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YTQ1MzQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9F
cnJvcnNFZmwuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEVycm9yc0VmbF9oCisjZGVmaW5lIEVycm9yc0VmbF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFByaW50Q29udGV4dDsKK2Ns
YXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOworCitzdGF0aWMgY29uc3QgY2hhciBlcnJvckRvbWFpbk5ldHdvcmtbXSA9ICJX
ZWJLaXROZXR3b3JrRXJyb3IiOworc3RhdGljIGNvbnN0IGNoYXIgZXJyb3JEb21haW5Qb2xpY3lb
XSA9ICJXZWJLaXRQb2xpY3lFcnJvciI7CitzdGF0aWMgY29uc3QgY2hhciBlcnJvckRvbWFpblBs
dWdpbltdID0gIldlYktpdFBsdWdpbkVycm9yIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVycm9yRG9t
YWluRG93bmxvYWRbXSA9ICJXZWJLaXREb3dubG9hZEVycm9yIjsKK3N0YXRpYyBjb25zdCBjaGFy
IGVycm9yRG9tYWluUHJpbnRbXSA9ICJXZWJLaXRQcmludEVycm9yIjsKKworZW51bSBOZXR3b3Jr
RXJyb3IgeworICAgIE5ldHdvcmtFcnJvckZhaWxlZCA9IDM5OSwKKyAgICBOZXR3b3JrRXJyb3JU
cmFuc3BvcnQgPSAzMDAsCisgICAgTmV0d29ya0Vycm9yVW5rbm93blByb3RvY29sID0gMzAxLAor
ICAgIE5ldHdvcmtFcnJvckNhbmNlbGxlZCA9IDMwMiwKKyAgICBOZXR3b3JrRXJyb3JGaWxlRG9l
c05vdEV4aXN0ID0gMzAzCit9OworCisvLyBTeW5jJ2Qgd2l0aCBNYWMncyBXZWJLaXQgRXJyb3Jz
LgorZW51bSBQb2xpY3lFcnJvciB7CisgICAgUG9saWN5RXJyb3JGYWlsZWQgPSAxOTksCisgICAg
UG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUgPSAxMDAsCisgICAgUG9saWN5RXJyb3JDYW5u
b3RTaG93VVJMID0gMTAxLAorICAgIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSA9IDEwMiwKKyAgICBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0
ID0gMTAzCit9OworCitlbnVtIFBsdWdpbkVycm9yIHsKKyAgICBQbHVnaW5FcnJvckZhaWxlZCA9
IDI5OSwKKyAgICBQbHVnaW5FcnJvckNhbm5vdEZpbmRQbHVnaW4gPSAyMDAsCisgICAgUGx1Z2lu
RXJyb3JDYW5ub3RMb2FkUGx1Z2luID0gMjAxLAorICAgIFBsdWdpbkVycm9ySmF2YVVuYXZhaWxh
YmxlID0gMjAyLAorICAgIFBsdWdpbkVycm9yQ29ubmVjdGlvbkNhbmNlbGxlZCA9IDIwMywKKyAg
ICBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkID0gMjA0Cit9OworCitlbnVtIERvd25sb2FkRXJy
b3IgeworICAgIERvd25sb2FkRXJyb3JOZXR3b3JrID0gNDk5LAorICAgIERvd25sb2FkRXJyb3JD
YW5jZWxsZWRCeVVzZXIgPSA0MDAsCisgICAgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uID0gNDAx
Cit9OworCitlbnVtIFByaW50RXJyb3IgeworICAgIFByaW50RXJyb3JHZW5lcmFsID0gNTk5LAor
ICAgIFByaW50RXJyb3JQcmludGVyTm90Rm91bmQgPSA1MDAsCisgICAgUHJpbnRFcnJvckludmFs
aWRQYWdlUmFuZ2UgPSA1MDEKK307CisKK1Jlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CitSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNo
YW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBjYW5ub3RT
aG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CitSZXNvdXJjZUVycm9y
IGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CitSZXNvdXJj
ZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworUmVzb3VyY2VFcnJvciBkb3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
Jik7CitSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworUmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKK1Jl
c291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBQcmludENvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CitSZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0
IFByaW50Q29udGV4dCopOworUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChj
b25zdCBQcmludENvbnRleHQqKTsKKworfQorCisjZW5kaWYgLy8gRXJyb3JzRWZsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwppbmRleCA3ZDMxM2UzLi5kMWY0Mzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgY2VudHJhbCBlcnJvciBtYW5hZ2VtZW50
IHRvIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgdXNlIG9mIEVycm9yc0VmbCBoZWFkZXIgZnJvbSBXZWJDb3JlIGluCisgICAgICAg
IEVGTCdzIEZyYW1lTG9hZGVyQ2xpZW50IG5vdyB0aGF0IHdlIGhhdmUKKyAgICAgICAgYSBjZW50
cmFsIHBsYWNlIGZvciBlcnJvcnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwbHVnaW5XaWxsSGFu
ZGxlTG9hZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpz
aG91bGRGYWxsQmFjayk6CisKIDIwMTItMDctMTcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBSZXBsYWNlIDAgYnkgTlVMTCBp
biBwdWJsaWMgaGVhZGVycyBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggNTA3
MmRlMi4uZDI2OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtMzgsNiArMzgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVk
ZSAiRXJyb3JzRWZsLmgiCiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmgiCkBAIC04Njcs
NjkgKzg2OCw0NCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkb3dubG9hZChSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgIGV3a192aWV3X2Rvd25s
b2FkX3JlcXVlc3QobV92aWV3LCAmZG93bmxvYWQpOwogfQogCi0vLyBjb3BpZWQgZnJvbSBXZWJL
aXQvTWlzYy9XZWJLaXRFcnJvcnNbUHJpdmF0ZV0uaAotZW51bSB7Ci0gICAgV2ViS2l0RXJyb3JD
YW5ub3RTaG93TUlNRVR5cGUgPSAxMDAsCi0gICAgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMID0g
MTAxLAotICAgIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSA9
IDEwMiwKLSAgICBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gMTAzLAotICAg
IFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbiA9IDIwMCwKLSAgICBXZWJLaXRFcnJvckNhbm5v
dExvYWRQbHVnSW4gPSAyMDEsCi0gICAgV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgPSAyMDIs
Ci0gICAgV2ViS2l0RXJyb3JQbHVnaW5XaWxsSGFuZGxlTG9hZCA9IDIwNAotfTsKLQotLy8gRG9t
YWlucyB1c2VkIGZvciBSZXNvdXJjZUVycm9yCi1jb25zdCBjaGFyKiBjb25zdCBOU1VSTEVycm9y
RG9tYWluID0gIk5TVVJMRXJyb3JEb21haW4iOwotY29uc3QgY2hhciogY29uc3QgV2ViS2l0RXJy
b3JEb21haW4gPSAiV2ViS2l0RXJyb3JEb21haW4iOwotCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihOU1VSTEVycm9yRG9tYWluLCAtOTk5LCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3Qg
Y2FuY2VsbGVkIik7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7Ci0gICAgcmV0
dXJuIGVycm9yOworICAgIHJldHVybiBXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcihyZXF1ZXN0KTsK
IH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6YmxvY2tlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihXZWJLaXRFcnJvckRvbWFpbiwgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWVz
dCBibG9ja2VkIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsK
IH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihXZWJLaXRFcnJvckRvbWFpbiwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2hv
dyBVUkwiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3Qp
OwogfQogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjppbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJLaXRFcnJvckRvbWFpbiwgV2ViS2l0RXJyb3JGcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJGcmFtZSBsb2FkIGludGVycnVwdGVkIGJ5IHBvbGlj
eSBjaGFuZ2UiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihyZXF1ZXN0KTsKIH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoTlNVUkxFcnJvckRvbWFpbiwgV2ViS2l0
RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2hvdyBtaW1ldHlwZSIpOworICAgIHJldHVybiBX
ZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihyZXNwb25zZSk7CiB9CiAKIFJlc291cmNl
RXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihO
U1VSTEVycm9yRG9tYWluLCAtOTk4IC8qICMjIyAqLywgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKHJlc3BvbnNlKTsKIH0KIAogUmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihXZWJLaXRFcnJvckRvbWFpbiwgV2ViS2l0RXJyb3JQbHVnaW5XaWxsSGFuZGxlTG9h
ZCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlBs
dWdpbiB3aWxsIGhhbmRsZSBsb2FkIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IocmVzcG9uc2UpOwogfQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1
cm4gIShlcnJvci5pc0NhbmNlbGxhdGlvbigpIHx8IGVycm9yLmVycm9yQ29kZSgpID09IFdlYktp
dEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSB8fCBlcnJvci5lcnJvckNv
ZGUoKSA9PSBXZWJLaXRFcnJvclBsdWdpbldpbGxIYW5kbGVMb2FkKTsKKyAgICByZXR1cm4gIShl
cnJvci5pc0NhbmNlbGxhdGlvbigpIHx8IGVycm9yLmVycm9yQ29kZSgpID09IFBvbGljeUVycm9y
RnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSB8fCBlcnJvci5lcnJvckNvZGUoKSA9
PSBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMmE5YzQ0Li40MmRiN2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgY2Vu
dHJhbCBlcnJvciBtYW5hZ2VtZW50IHRvIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIEVycm9yc0VmbCBoZWFkZXIgZnJv
bSBXZWJDb3JlIGluCisgICAgICAgIFdlYktpdDIsIGZvciBFd2tfV2ViX0Vycm9yIGFuZCBXZWJF
cnJvcnNFZmwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNw
cDoKKyAgICAgICAgKGV3a193ZWJfZXJyb3JfdHlwZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYW5jZWxsZWRF
cnJvcik6CisgICAgICAgIChXZWJLaXQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmludGVycnVwdGVkRm9yUG9s
aWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJLaXQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgorCiAyMDEyLTA3LTE3ICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0g
UmVwbGFjZSAwIGJ5IE5VTEwgaW4gcHVibGljIGhlYWRlcnMgZG9jdW1lbnRhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAppbmRl
eCBmMTZmYjJjLi5lNmUzZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKIAorI2luY2x1ZGUgIkVycm9yc0Vm
bC5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRl
ICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKQEAgLTM0LDExICszNSw5IEBACiAjaW5jbHVkZSA8
V0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotLy8gQ29waWVkIGZy
b20gRXJyb3JzR3RrLmggd2hpY2ggaXMgdXNlZCBieSBEb3dubG9hZFNvdXAuY3BwLgotc3RhdGlj
IGNvbnN0IGNoYXIgZXJyb3JEb21haW5Eb3dubG9hZFtdID0gIldlYktpdERvd25sb2FkRXJyb3Ii
OwotCiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgewogICAgIFdLUmV0YWluUHRyPFdLRXJyb3JSZWY+
IHdrRXJyb3I7CiAKQEAgLTgzLDEyICs4MiwxNiBAQCBFd2tfV2ViX0Vycm9yX1R5cGUgZXdrX3dl
Yl9lcnJvcl90eXBlX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tEb21haW4oQWRvcHRXSywgV0tFcnJvckNvcHlEb21haW4od2tF
cnJvcikpOwogICAgIFdURjo6U3RyaW5nIGVycm9yRG9tYWluID0gdG9XVEZTdHJpbmcod2tEb21h
aW4uZ2V0KCkpOwogCi0gICAgaWYgKGVycm9yRG9tYWluID09IFN0cmluZyhnX3F1YXJrX3RvX3N0
cmluZyhTT1VQX0hUVFBfRVJST1IpKSkKLSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQ
RV9IVFRQOwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBTdHJpbmcoZ19xdWFya190b19zdHJpbmco
R19JT19FUlJPUikpKQotICAgICAgICByZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX0lPOworICAg
IGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbk5ldHdvcmspCisgICAgICAgIHJldHVybiBF
V0tfV0VCX0VSUk9SX1RZUEVfTkVUV09SSzsKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JE
b21haW5Qb2xpY3kpCisgICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZOwor
ICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKKyAgICAgICAgcmV0dXJu
IEVXS19XRUJfRVJST1JfVFlQRV9QTFVHSU47CiAgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9y
RG9tYWluRG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfRE9XTkxP
QUQ7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCisgICAgICAgIHJl
dHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJTlQ7CiAgICAgcmV0dXJuIEVXS19XRUJfRVJST1Jf
VFlQRV9JTlRFUk5BTDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9lcnJvci5oCmluZGV4IDJkOTY2NjUuLjRiYTBjN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmgKQEAgLTQ0LDkgKzQ0
LDExIEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7CiB0eXBl
ZGVmIGVudW0gewogICAgIEVXS19XRUJfRVJST1JfVFlQRV9OT05FLAogICAgIEVXS19XRUJfRVJS
T1JfVFlQRV9JTlRFUk5BTCwKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfSFRUUCwKLSAgICBFV0tf
V0VCX0VSUk9SX1RZUEVfSU8sCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX0RPV05MT0FECisgICAg
RVdLX1dFQl9FUlJPUl9UWVBFX05FVFdPUkssCisgICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BPTElD
WSwKKyAgICBFV0tfV0VCX0VSUk9SX1RZUEVfUExVR0lOLAorICAgIEVXS19XRUJfRVJST1JfVFlQ
RV9ET1dOTE9BRCwKKyAgICBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJTlQKIH0gRXdrX1dlYl9FcnJv
cl9UeXBlOwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCmluZGV4IGRkYTkzNzIuLjlk
OGRmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcApAQCAtMjYsOCArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogCi0jaW5jbHVkZSAiV0tF
cnJvci5oIgotI2luY2x1ZGUgIldlYkVycm9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNF
ZmwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgpAQCAtMzYsNDcgKzM1LDM5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotLy8gRklYTUU6IEV4cG9ydCBmb2xsb3dpbmcgZXJyb3IgY29kZXMg
c28gdGhhdCBhcHBsaWNhdGlvbiBjYW4gdW5kZXJzdGFuZC4KLS8vIFdlIHNob3VsZCBlc3RhYmxp
c2ggRWZsIHBvcnQncyBlcnJvciBzeXN0ZW0gYmVjYXVzZSBhcHBsaWNhdGlvbiBjYW5ub3QgdW5k
ZXJzdGFuZCB0aG9zZSBsb2NhbCBkZWZpbmUuCi0vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwNzgzIGZvciBkZXRhaWwuCi1lbnVtIHsKLSAgICBrV0tFcnJv
ckNvZGVDYW5jZWxsZWQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAwLAotICAgIGtX
S0Vycm9yQ29kZUZpbGVEb2VzTm90RXhpc3QgPSAgICAgICAgICAgICAgICAgICAgICAzMDEsCi19
OwotCiBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJy
b3JEb21haW4oKSwga1dLRXJyb3JDb2RlQ2FuY2VsbGVkLCByZXF1ZXN0LnVybCgpLnN0cmluZygp
LCAiUmVxdWVzdCBjYW5jZWxsZWQiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FuY2VsbGVkRXJy
b3IocmVxdWVzdCk7CiB9CiAKIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJv
cjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JDb2RlQ2Fubm90VXNlUmVzdHJpY3RlZFBv
cnQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJSZXF1ZXN0IGJsb2NrZWQiKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCiBSZXNvdXJjZUVycm9yIGNh
bm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vy
cm9yQ29kZUNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJDYW5ub3Qgc2hv
dyBVUkwiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3Qp
OwogfQogCiBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFdlYkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVGcmFtZUxvYWRJbnRl
cnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiRnJhbWUgbG9h
ZCBpbnRlcnJ1cHRlZCBieSBwb2xpY3kgY2hhbmdlIik7CisgICAgcmV0dXJuIFdlYkNvcmU6Omlu
dGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IocmVxdWVzdCk7CiB9CiAKIFJlc291cmNlRXJy
b3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9t
YWluKCksIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dNSU1FVHlwZSwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksICJDYW5ub3Qgc2hvdyBtaW1ldHlwZSIpOworICAgIHJldHVybiBXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihyZXNwb25zZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZmlsZURv
ZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tF
cnJvckNvZGVGaWxlRG9lc05vdEV4aXN0LCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgIkZpbGUg
ZG9lcyBub3QgZXhpc3QiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZURvZXNOb3RFeGlzdEVy
cm9yKHJlc3BvbnNlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFdlYkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVQbHVn
SW5XaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksICJQbHVnaW4gd2lsbCBo
YW5kbGUgbG9hZCIpOworICAgIHJldHVybiBXZWJDb3JlOjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKHJlc3BvbnNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTlhNjI1Zi4uZmU2NTE1MyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTA3LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIGNlbnRyYWwgZXJyb3IgbWFuYWdlbWVu
dCB0byBFRkwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYXAgV2ViS2l0TmV0d29ya0Vycm9yIHRvIE5TVVJMRXJyb3JEb21haW4gd2hlbgorICAg
ICAgICBwcmludGluZyBpbiBEdW1wUmVuZGVyVHJlZSBzbyB0aGF0IHRoZSBvdXRwdXQKKyAgICAg
ICAgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
ZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcDoKKyAgICAgICAgKGRlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KToKKwogMjAxMi0wNy0xNyAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56
aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bS1BbmRyb2lkXSBSdW4gcmVmIHRl
c3RzIHRvZ2V0aGVyIHRvIGF2b2lkIGV4cGVuc2l2ZSBkcml2ZXIgcmVzdGFydHMKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IDhh
OTAxYzQuLjE1NGI5OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtMzU5LDE2ICszNTksMjIgQEAgc3RhdGljIENTdHJpbmcg
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNl
X1Jlc3BvbnMKIAogc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQogewotICAgIFN0cmluZyByZXQgPSAiPE5T
RXJyb3IgZG9tYWluICI7Ci0gICAgcmV0ICs9IGVycm9yLT5kb21haW47Ci0gICAgcmV0ICs9ICIs
IGNvZGUgIjsKLSAgICByZXQgKz0gU3RyaW5nOjpudW1iZXIoZXJyb3ItPmNvZGUpOworICAgIGNv
bnN0IGNoYXIqIGVycm9yRG9tYWluID0gZXJyb3ItPmRvbWFpbjsKKyAgICBpbnQgZXJyb3JDb2Rl
ID0gZXJyb3ItPmNvZGU7CisKKyAgICBpZiAoIXN0cmNtcChlcnJvci0+ZG9tYWluLCAiV2ViS2l0
TmV0d29ya0Vycm9yIikpIHsKKyAgICAgICAgZXJyb3JEb21haW4gPSAiTlNVUkxFcnJvckRvbWFp
biI7CisgICAgICAgIGVycm9yQ29kZSA9IC05OTk7CisgICAgfQorCisgICAgaWYgKCFzdHJjbXAo
ZXJyb3JEb21haW4sICJXZWJLaXRQb2xpY3lFcnJvciIpKQorICAgICAgICBlcnJvckRvbWFpbiA9
ICJXZWJLaXRFcnJvckRvbWFpbiI7CisKKyAgICBTdHJpbmcgcmV0ID0gbWFrZVN0cmluZygiPE5T
RXJyb3IgZG9tYWluICIsIGVycm9yRG9tYWluLCAiLCBjb2RlICIsIFN0cmluZzo6bnVtYmVyKGVy
cm9yQ29kZSkpOwogICAgIGlmIChlcnJvci0+ZmFpbGluZ191cmwgJiYgKmVycm9yLT5mYWlsaW5n
X3VybCAhPSAnXDAnKSB7Ci0gICAgICAgIHJldCArPSAiLCBmYWlsaW5nIFVSTCBcIiI7Ci0gICAg
ICAgIHJldCArPSBlcnJvci0+ZmFpbGluZ191cmw7Ci0gICAgICAgIHJldCArPSAiXCIiOworICAg
ICAgICByZXQgPSBtYWtlU3RyaW5nKHJldCwgIiwgZmFpbGluZyBVUkwgXCIiLCBlcnJvci0+ZmFp
bGluZ191cmwsICJcIiIpOwogICAgIH0KLSAgICByZXQgKz0gIj4iOworICAgIHJldCA9IG1ha2VT
dHJpbmcocmV0LCAiPiIpOwogCiAgICAgcmV0dXJuIHJldC51dGY4KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152975</attachid>
            <date>2012-07-18 03:05:45 -0700</date>
            <delta_ts>2012-07-18 13:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91598_errorsefl.patch</filename>
            <type>text/plain</type>
            <size>24546</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYWYzNTM2Li44M2YzMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgY2VudHJhbCBlcnJvciBtYW5hZ2VtZW50IHRvIEVG
TCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
ZmluZSBwb3NzaWJsZSBlcnJvciB0eXBlcyBpbiBFcnJvcnNFZmwgc28KKyAgICAgICAgdGhhdCB3
ZSBjYW4gcmV1c2UgdGhlIGhlYWRlciBpbiBib3RoIFdlYktpdDEKKyAgICAgICAgYW5kIFdlYktp
dDIuIFRoaXMgaXMgaW5zcGlyZWQgZnJvbSB0aGUgR1RLCisgICAgICAgIHBvcnQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbmNlbGxlZEVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3du
bG9hZE5ldHdvcmtFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5
VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpwcmludEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50
ZXJOb3RGb3VuZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRQYWdlUmFuZ2VUb1By
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisKIDIwMTItMDctMTggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEN1cnNvciBpcyBub3QgZHJhd24gd2hlbiBvcGVuZ2xf
eDExIGJhY2tlbmQgaXMgY2hvb3Nlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMzJh
MzFiNi4uNDk0YmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMzLDYgKzMzLDcg
QEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VF
ZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9FZmxLZXlib2FyZFV0aWxpdGllcy5jcHAKICAgcGxhdGZv
cm0vZWZsL0VmbFNjcmVlblV0aWxpdGllcy5jcHAKKyAgcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5j
cHAKICAgcGxhdGZvcm0vZWZsL0V2ZW50TG9vcEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL0ZpbGVT
eXN0ZW1FZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9HYW1lcGFkc0VmbC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTA2Zjg3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9FcnJvcnNFZmwuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXJyb3JzRWZsLmgiCisKKyNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUHJp
bnRDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
bk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
IkxvYWQgcmVxdWVzdCBjYW5jZWxsZWQiKTsKK30KKworUmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0
ZWQgbmV0d29yayBwb3J0Iik7Cit9CisKK1Jlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLCAiVVJMIGNhbm5vdCBiZSBzaG93biIpOworfQorCitSZXNvdXJjZUVy
cm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5
LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCksICJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpOworfQorCitSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5
LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
ICJDb250ZW50IHdpdGggdGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIik7
Cit9CisKK1Jlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluTmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksICJGaWxlIGRvZXMgbm90IGV4aXN0Iik7Cit9CisKK1Jlc291cmNlRXJyb3IgcGx1
Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJy
b3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksICJQbHVnaW4gd2lsbCBo
YW5kbGUgbG9hZCIpOworfQorCitSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yTmV0d29yaywgbmV0d29ya0Vy
cm9yLmZhaWxpbmdVUkwoKSwgbmV0d29ya0Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwor
fQorCitSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5VXNlciwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCksICJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKTsKK30KKworUmVz
b3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlv
biwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGVycm9yTWVzc2FnZSk7Cit9CisKK1Jlc291cmNl
RXJyb3IgcHJpbnRFcnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsK
KworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50RXJyb3JH
ZW5lcmFsLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwg
ZXJyb3JNZXNzYWdlKTsKK30KKworUmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihj
b25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKK3sKKyAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpOworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwg
UHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRl
ci0+dXJsKCkgOiBLVVJMKCksICJQcmludGVyIG5vdCBmb3VuZCIpOworfQorCitSZXNvdXJjZUVy
cm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250
ZXh0KQoreworICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4
dC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CisKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9ySW52YWxpZFBhZ2VSYW5nZSwg
ZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksICJJbnZhbGlk
IHBhZ2UgcmFuZ2UiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkzNzJhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvRXJyb3JzRWZsLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBFcnJvcnNFZmxfaAorI2RlZmluZSBFcnJvcnNFZmxfaAorCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQcmludENvbnRleHQ7
CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKKworc3RhdGljIGNvbnN0IGNoYXIgZXJyb3JEb21haW5OZXR3b3JrW10g
PSAiV2ViS2l0TmV0d29ya0Vycm9yIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVycm9yRG9tYWluUG9s
aWN5W10gPSAiV2ViS2l0UG9saWN5RXJyb3IiOworc3RhdGljIGNvbnN0IGNoYXIgZXJyb3JEb21h
aW5QbHVnaW5bXSA9ICJXZWJLaXRQbHVnaW5FcnJvciI7CitzdGF0aWMgY29uc3QgY2hhciBlcnJv
ckRvbWFpbkRvd25sb2FkW10gPSAiV2ViS2l0RG93bmxvYWRFcnJvciI7CitzdGF0aWMgY29uc3Qg
Y2hhciBlcnJvckRvbWFpblByaW50W10gPSAiV2ViS2l0UHJpbnRFcnJvciI7CisKK2VudW0gTmV0
d29ya0Vycm9yIHsKKyAgICBOZXR3b3JrRXJyb3JGYWlsZWQgPSAzOTksCisgICAgTmV0d29ya0Vy
cm9yVHJhbnNwb3J0ID0gMzAwLAorICAgIE5ldHdvcmtFcnJvclVua25vd25Qcm90b2NvbCA9IDMw
MSwKKyAgICBOZXR3b3JrRXJyb3JDYW5jZWxsZWQgPSAzMDIsCisgICAgTmV0d29ya0Vycm9yRmls
ZURvZXNOb3RFeGlzdCA9IDMwMworfTsKKworLy8gU3luYydkIHdpdGggTWFjJ3MgV2ViS2l0IEVy
cm9ycyBhdDoKKy8vIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3JzW1ByaXZhdGVd
LmgKK2VudW0gUG9saWN5RXJyb3IgeworICAgIFBvbGljeUVycm9yRmFpbGVkID0gMTk5LAorICAg
IFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlID0gMTAwLAorICAgIFBvbGljeUVycm9yQ2Fu
bm90U2hvd1VSTCA9IDEwMSwKKyAgICBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UgPSAxMDIsCisgICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9y
dCA9IDEwMworfTsKKworZW51bSBQbHVnaW5FcnJvciB7CisgICAgUGx1Z2luRXJyb3JGYWlsZWQg
PSAyOTksCisgICAgUGx1Z2luRXJyb3JDYW5ub3RGaW5kUGx1Z2luID0gMjAwLAorICAgIFBsdWdp
bkVycm9yQ2Fubm90TG9hZFBsdWdpbiA9IDIwMSwKKyAgICBQbHVnaW5FcnJvckphdmFVbmF2YWls
YWJsZSA9IDIwMiwKKyAgICBQbHVnaW5FcnJvckNvbm5lY3Rpb25DYW5jZWxsZWQgPSAyMDMsCisg
ICAgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCA9IDIwNAorfTsKKworZW51bSBEb3dubG9hZEVy
cm9yIHsKKyAgICBEb3dubG9hZEVycm9yTmV0d29yayA9IDQ5OSwKKyAgICBEb3dubG9hZEVycm9y
Q2FuY2VsbGVkQnlVc2VyID0gNDAwLAorICAgIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiA9IDQw
MQorfTsKKworZW51bSBQcmludEVycm9yIHsKKyAgICBQcmludEVycm9yR2VuZXJhbCA9IDU5OSwK
KyAgICBQcmludEVycm9yUHJpbnRlck5vdEZvdW5kID0gNTAwLAorICAgIFByaW50RXJyb3JJbnZh
bGlkUGFnZVJhbmdlID0gNTAxCit9OworCitSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CitSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3IgY2Fubm90
U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworUmVzb3VyY2VFcnJv
ciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworUmVzb3Vy
Y2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKK1Jlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOworUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKK1Jlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitS
ZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgUHJpbnRDb250ZXh0KiwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworUmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihjb25z
dCBQcmludENvbnRleHQqKTsKK1Jlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
Y29uc3QgUHJpbnRDb250ZXh0Kik7CisKK30KKworI2VuZGlmIC8vIEVycm9yc0VmbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggN2QzMTNlMy4uZDFmNDM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI0IEBACisyMDEyLTA3LTE4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIGNlbnRyYWwgZXJyb3IgbWFuYWdlbWVu
dCB0byBFRkwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIHVzZSBvZiBFcnJvcnNFZmwgaGVhZGVyIGZyb20gV2ViQ29yZSBpbgorICAgICAg
ICBFRkwncyBGcmFtZUxvYWRlckNsaWVudCBub3cgdGhhdCB3ZSBoYXZlCisgICAgICAgIGEgY2Vu
dHJhbCBwbGFjZSBmb3IgZXJyb3JzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbGVEb2VzTm90RXhpc3RFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cGx1Z2luV2lsbEhh
bmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6
c2hvdWxkRmFsbEJhY2spOgorCiAyMDEyLTA3LTE3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gUmVwbGFjZSAwIGJ5IE5VTEwg
aW4gcHVibGljIGhlYWRlcnMgZG9jdW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDUw
NzJkZTIuLmQyNjk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKIAog
I2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1
ZGUgIkVycm9yc0VmbC5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oIgpAQCAtODY3
LDY5ICs4NjgsNDQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZG93bmxvYWQoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICAgICBld2tfdmlld19kb3du
bG9hZF9yZXF1ZXN0KG1fdmlldywgJmRvd25sb2FkKTsKIH0KIAotLy8gY29waWVkIGZyb20gV2Vi
S2l0L01pc2MvV2ViS2l0RXJyb3JzW1ByaXZhdGVdLmgKLWVudW0gewotICAgIFdlYktpdEVycm9y
Q2Fubm90U2hvd01JTUVUeXBlID0gMTAwLAotICAgIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCA9
IDEwMSwKLSAgICBXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Ug
PSAxMDIsCi0gICAgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywKLSAg
ICBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnSW4gPSAyMDAsCi0gICAgV2ViS2l0RXJyb3JDYW5u
b3RMb2FkUGx1Z0luID0gMjAxLAotICAgIFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlID0gMjAy
LAotICAgIFdlYktpdEVycm9yUGx1Z2luV2lsbEhhbmRsZUxvYWQgPSAyMDQKLX07Ci0KLS8vIERv
bWFpbnMgdXNlZCBmb3IgUmVzb3VyY2VFcnJvcgotY29uc3QgY2hhciogY29uc3QgTlNVUkxFcnJv
ckRvbWFpbiA9ICJOU1VSTEVycm9yRG9tYWluIjsKLWNvbnN0IGNoYXIqIGNvbnN0IFdlYktpdEVy
cm9yRG9tYWluID0gIldlYktpdEVycm9yRG9tYWluIjsKLQogUmVzb3VyY2VFcnJvciBGcmFtZUxv
YWRlckNsaWVudEVmbDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIFJlc291cmNlRXJyb3IgZXJyb3IoTlNVUkxFcnJvckRvbWFpbiwgLTk5OSwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1ZXN0
IGNhbmNlbGxlZCIpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOwotICAgIHJl
dHVybiBlcnJvcjsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FuY2VsbGVkRXJyb3IocmVxdWVzdCk7
CiB9CiAKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoV2ViS2l0RXJyb3JEb21haW4sIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQs
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVl
c3QgYmxvY2tlZCIpOworICAgIHJldHVybiBXZWJDb3JlOjpibG9ja2VkRXJyb3IocmVxdWVzdCk7
CiB9CiAKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbm5vdFNob3dVUkxF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoV2ViS2l0RXJyb3JEb21haW4sIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNo
b3cgVVJMIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0
KTsKIH0KIAogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEVmbDo6aW50ZXJydXB0ZWRG
b3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViS2l0RXJyb3JEb21haW4sIFdlYktpdEVycm9yRnJh
bWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiRnJhbWUgbG9hZCBpbnRlcnJ1cHRlZCBieSBwb2xp
Y3kgY2hhbmdlIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmludGVycnVwdGVkRm9yUG9saWN5Q2hh
bmdlRXJyb3IocmVxdWVzdCk7CiB9CiAKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKE5TVVJMRXJyb3JEb21haW4sIFdlYktp
dEVycm9yQ2Fubm90U2hvd01JTUVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNob3cgbWltZXR5cGUiKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IocmVzcG9uc2UpOwogfQogCiBSZXNvdXJj
ZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
TlNVUkxFcnJvckRvbWFpbiwgLTk5OCAvKiAjIyMgKi8sIHJlc3BvbnNlLnVybCgpLnN0cmluZygp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIGRvZXMgbm90IGV4aXN0Iik7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihyZXNwb25zZSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoV2ViS2l0RXJyb3JEb21haW4sIFdlYktpdEVycm9yUGx1Z2luV2lsbEhhbmRsZUxv
YWQsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJQ
bHVnaW4gd2lsbCBoYW5kbGUgbG9hZCIpOworICAgIHJldHVybiBXZWJDb3JlOjpwbHVnaW5XaWxs
SGFuZGxlTG9hZEVycm9yKHJlc3BvbnNlKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgcmV0
dXJuICEoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSB8fCBlcnJvci5lcnJvckNvZGUoKSA9PSBXZWJL
aXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgfHwgZXJyb3IuZXJyb3JD
b2RlKCkgPT0gV2ViS2l0RXJyb3JQbHVnaW5XaWxsSGFuZGxlTG9hZCk7CisgICAgcmV0dXJuICEo
ZXJyb3IuaXNDYW5jZWxsYXRpb24oKSB8fCBlcnJvci5lcnJvckNvZGUoKSA9PSBQb2xpY3lFcnJv
ckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgfHwgZXJyb3IuZXJyb3JDb2RlKCkg
PT0gUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDJhOWM0NC4uNDJkYjdj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA3LTE4ICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIGNl
bnRyYWwgZXJyb3IgbWFuYWdlbWVudCB0byBFRkwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHVzZSBvZiBFcnJvcnNFZmwgaGVhZGVyIGZy
b20gV2ViQ29yZSBpbgorICAgICAgICBXZWJLaXQyLCBmb3IgRXdrX1dlYl9FcnJvciBhbmQgV2Vi
RXJyb3JzRWZsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5j
cHA6CisgICAgICAgIChld2tfd2ViX2Vycm9yX3R5cGVfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjppbnRlcnJ1cHRlZEZvclBv
bGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Y2Fubm90U2hvd01JTUVUeXBlRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKToKKwogMjAxMi0wNy0xNyAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
IFJlcGxhY2UgMCBieSBOVUxMIGluIHB1YmxpYyBoZWFkZXJzIGRvY3VtZW50YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKaW5k
ZXggZjE2ZmIyYy4uZTZlM2ViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCiAKKyNpbmNsdWRlICJFcnJvcnNF
ZmwuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVk
ZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCkBAIC0zNCwxMSArMzUsOSBAQAogI2luY2x1ZGUg
PFdLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLS8vIENvcGllZCBm
cm9tIEVycm9yc0d0ay5oIHdoaWNoIGlzIHVzZWQgYnkgRG93bmxvYWRTb3VwLmNwcC4KLXN0YXRp
YyBjb25zdCBjaGFyIGVycm9yRG9tYWluRG93bmxvYWRbXSA9ICJXZWJLaXREb3dubG9hZEVycm9y
IjsKLQogc3RydWN0IF9Fd2tfV2ViX0Vycm9yIHsKICAgICBXS1JldGFpblB0cjxXS0Vycm9yUmVm
PiB3a0Vycm9yOwogCkBAIC04MywxMiArODIsMTYgQEAgRXdrX1dlYl9FcnJvcl9UeXBlIGV3a193
ZWJfZXJyb3JfdHlwZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHdrRG9tYWluKEFkb3B0V0ssIFdLRXJyb3JDb3B5RG9tYWluKHdr
RXJyb3IpKTsKICAgICBXVEY6OlN0cmluZyBlcnJvckRvbWFpbiA9IHRvV1RGU3RyaW5nKHdrRG9t
YWluLmdldCgpKTsKIAotICAgIGlmIChlcnJvckRvbWFpbiA9PSBTdHJpbmcoZ19xdWFya190b19z
dHJpbmcoU09VUF9IVFRQX0VSUk9SKSkpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZ
UEVfSFRUUDsKLSAgICBpZiAoZXJyb3JEb21haW4gPT0gU3RyaW5nKGdfcXVhcmtfdG9fc3RyaW5n
KEdfSU9fRVJST1IpKSkKLSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQRV9JTzsKKyAg
ICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5OZXR3b3JrKQorICAgICAgICByZXR1cm4g
RVdLX1dFQl9FUlJPUl9UWVBFX05FVFdPUks7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9y
RG9tYWluUG9saWN5KQorICAgICAgICByZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX1BPTElDWTsK
KyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5QbHVnaW4pCisgICAgICAgIHJldHVy
biBFV0tfV0VCX0VSUk9SX1RZUEVfUExVR0lOOwogICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJv
ckRvbWFpbkRvd25sb2FkKQogICAgICAgICByZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX0RPV05M
T0FEOworICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblByaW50KQorICAgICAgICBy
ZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UOwogICAgIHJldHVybiBFV0tfV0VCX0VSUk9S
X1RZUEVfSU5URVJOQUw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfZXJyb3IuaAppbmRleCAyZDk2NjY1Li40YmEwYzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oCkBAIC00NCw5ICs0
NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwogdHlw
ZWRlZiBlbnVtIHsKICAgICBFV0tfV0VCX0VSUk9SX1RZUEVfTk9ORSwKICAgICBFV0tfV0VCX0VS
Uk9SX1RZUEVfSU5URVJOQUwsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX0hUVFAsCi0gICAgRVdL
X1dFQl9FUlJPUl9UWVBFX0lPLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9ET1dOTE9BRAorICAg
IEVXS19XRUJfRVJST1JfVFlQRV9ORVRXT1JLLAorICAgIEVXS19XRUJfRVJST1JfVFlQRV9QT0xJ
Q1ksCisgICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BMVUdJTiwKKyAgICBFV0tfV0VCX0VSUk9SX1RZ
UEVfRE9XTkxPQUQsCisgICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UCiB9IEV3a19XZWJfRXJy
b3JfVHlwZTsKIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAppbmRleCBkZGE5MzcyLi45
ZDhkZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKQEAgLTI2LDggKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKIAotI2luY2x1ZGUgIldL
RXJyb3IuaCIKLSNpbmNsdWRlICJXZWJFcnJvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3Jz
RWZsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KQEAgLTM2LDQ3ICszNSwzOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLS8vIEZJWE1FOiBFeHBvcnQgZm9sbG93aW5nIGVycm9yIGNvZGVz
IHNvIHRoYXQgYXBwbGljYXRpb24gY2FuIHVuZGVyc3RhbmQuCi0vLyBXZSBzaG91bGQgZXN0YWJs
aXNoIEVmbCBwb3J0J3MgZXJyb3Igc3lzdGVtIGJlY2F1c2UgYXBwbGljYXRpb24gY2Fubm90IHVu
ZGVyc3RhbmQgdGhvc2UgbG9jYWwgZGVmaW5lLgotLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MDc4MyBmb3IgZGV0YWlsLgotZW51bSB7Ci0gICAga1dLRXJy
b3JDb2RlQ2FuY2VsbGVkID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwMCwKLSAgICBr
V0tFcnJvckNvZGVGaWxlRG9lc05vdEV4aXN0ID0gICAgICAgICAgICAgICAgICAgICAgMzAxLAot
fTsKLQogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVy
cm9yRG9tYWluKCksIGtXS0Vycm9yQ29kZUNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgIlJlcXVlc3QgY2FuY2VsbGVkIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhbmNlbGxlZEVy
cm9yKHJlcXVlc3QpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJy
b3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9yQ29kZUNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiUmVxdWVzdCBibG9ja2VkIik7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAogUmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tF
cnJvckNvZGVDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ2Fubm90IHNo
b3cgVVJMIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0
KTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50
ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIkZyYW1lIGxv
YWQgaW50ZXJydXB0ZWQgYnkgcG9saWN5IGNoYW5nZSIpOworICAgIHJldHVybiBXZWJDb3JlOjpp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKHJlcXVlc3QpOwogfQogCiBSZXNvdXJjZUVy
cm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVycm9yOjp3ZWJLaXRFcnJvckRv
bWFpbigpLCBrV0tFcnJvckNvZGVDYW5ub3RTaG93TUlNRVR5cGUsIHJlc3BvbnNlLnVybCgpLnN0
cmluZygpLCAiQ2Fubm90IHNob3cgbWltZXR5cGUiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2Fu
bm90U2hvd01JTUVUeXBlRXJyb3IocmVzcG9uc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIGZpbGVE
b2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dL
RXJyb3JDb2RlRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksICJGaWxl
IGRvZXMgbm90IGV4aXN0Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVEb2VzTm90RXhpc3RF
cnJvcihyZXNwb25zZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JDb2RlUGx1
Z0luV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAiUGx1Z2luIHdpbGwg
aGFuZGxlIGxvYWQiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihyZXNwb25zZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZiMDVhNGYuLjk5YTRkOTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0wNy0xOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVt
ZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBjZW50cmFsIGVycm9yIG1hbmFnZW1l
bnQgdG8gRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFwIFdlYktpdE5ldHdvcmtFcnJvciB0byBOU1VSTEVycm9yRG9tYWluIHdoZW4KKyAg
ICAgICAgcHJpbnRpbmcgaW4gRHVtcFJlbmRlclRyZWUgc28gdGhhdCB0aGUgb3V0cHV0CisgICAg
ICAgIG1hdGNoZXMgdGhlIGV4cGVjdGVkIG9uZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHA6CisgICAgICAgIChkZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdCk6CisKIDIwMTItMDctMTggIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMu
bWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0VGTF0gQnVpbGQgZml4IGluIFdlYktp
dFRlc3RSdW5uZXIuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJl
bmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJU
cmVlQ2hyb21lLmNwcAppbmRleCA4YTkwMWM0Li45ZWFkMWRiIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAgLTM1OSwxNiArMzU5
LDIzIEBAIHN0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNv
bnN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zCiAKIHN0YXRpYyBDU3RyaW5nIGRlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKIHsK
LSAgICBTdHJpbmcgcmV0ID0gIjxOU0Vycm9yIGRvbWFpbiAiOwotICAgIHJldCArPSBlcnJvci0+
ZG9tYWluOwotICAgIHJldCArPSAiLCBjb2RlICI7Ci0gICAgcmV0ICs9IFN0cmluZzo6bnVtYmVy
KGVycm9yLT5jb2RlKTsKLSAgICBpZiAoZXJyb3ItPmZhaWxpbmdfdXJsICYmICplcnJvci0+ZmFp
bGluZ191cmwgIT0gJ1wwJykgewotICAgICAgICByZXQgKz0gIiwgZmFpbGluZyBVUkwgXCIiOwot
ICAgICAgICByZXQgKz0gZXJyb3ItPmZhaWxpbmdfdXJsOwotICAgICAgICByZXQgKz0gIlwiIjsK
KyAgICBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiA9IGVycm9yLT5kb21haW47CisgICAgaW50IGVy
cm9yQ29kZSA9IGVycm9yLT5jb2RlOworCisgICAgLy8gV2UgbmVlZCB0byBkbyBzb21lIGVycm9y
IG1hcHBpbmcgaGVyZSB0byBtYXRjaAorICAgIC8vIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucy4KKyAg
ICBpZiAoIXN0cmNtcChlcnJvci0+ZG9tYWluLCAiV2ViS2l0TmV0d29ya0Vycm9yIikpIHsKKyAg
ICAgICAgZXJyb3JEb21haW4gPSAiTlNVUkxFcnJvckRvbWFpbiI7CisgICAgICAgIGVycm9yQ29k
ZSA9IC05OTk7CiAgICAgfQotICAgIHJldCArPSAiPiI7CisKKyAgICBpZiAoIXN0cmNtcChlcnJv
ckRvbWFpbiwgIldlYktpdFBvbGljeUVycm9yIikpCisgICAgICAgIGVycm9yRG9tYWluID0gIldl
YktpdEVycm9yRG9tYWluIjsKKworICAgIFN0cmluZyByZXQgPSBtYWtlU3RyaW5nKCI8TlNFcnJv
ciBkb21haW4gIiwgZXJyb3JEb21haW4sICIsIGNvZGUgIiwgU3RyaW5nOjpudW1iZXIoZXJyb3JD
b2RlKSk7CisgICAgaWYgKGVycm9yLT5mYWlsaW5nX3VybCAmJiAqZXJyb3ItPmZhaWxpbmdfdXJs
ICE9ICdcMCcpCisgICAgICAgIHJldCA9IG1ha2VTdHJpbmcocmV0LCAiLCBmYWlsaW5nIFVSTCBc
IiIsIGVycm9yLT5mYWlsaW5nX3VybCwgIlwiIik7CisgICAgcmV0ID0gbWFrZVN0cmluZyhyZXQs
ICI+Iik7CiAKICAgICByZXR1cm4gcmV0LnV0ZjgoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>