<?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>122883</bug_id>
          
          <creation_ts>2013-10-15 22:29:35 -0700</creation_ts>
          <short_desc>[WK2] Convert SeccompFilters to using unique_ptr instead of OwnPtr/PassOwnPtr</short_desc>
          <delta_ts>2013-10-31 12:48:23 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Correia (qrwteyrutiyoup)">sergio</reporter>
          <assigned_to name="Sergio Correia (qrwteyrutiyoup)">sergio</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940273</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-15 22:29:35 -0700</bug_when>
    <thetext>[WK2] Convert SeccompFilters to using unique_ptr instead of OwnPtr/PassOwnPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940274</commentid>
    <comment_count>1</comment_count>
      <attachid>214340</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-15 22:31:02 -0700</bug_when>
    <thetext>Created attachment 214340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940377</commentid>
    <comment_count>2</comment_count>
      <attachid>214340</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-16 08:12:23 -0700</bug_when>
    <thetext>Comment on attachment 214340
Patch

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

Patch looks good, but please remove the unnecessary std::move calls.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60
&gt; +        return std::move(open);

No need to use std::move here. Returning a move-only object will automatically move the object.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:93
&gt; +    return std::move(open);

Ditto.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:105
&gt; +    return std::move(open);

Ditto.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/Syscall.cpp:76
&gt; +    return std::move(syscall);

Ditto.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/Syscall.cpp:98
&gt; +    return std::move(result);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940639</commentid>
    <comment_count>3</comment_count>
      <attachid>214340</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-16 20:24:20 -0700</bug_when>
    <thetext>Comment on attachment 214340
Patch

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

&gt;&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60
&gt;&gt; +        return std::move(open);
&gt; 
&gt; No need to use std::move here. Returning a move-only object will automatically move the object.

It seems to be needed for this class: 

[ 82%] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/linux/SeccompFilters/OpenSyscall.cpp.o
/home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp: In static member function &apos;static std::unique_ptr&lt;WebKit::Syscall&gt; WebKit::OpenSyscall::createFromOpenatContext(mcontext_t*)&apos;:
/home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60:16: error: invalid conversion from &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&apos; to &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&amp;&amp;&apos; [-fpermissive]
In file included from /usr/include/c++/4.8.1/memory:81:0,
                 from /home/sergio/projects/webkit/Source/WTF/wtf/StdLibExtras.h:30,
                 from /home/sergio/projects/webkit/Source/WTF/wtf/FastMalloc.h:28,
                 from /home/sergio/projects/webkit/Source/WebKit2/config.h:87,
                 from /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:26:
/usr/include/c++/4.8.1/bits/unique_ptr.h:169:2: error:   initializing argument 1 of &apos;std::unique_ptr&lt;_Tp, _Dp&gt;::unique_ptr(std::unique_ptr&lt;_Up, _Ep&gt;&amp;&amp;) [with _Up = WebKit::OpenSyscall; _Ep = std::default_delete&lt;WebKit::OpenSyscall&gt;; &lt;template-parameter-2-3&gt; = void; _Tp = WebKit::Syscall; _Dp = std::default_delete&lt;WebKit::Syscall&gt;]&apos; [-fpermissive]
/home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60:16: error: cannot convert &apos;open&apos; from type &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&apos; to type &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&amp;&amp;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940640</commentid>
    <comment_count>4</comment_count>
      <attachid>214340</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-16 20:28:41 -0700</bug_when>
    <thetext>Comment on attachment 214340
Patch

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

&gt;&gt;&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60
&gt;&gt;&gt; +        return std::move(open);
&gt;&gt; 
&gt;&gt; No need to use std::move here. Returning a move-only object will automatically move the object.
&gt; 
&gt; It seems to be needed for this class: 
&gt; 
&gt; [ 82%] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/linux/SeccompFilters/OpenSyscall.cpp.o
&gt; /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp: In static member function &apos;static std::unique_ptr&lt;WebKit::Syscall&gt; WebKit::OpenSyscall::createFromOpenatContext(mcontext_t*)&apos;:
&gt; /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60:16: error: invalid conversion from &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&apos; to &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&amp;&amp;&apos; [-fpermissive]
&gt; In file included from /usr/include/c++/4.8.1/memory:81:0,
&gt;                  from /home/sergio/projects/webkit/Source/WTF/wtf/StdLibExtras.h:30,
&gt;                  from /home/sergio/projects/webkit/Source/WTF/wtf/FastMalloc.h:28,
&gt;                  from /home/sergio/projects/webkit/Source/WebKit2/config.h:87,
&gt;                  from /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:26:
&gt; /usr/include/c++/4.8.1/bits/unique_ptr.h:169:2: error:   initializing argument 1 of &apos;std::unique_ptr&lt;_Tp, _Dp&gt;::unique_ptr(std::unique_ptr&lt;_Up, _Ep&gt;&amp;&amp;) [with _Up = WebKit::OpenSyscall; _Ep = std::default_delete&lt;WebKit::OpenSyscall&gt;; &lt;template-parameter-2-3&gt; = void; _Tp = WebKit::Syscall; _Dp = std::default_delete&lt;WebKit::Syscall&gt;]&apos; [-fpermissive]
&gt; /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60:16: error: cannot convert &apos;open&apos; from type &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&apos; to type &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&amp;&amp;&apos;

Wait, why does OpenSyscall::createFromOpenatContext return a PassOwnPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941293</commentid>
    <comment_count>5</comment_count>
      <attachid>214340</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-18 12:17:23 -0700</bug_when>
    <thetext>Comment on attachment 214340
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60
&gt;&gt;&gt;&gt; +        return std::move(open);
&gt;&gt;&gt; 
&gt;&gt;&gt; No need to use std::move here. Returning a move-only object will automatically move the object.
&gt;&gt; 
&gt;&gt; It seems to be needed for this class: 
&gt;&gt; 
&gt;&gt; [ 82%] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/linux/SeccompFilters/OpenSyscall.cpp.o
&gt;&gt; /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp: In static member function &apos;static std::unique_ptr&lt;WebKit::Syscall&gt; WebKit::OpenSyscall::createFromOpenatContext(mcontext_t*)&apos;:
&gt;&gt; /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60:16: error: invalid conversion from &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&apos; to &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&amp;&amp;&apos; [-fpermissive]
&gt;&gt; In file included from /usr/include/c++/4.8.1/memory:81:0,
&gt;&gt;                  from /home/sergio/projects/webkit/Source/WTF/wtf/StdLibExtras.h:30,
&gt;&gt;                  from /home/sergio/projects/webkit/Source/WTF/wtf/FastMalloc.h:28,
&gt;&gt;                  from /home/sergio/projects/webkit/Source/WebKit2/config.h:87,
&gt;&gt;                  from /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:26:
&gt;&gt; /usr/include/c++/4.8.1/bits/unique_ptr.h:169:2: error:   initializing argument 1 of &apos;std::unique_ptr&lt;_Tp, _Dp&gt;::unique_ptr(std::unique_ptr&lt;_Up, _Ep&gt;&amp;&amp;) [with _Up = WebKit::OpenSyscall; _Ep = std::default_delete&lt;WebKit::OpenSyscall&gt;; &lt;template-parameter-2-3&gt; = void; _Tp = WebKit::Syscall; _Dp = std::default_delete&lt;WebKit::Syscall&gt;]&apos; [-fpermissive]
&gt;&gt; /home/sergio/projects/webkit/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60:16: error: cannot convert &apos;open&apos; from type &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&apos; to type &apos;std::unique_ptr&lt;WebKit::OpenSyscall, std::default_delete&lt;WebKit::OpenSyscall&gt; &gt;&amp;&amp;&apos;
&gt; 
&gt; Wait, why does OpenSyscall::createFromOpenatContext return a PassOwnPtr?

I don&apos;t see any special reason, other than the fact that Syscall::createFromContext() returns a PassOwnPtr, and these create-from-context calls such as OpenSyscall::createFromOpenatContext() do so as well. It could probably be reworked not to do that. Would you like me to attempt something in that direction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941294</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-18 12:20:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Wait, why does OpenSyscall::createFromOpenatContext return a PassOwnPtr?
&gt; 
&gt; I don&apos;t see any special reason, other than the fact that Syscall::createFromContext() returns a PassOwnPtr, and these create-from-context calls such as OpenSyscall::createFromOpenatContext() do so as well. It could probably be reworked not to do that. Would you like me to attempt something in that direction?

Yes, please make all of these return std::unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941297</commentid>
    <comment_count>7</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-18 12:26:40 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; &gt; Wait, why does OpenSyscall::createFromOpenatContext return a PassOwnPtr?
&gt; &gt; 
&gt; &gt; I don&apos;t see any special reason, other than the fact that Syscall::createFromContext() returns a PassOwnPtr, and these create-from-context calls such as OpenSyscall::createFromOpenatContext() do so as well. It could probably be reworked not to do that. Would you like me to attempt something in that direction?
&gt; 
&gt; Yes, please make all of these return std::unique_ptr.

Wait, there&apos;s a minor misunderstanding here. The original patch did that (that was the goal, to convert to using unique_ptr), but you pointed out that I wouldn&apos;t need the std::move() because the objects would be moved automatically.
Then I said that I would still need the std::move() calls in OpenSyscall.cpp. The PassOwnPtr you were looking at were from the current code, before conversion. Let me post an updated patch removing the unecessary std::move() calls from Syscall.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941302</commentid>
    <comment_count>8</comment_count>
      <attachid>214596</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-18 12:48:52 -0700</bug_when>
    <thetext>Created attachment 214596
=v2

Removed unecessary std::move() calls in Syscall.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941433</commentid>
    <comment_count>9</comment_count>
      <attachid>214596</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-18 19:16:49 -0700</bug_when>
    <thetext>Comment on attachment 214596
=v2

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

&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:60
&gt; +        return std::move(open);

No need for std::move here.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:93
&gt; +    return std::move(open);

No need for std::move here.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp:105
&gt; +    return std::move(open);

No need for std::move here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941434</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-18 19:17:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Then I said that I would still need the std::move() calls in OpenSyscall.cpp.

Why? I don’t get it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942118</commentid>
    <comment_count>11</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-21 18:29:13 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; Then I said that I would still need the std::move() calls in OpenSyscall.cpp.
&gt; 
&gt; Why? I don’t get it?

This question has insights on the issue at hand:
http://stackoverflow.com/questions/17481018/when-is-explicit-move-needed-for-a-return-statement

Basically we need the explicit move in there because the return type is std::unique_ptr&lt;Syscall&gt; and we are returning a std::unique_ptr&lt;OpenSyscall&gt;. The compiler message is this: 

error: invalid conversion from &apos;std::unique_ptr&lt;WebKit::OpenSyscall&gt;&apos; to &apos;std::unique_ptr&lt;WebKit::OpenSyscall&gt;&amp;&amp;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945565</commentid>
    <comment_count>12</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-31 10:19:52 -0700</bug_when>
    <thetext>Hi Darin/Anders,

could you please take another look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945641</commentid>
    <comment_count>13</comment_count>
      <attachid>214596</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 12:48:19 -0700</bug_when>
    <thetext>Comment on attachment 214596
=v2

Clearing flags on attachment: 214596

Committed r158388: &lt;http://trac.webkit.org/changeset/158388&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945642</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 12:48:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214340</attachid>
            <date>2013-10-15 22:31:02 -0700</date>
            <delta_ts>2013-10-18 12:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122883-20131016023109.patch</filename>
            <type>text/plain</type>
            <size>15538</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODk4NmMzOTZlNjZjYWM5
MDgyYjg2NWE5MWYwOGJlNmYxZmU3MDZkMC4uOTM3YjZkODdmYzk4MTY4OGMzYjEwY2ZhYmMxOTcz
ZDY4NGFlNGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDEzLTEwLTE1ICBTZXJn
aW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CiAKKyAgICAgICAgW1dL
Ml0gQ29udmVydCBTZWNjb21wRmlsdGVycyB0byB1c2luZyB1bmlxdWVfcHRyIGluc3RlYWQgb2Yg
T3duUHRyL1Bhc3NPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL09wZW5TeXNjYWxsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6T3BlblN5c2NhbGw6OmNyZWF0ZUZyb21PcGVuYXRDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6T3BlblN5c2NhbGw6OmNyZWF0ZUZyb21DcmVhdENvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpPcGVuU3lzY2FsbDo6ZXhlY3V0ZSk6CisgICAgICAgICogU2hhcmVk
L2xpbnV4L1NlY2NvbXBGaWx0ZXJzL09wZW5TeXNjYWxsLmg6CisgICAgICAgICogU2hhcmVkL2xp
bnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
SUdTWVNIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6ZGlz
cGF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpTZWNjb21wQnJva2VyOjpydW5Mb29wKToKKyAgICAg
ICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lnYWN0aW9uU3lzY2FsbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNpZ2FjdGlvblN5c2NhbGw6OmNyZWF0ZUZyb21Db250ZXh0KToKKyAg
ICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lnYWN0aW9uU3lzY2FsbC5oOgor
ICAgICAgICAqIFNoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9jbWFza1N5c2NhbGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaWdwcm9jbWFza1N5c2NhbGw6OmNyZWF0ZUZyb21Db250
ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tT
eXNjYWxsLmg6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1N5c2NhbGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTeXNjYWxsOjpjcmVhdGVGcm9tQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OlN5c2NhbGw6OmNyZWF0ZUZyb21EZWNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6U3lzY2FsbFJlc3VsdDo6Y3JlYXRlRnJvbURlY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9s
aW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxsLmg6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1Nl
Y2NvbXBGaWx0ZXJzL1N5c2NhbGxQb2xpY3kuY3BwOgorCisyMDEzLTEwLTE1ICBTZXJnaW8gQ29y
cmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKICAgICAgICAgW0VGTF1bV0sy
XSBNYWtlIFNlY2NvbXBGaWx0ZXJzIGJ1aWxkIGFnYWluIGFmdGVyIHIxNTYzNDkgYW5kIHIxNTYz
NTMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjg3
MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRl
cnMvT3BlblN5c2NhbGwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBG
aWx0ZXJzL09wZW5TeXNjYWxsLmNwcAppbmRleCAyYmU0OTM4Y2E5Mjg2MjkwMzYxMWJlZmJkNGE2
OTBmMGQ4ZDAzOWNkLi4zMDIwZWFlMjQxMzMzODc5Y2UzNzdlYjAzZDJhNGM5ZTIxM2FhN2E1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvT3Bl
blN5c2NhbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmls
dGVycy9PcGVuU3lzY2FsbC5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAgQ09NUElMRV9BU1NFUlQoIU9f
UkRPTkxZLCBPX1JET05MWSk7CiBDT01QSUxFX0FTU0VSVChPX1dST05MWSA9PSAxLCBPX1dST05M
WSk7CiBDT01QSUxFX0FTU0VSVChPX1JEV1IgPT0gMiwgT19SRFdSKTsKIAotUGFzc093blB0cjxT
eXNjYWxsPiBPcGVuU3lzY2FsbDo6Y3JlYXRlRnJvbU9wZW5hdENvbnRleHQobWNvbnRleHRfdCog
Y29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBPcGVuU3lzY2FsbDo6Y3JlYXRlRnJv
bU9wZW5hdENvbnRleHQobWNvbnRleHRfdCogY29udGV4dCkKIHsKLSAgICBPd25QdHI8T3BlblN5
c2NhbGw+IG9wZW4gPSBhZG9wdFB0cihuZXcgT3BlblN5c2NhbGwoMCkpOworICAgIGF1dG8gb3Bl
biA9IHN0ZDo6bWFrZV91bmlxdWU8T3BlblN5c2NhbGw+KG51bGxwdHIpOwogCiAgICAgb3Blbi0+
c2V0RmxhZ3MoY29udGV4dC0+Z3JlZ3NbUkVHX0FSRzJdKTsKICAgICBvcGVuLT5zZXRNb2RlKGNv
bnRleHQtPmdyZWdzW1JFR19BUkczXSk7CkBAIC01Nyw3ICs1Nyw3IEBAIFBhc3NPd25QdHI8U3lz
Y2FsbD4gT3BlblN5c2NhbGw6OmNyZWF0ZUZyb21PcGVuYXRDb250ZXh0KG1jb250ZXh0X3QqIGNv
bnRleHQpCiAKICAgICBpZiAocGF0aFswXSA9PSAnLycpIHsKICAgICAgICAgb3Blbi0+c2V0UGF0
aChwYXRoKTsKLSAgICAgICAgcmV0dXJuIG9wZW4ucmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
c3RkOjptb3ZlKG9wZW4pOwogICAgIH0KIAogICAgIHN0cnVjdCBzdGF0IHBhdGhTdGF0OwpAQCAt
OTAsMTkgKzkwLDE5IEBAIFBhc3NPd25QdHI8U3lzY2FsbD4gT3BlblN5c2NhbGw6OmNyZWF0ZUZy
b21PcGVuYXRDb250ZXh0KG1jb250ZXh0X3QqIGNvbnRleHQpCiAgICAgc3ByaW50ZigmZmRQYXRo
W3NpemVdLCAiLyVzIiwgcGF0aCk7CiAgICAgb3Blbi0+c2V0UGF0aChmZFBhdGgpOwogCi0gICAg
cmV0dXJuIG9wZW4ucmVsZWFzZSgpOworICAgIHJldHVybiBzdGQ6Om1vdmUob3Blbik7CiB9CiAK
LVBhc3NPd25QdHI8U3lzY2FsbD4gT3BlblN5c2NhbGw6OmNyZWF0ZUZyb21DcmVhdENvbnRleHQo
bWNvbnRleHRfdCogY29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBPcGVuU3lzY2Fs
bDo6Y3JlYXRlRnJvbUNyZWF0Q29udGV4dChtY29udGV4dF90KiBjb250ZXh0KQogewotICAgIE9w
ZW5TeXNjYWxsKiBvcGVuID0gbmV3IE9wZW5TeXNjYWxsKDApOworICAgIGF1dG8gb3BlbiA9IHN0
ZDo6bWFrZV91bmlxdWU8T3BlblN5c2NhbGw+KG51bGxwdHIpOwogCiAgICAgb3Blbi0+c2V0UGF0
aChDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnRleHQtPmdyZWdzW1JFR19BUkcw
XSkpKTsKICAgICBvcGVuLT5zZXRGbGFncyhPX0NSRUFUIHwgT19XUk9OTFkgfCBPX1RSVU5DKTsK
ICAgICBvcGVuLT5zZXRNb2RlKGNvbnRleHQtPmdyZWdzW1JFR19BUkcxXSk7CiAgICAgb3Blbi0+
c2V0Q29udGV4dChjb250ZXh0KTsKIAotICAgIHJldHVybiBhZG9wdFB0cihvcGVuKTsKKyAgICBy
ZXR1cm4gc3RkOjptb3ZlKG9wZW4pOwogfQogCiBPcGVuU3lzY2FsbDo6T3BlblN5c2NhbGwobWNv
bnRleHRfdCogY29udGV4dCkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIE9wZW5TeXNjYWxsOjpz
ZXRSZXN1bHQoY29uc3QgU3lzY2FsbFJlc3VsdCogcmVzdWx0KQogICAgICAgICBjb250ZXh0KCkt
PmdyZWdzW1JFR19TWVNDQUxMXSA9IC1vcGVuUmVzdWx0LT5lcnJvck51bWJlcigpOwogfQogCi1Q
YXNzT3duUHRyPFN5c2NhbGxSZXN1bHQ+IE9wZW5TeXNjYWxsOjpleGVjdXRlKGNvbnN0IFN5c2Nh
bGxQb2xpY3kmIHBvbGljeSkKK3N0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsUmVzdWx0PiBPcGVuU3lz
Y2FsbDo6ZXhlY3V0ZShjb25zdCBTeXNjYWxsUG9saWN5JiBwb2xpY3kpCiB7CiAgICAgaWYgKCFz
dHJuY21wKCIvcHJvYy9zZWxmLyIsIG1fcGF0aC5kYXRhKCksIDExKSkgewogICAgICAgICBTdHJp
bmcgcmVzb2x2ZWRTZWxmUGF0aCA9IEFTQ0lJTGl0ZXJhbCgiL3Byb2MvIikgKyBTdHJpbmc6Om51
bWJlcihnZXRwcGlkKCkpICsgJm1fcGF0aC5kYXRhKClbMTBdOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IFBhc3NPd25QdHI8U3lzY2FsbFJlc3VsdD4gT3BlblN5c2NhbGw6OmV4ZWN1dGUoY29uc3QgU3lz
Y2FsbFBvbGljeSYgcG9saWN5KQogICAgICAgICBwZXJtaXNzaW9uID0gc3RhdGljX2Nhc3Q8U3lz
Y2FsbFBvbGljeTo6UGVybWlzc2lvbj4ocGVybWlzc2lvbiB8IFN5c2NhbGxQb2xpY3k6OldyaXRl
KTsKIAogICAgIGlmICghcG9saWN5Lmhhc1Blcm1pc3Npb25Gb3JQYXRoKG1fcGF0aC5kYXRhKCks
IHBlcm1pc3Npb24pKQotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5TeXNjYWxsUmVz
dWx0KC0xLCBFQUNDRVMpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T3BlblN5
c2NhbGxSZXN1bHQ+KC0xLCBFQUNDRVMpOwogCiAgICAgLy8gUGVybWlzc2lvbiBncmFudGVkLCBl
eGVjdXRlIHRoZSBzeXNjYWxsLiBUaGUgc3lzY2FsbCBtaWdodCBzdGlsbAogICAgIC8vIGZhaWwg
YmVjYXVzZSBvZiBoYXJkIHBlcm1pc3Npb25zIGVuZm9yY2VkIGJ5IHRoZSBmaWxlc3lzdGVtIGFu
ZApAQCAtMTU4LDcgKzE1OCw3IEBAIFBhc3NPd25QdHI8U3lzY2FsbFJlc3VsdD4gT3BlblN5c2Nh
bGw6OmV4ZWN1dGUoY29uc3QgU3lzY2FsbFBvbGljeSYgcG9saWN5KQogICAgIGludCBmZCA9IG9w
ZW4obV9wYXRoLmRhdGEoKSwgbV9mbGFncywgbV9tb2RlKTsKICAgICBpbnQgZXJyb3JOdW1iZXIg
PSBmZCA9PSAtMSA/IGVycm5vIDogMDsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgT3BlblN5
c2NhbGxSZXN1bHQoZmQsIGVycm9yTnVtYmVyKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8T3BlblN5c2NhbGxSZXN1bHQ+KGZkLCBlcnJvck51bWJlcik7CiB9CiAKIHZvaWQgT3BlblN5
c2NhbGw6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvT3Bl
blN5c2NhbGwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9P
cGVuU3lzY2FsbC5oCmluZGV4IGMzMDM1ODhlNDZmNjI3YzQ4Yzg3NjAyNTBhNzYyNDY0OTc2MjY0
NzQuLmU2NDZkMWJmODE0NjUzNDk0M2Q4OGRhMzQ2ZDE4NDZlM2FiY2YxMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9PcGVuU3lzY2FsbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9PcGVuU3lz
Y2FsbC5oCkBAIC00MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBPcGVu
U3lzY2FsbCA6IHB1YmxpYyBTeXNjYWxsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxTeXNjYWxsPiBjcmVhdGVGcm9tT3BlbmF0Q29udGV4dChtY29udGV4dF90Kik7Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8U3lzY2FsbD4gY3JlYXRlRnJvbUNyZWF0Q29udGV4dChtY29udGV4dF90
Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBjcmVhdGVGcm9tT3BlbmF0
Q29udGV4dChtY29udGV4dF90Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxs
PiBjcmVhdGVGcm9tQ3JlYXRDb250ZXh0KG1jb250ZXh0X3QqKTsKIAogICAgIGV4cGxpY2l0IE9w
ZW5TeXNjYWxsKG1jb250ZXh0X3QqKTsKIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTeXNjYWxsIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHQo
Y29uc3QgU3lzY2FsbFJlc3VsdCopOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxTeXNjYWxsUmVz
dWx0PiBleGVjdXRlKGNvbnN0IFN5c2NhbGxQb2xpY3kmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxTeXNjYWxsUmVzdWx0PiBleGVjdXRlKGNvbnN0IFN5c2NhbGxQb2xpY3kmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNj
b21wQnJva2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVy
cy9TZWNjb21wQnJva2VyLmNwcAppbmRleCBmYWNhNTlmNjRiZjg3NTIzNGMwYzM4ZDQ5NDY1MGFh
NjBiMzBlODM1Li5kOWQzYjg4ZjIyZTRlNTAzZDc0MmQyZDY0ZmZkZGNiNjI2M2Y3ZmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29t
cEJyb2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0
ZXJzL1NlY2NvbXBCcm9rZXIuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIHZvaWQgU0lH
U1lTSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGRhdGEpCiAgICAg
Ly8gc3lzY2FsbCBsb2NhbGx5IHdpdGhvdXQgc2VuZGluZyBpdCB0byB0aGUgYnJva2VyIHByb2Nl
c3MuIEluIHRoaXMgY2FzZSwKICAgICAvLyB3ZSBqdXN0IHJldHVybi4gRXhhbXBsZXMgb2YgbG9j
YWxseSByZXNvbHZlZCBzeXNjYWxscyBhcmUgdGhlIG9uZXMKICAgICAvLyB3aXRoIGNhY2hlZCBy
ZXNvdXJjZXMgYW5kIGludmFsaWQgYXJndW1lbnRzLgotICAgIE93blB0cjxTeXNjYWxsPiBzeXNj
YWxsID0gU3lzY2FsbDo6Y3JlYXRlRnJvbUNvbnRleHQodWNvbnRleHQpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTeXNjYWxsPiBzeXNjYWxsID0gU3lzY2FsbDo6Y3JlYXRlRnJvbUNvbnRleHQodWNv
bnRleHQpOwogICAgIGlmICghc3lzY2FsbCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjAsNyAr
MjIwLDcgQEAgdm9pZCBTZWNjb21wQnJva2VyQ2xpZW50OjpkaXNwYXRjaChTeXNjYWxsKiBzeXNj
YWxsKSBjb25zdAogICAgIG1fc29ja2V0TG9jay51bmxvY2soKTsKIAogICAgIGF1dG8gZGVjb2Rl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPigoY29uc3QgdWlu
dDhfdCopIGJ1ZmZlciwgcmVjZWl2ZWRCeXRlcyk7Ci0gICAgT3duUHRyPFN5c2NhbGxSZXN1bHQ+
IHJlc3VsdCA9IFN5c2NhbGxSZXN1bHQ6OmNyZWF0ZUZyb21EZWNvZGVyKGRlY29kZXIuZ2V0KCks
IGZkKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbFJlc3VsdD4gcmVzdWx0ID0gU3lzY2Fs
bFJlc3VsdDo6Y3JlYXRlRnJvbURlY29kZXIoZGVjb2Rlci5nZXQoKSwgZmQpOwogICAgIGlmICgh
cmVzdWx0KQogICAgICAgICBDUkFTSCgpOwogCkBAIC0zMjUsMTEgKzMyNSwxMSBAQCBOT19SRVRV
Uk4gdm9pZCBTZWNjb21wQnJva2VyOjpydW5Mb29wKGludCBzb2NrZXQpCiAgICAgICAgICAgICBl
eGl0KHJlY2VpdmVkQnl0ZXMgPyBFWElUX0ZBSUxVUkUgOiBFWElUX1NVQ0NFU1MpOwogCiAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyPigoY29uc3QgdWludDhfdCopIGJ1ZmZlciwgcmVjZWl2ZWRCeXRlcyk7Ci0gICAgICAgIE93
blB0cjxTeXNjYWxsPiBzeXNjYWxsID0gU3lzY2FsbDo6Y3JlYXRlRnJvbURlY29kZXIoZGVjb2Rl
ci5nZXQoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBzeXNjYWxsID0gU3lz
Y2FsbDo6Y3JlYXRlRnJvbURlY29kZXIoZGVjb2Rlci5nZXQoKSk7CiAgICAgICAgIGlmICghc3lz
Y2FsbCkKICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKIAotICAgICAgICBPd25QdHI8
U3lzY2FsbFJlc3VsdD4gcmVzdWx0ID0gc3lzY2FsbC0+ZXhlY3V0ZShtX3BvbGljeSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsUmVzdWx0PiByZXN1bHQgPSBzeXNjYWxsLT5leGVj
dXRlKG1fcG9saWN5KTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBleGl0KEVY
SVRfRkFJTFVSRSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9T
ZWNjb21wRmlsdGVycy9TaWdhY3Rpb25TeXNjYWxsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdhY3Rpb25TeXNjYWxsLmNwcAppbmRleCBlYzEyZjMw
YzI5NTE0ZjQxNmM4ZTQ5YjQ1NDQ2YzNmZjI0NzcwM2U2Li4wYjJlOWNkNGNiYjQ1ZTk4MzUyYjUz
NGIyOGQzZjM3ZWViMTZhNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGlu
dXgvU2VjY29tcEZpbHRlcnMvU2lnYWN0aW9uU3lzY2FsbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ2FjdGlvblN5c2NhbGwuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzT3duUHRyPFN5c2NhbGw+
IFNpZ2FjdGlvblN5c2NhbGw6OmNyZWF0ZUZyb21Db250ZXh0KG1jb250ZXh0X3QqIGNvbnRleHQp
CitzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbD4gU2lnYWN0aW9uU3lzY2FsbDo6Y3JlYXRlRnJvbUNv
bnRleHQobWNvbnRleHRfdCogY29udGV4dCkKIHsKICAgICAvLyBXZSBqdXN0IGlnbm9yZSBhbnkg
YXR0ZW1wdCBvZiBpbnN0YWxsaW5nIGEgaGFuZGxlciBmb3IgU0lHU1lTIHNpbmNlIHRoaXMKICAg
ICAvLyBzaWduYWwgaXMgbmVjZXNzYXJ5IGZvciB0aGUgc2FuZGJveCB0byB3b3JrLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ2FjdGlv
blN5c2NhbGwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9T
aWdhY3Rpb25TeXNjYWxsLmgKaW5kZXggOTA0NzZkNDZmMTA3M2RhN2RhY2EzOWY0OWNkNzNiMGJj
YTg0MDlmMy4uZWQ1MmUzZmZkMGQwZGQ5ZWIzYjkzNWEyMzUxYWZkZmU4ZmNjNjc3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ2FjdGlv
blN5c2NhbGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRl
cnMvU2lnYWN0aW9uU3lzY2FsbC5oCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RydWN0IFNpZ2FjdGlvblN5c2NhbGwgewotICAgIHN0YXRpYyBQYXNzT3duUHRyPFN5
c2NhbGw+IGNyZWF0ZUZyb21Db250ZXh0KG1jb250ZXh0X3QqKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFN5c2NhbGw+IGNyZWF0ZUZyb21Db250ZXh0KG1jb250ZXh0X3QqKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ3Byb2NtYXNrU3lzY2FsbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tTeXNjYWxsLmNwcApp
bmRleCAyNDJiODBkOGEzZmQ4ZDM1YjYzYmNkMzU4ZWVhMWUxNTM3NGYxZGQzLi44NzlmZjlkODNm
ZWQ0ZGE5YjU4M2NmNjU5NzcyY2YwZDExYTBkMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tTeXNjYWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tT
eXNjYWxsLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFz
c093blB0cjxTeXNjYWxsPiBTaWdwcm9jbWFza1N5c2NhbGw6OmNyZWF0ZUZyb21Db250ZXh0KHVj
b250ZXh0X3QqIHVjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IFNpZ3Byb2NtYXNr
U3lzY2FsbDo6Y3JlYXRlRnJvbUNvbnRleHQodWNvbnRleHRfdCogdWNvbnRleHQpCiB7CiAgICAg
Ly8gVGhpcyBzeXNjYWxsIGlzIG5ldmVyIHByb3hpZWQgdG8gdGhlIGJyb2tlciBwcm9jZXNzIGFu
ZCByZXNvbHZlZCBsb2NhbGx5LgogICAgIC8vIFdoYXQgd2UgZG8gaGVyZSBpcyBzaWxlbnRseSBy
ZW1vdmUgU0lHU1lTIGZyb20gdGhlIHNpZ25hbCBzZXQgc28gbm8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9jbWFza1N5c2NhbGwu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9jbWFz
a1N5c2NhbGwuaAppbmRleCA0ZDA0NTNhMzZhNzQ1MTJjMjM3Y2QyNjZiYTRjNTBiYWQwYjlhYmRh
Li4wMGYwMjI3NTI0Njg2MmI2NzAzMzBmZTY1OGFiOWZiMmZlM2NhYThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tTeXNj
YWxsLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1Np
Z3Byb2NtYXNrU3lzY2FsbC5oCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RydWN0IFNpZ3Byb2NtYXNrU3lzY2FsbCB7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U3lz
Y2FsbD4gY3JlYXRlRnJvbUNvbnRleHQodWNvbnRleHRfdCopOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U3lzY2FsbD4gY3JlYXRlRnJvbUNvbnRleHQodWNvbnRleHRfdCopOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bGludXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bGludXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbC5jcHAKaW5kZXggYjM5Y2FiNTU4M2UyMzJjMDFh
OTU1MGQwOGM2OGJhNDdjNmQwY2FjZi4uYzJhYWJlYTQ5ZmI1Y2VhNTI2ZDMzMjU5YjliY2Q4Y2Iw
NTQ5NmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBG
aWx0ZXJzL1N5c2NhbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNj
b21wRmlsdGVycy9TeXNjYWxsLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzT3duUHRyPFN5c2NhbGw+IFN5c2NhbGw6OmNyZWF0ZUZyb21Db250ZXh0
KHVjb250ZXh0X3QqIHVjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IFN5c2NhbGw6
OmNyZWF0ZUZyb21Db250ZXh0KHVjb250ZXh0X3QqIHVjb250ZXh0KQogewogICAgIG1jb250ZXh0
X3QqIG1jb250ZXh0ID0gJnVjb250ZXh0LT51Y19tY29udGV4dDsKIAogICAgIHN3aXRjaCAobWNv
bnRleHQtPmdyZWdzW1JFR19TWVNDQUxMXSkgewogICAgIGNhc2UgX19OUl9vcGVuOgotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5TeXNjYWxsKG1jb250ZXh0KSk7CisgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE9wZW5TeXNjYWxsPihtY29udGV4dCk7CiAgICAgY2FzZSBf
X05SX29wZW5hdDoKICAgICAgICAgcmV0dXJuIE9wZW5TeXNjYWxsOjpjcmVhdGVGcm9tT3BlbmF0
Q29udGV4dChtY29udGV4dCk7CiAgICAgY2FzZSBfX05SX2NyZWF0OgpAQCAtNjAsMjAgKzYwLDIw
IEBAIFBhc3NPd25QdHI8U3lzY2FsbD4gU3lzY2FsbDo6Y3JlYXRlRnJvbUNvbnRleHQodWNvbnRl
eHRfdCogdWNvbnRleHQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8U3lz
Y2FsbD4gU3lzY2FsbDo6Y3JlYXRlRnJvbURlY29kZXIoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyKQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IFN5c2NhbGw6OmNyZWF0ZUZyb21E
ZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlcikKIHsKICAgICBpbnQgdHlw
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBPd25QdHI8U3lzY2FsbD4gc3lzY2FsbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3lzY2FsbD4gc3lzY2FsbDsKICAgICBpZiAodHlwZSA9PSBfX05SX29wZW4pCi0gICAgICAgIHN5
c2NhbGwgPSBhZG9wdFB0cihuZXcgT3BlblN5c2NhbGwoMCkpOworICAgICAgICBzeXNjYWxsID0g
c3RkOjptYWtlX3VuaXF1ZTxPcGVuU3lzY2FsbD4obnVsbHB0cik7CiAKICAgICBpZiAoIXN5c2Nh
bGwtPmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3lzY2FsbC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShzeXNjYWxsKTsKIH0K
IAogU3lzY2FsbDo6U3lzY2FsbChpbnQgdHlwZSwgbWNvbnRleHRfdCogY29udGV4dCkKQEAgLTgy
LDIwICs4MiwyMCBAQCBTeXNjYWxsOjpTeXNjYWxsKGludCB0eXBlLCBtY29udGV4dF90KiBjb250
ZXh0KQogewogfQogCi1QYXNzT3duUHRyPFN5c2NhbGxSZXN1bHQ+IFN5c2NhbGxSZXN1bHQ6OmNy
ZWF0ZUZyb21EZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgaW50IGZk
KQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IFN5c2NhbGxSZXN1bHQ6OmNyZWF0ZUZy
b21EZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgaW50IGZkKQogewog
ICAgIGludCB0eXBlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHR5cGUpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIE93blB0cjxTeXNjYWxsUmVzdWx0PiByZXN1bHQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IHJlc3VsdDsKICAgICBpZiAodHlwZSA9PSBf
X05SX29wZW4pCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBPcGVuU3lzY2FsbFJlc3Vs
dCgtMSwgMCkpOworICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wZW5TeXNjYWxs
UmVzdWx0PigtMSwgMCk7CiAKICAgICBpZiAoIXJlc3VsdC0+ZGVjb2RlKGRlY29kZXIsIGZkKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7CiB9CiAKIFN5c2NhbGxSZXN1bHQ6OlN5c2Nh
bGxSZXN1bHQoaW50IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGlu
dXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4
L1NlY2NvbXBGaWx0ZXJzL1N5c2NhbGwuaAppbmRleCBlN2YwYjRiOGI3YmYwNDdiZDkzYTMzODM5
ZTcwNzBkZjkxZTk1NjM2Li5jYWE5NjE1Y2RlYTI0ZDNiMmEzZmZjN2QwMDc5YmRjMWQ2M2E2YzU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMv
U3lzY2FsbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVy
cy9TeXNjYWxsLmgKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIENvcmVJUEMgewogY2xhc3MgQXJndW1lbnREZWNvZGVyOwpAQCAtNjUsOCArNjUsOCBA
QCBjbGFzcyBTeXNjYWxsIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TeXNjYWxsKCkgeyB9CiAK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTeXNjYWxsPiBjcmVhdGVGcm9tQ29udGV4dCh1Y29udGV4
dF90Kik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U3lzY2FsbD4gY3JlYXRlRnJvbURlY29kZXIo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
eXNjYWxsPiBjcmVhdGVGcm9tQ29udGV4dCh1Y29udGV4dF90Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTeXNjYWxsPiBjcmVhdGVGcm9tRGVjb2RlcihDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKIAogICAgIGludCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKQEAg
LTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIG1jb250ZXh0X3QqIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHQoY29uc3Qg
U3lzY2FsbFJlc3VsdCopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U3lzY2FsbFJlc3Vs
dD4gZXhlY3V0ZShjb25zdCBTeXNjYWxsUG9saWN5JikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IGV4ZWN1dGUoY29uc3QgU3lzY2FsbFBvbGljeSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciopID0gMDsKIApAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBTeXNjYWxsUmVzdWx0IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TeXNjYWxsUmVzdWx0KCkgeyB9CiAKLSAgICBzdGF0aWMgUGFzc093
blB0cjxTeXNjYWxsUmVzdWx0PiBjcmVhdGVGcm9tRGVjb2RlcihDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqLCBpbnQgZmQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbFJlc3Vs
dD4gY3JlYXRlRnJvbURlY29kZXIoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgaW50IGZkKTsK
IAogICAgIGludCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxsUG9saWN5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxs
UG9saWN5LmNwcAppbmRleCAwODljNGJiMDNmYTk2MmM1OWIzZTI5MzVlMmEzMDgyMTFmYTRjZDA5
Li42MzYyZTI5MWJlMTM4OTQ3MTcxZmZmZmUwNzMwNmY1NTJlMTU5ZjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbFBvbGljeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1N5c2Nh
bGxQb2xpY3kuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214596</attachid>
            <date>2013-10-18 12:48:52 -0700</date>
            <delta_ts>2013-10-31 12:48:19 -0700</delta_ts>
            <desc>=v2</desc>
            <filename>bug-122883-20131018164847.patch</filename>
            <type>text/plain</type>
            <size>15467</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWIzMDRmY2I5ZGM1ZDQw
YjkzYzdjZGM2MzBkY2RmNTA1Njk0MjBiMS4uM2M4MDQ1YmMwY2IxZWI1MWRjZDY2ZDBjODMxM2Fj
NDE5YzRkNWQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTEwLTE4ICBTZXJn
aW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1dL
Ml0gQ29udmVydCBTZWNjb21wRmlsdGVycyB0byB1c2luZyB1bmlxdWVfcHRyIGluc3RlYWQgb2Yg
T3duUHRyL1Bhc3NPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL09wZW5TeXNjYWxsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6T3BlblN5c2NhbGw6OmNyZWF0ZUZyb21PcGVuYXRDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6T3BlblN5c2NhbGw6OmNyZWF0ZUZyb21DcmVhdENvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpPcGVuU3lzY2FsbDo6ZXhlY3V0ZSk6CisgICAgICAgICogU2hhcmVk
L2xpbnV4L1NlY2NvbXBGaWx0ZXJzL09wZW5TeXNjYWxsLmg6CisgICAgICAgICogU2hhcmVkL2xp
bnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
SUdTWVNIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6ZGlz
cGF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpTZWNjb21wQnJva2VyOjpydW5Mb29wKToKKyAgICAg
ICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lnYWN0aW9uU3lzY2FsbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNpZ2FjdGlvblN5c2NhbGw6OmNyZWF0ZUZyb21Db250ZXh0KToKKyAg
ICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lnYWN0aW9uU3lzY2FsbC5oOgor
ICAgICAgICAqIFNoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9jbWFza1N5c2NhbGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaWdwcm9jbWFza1N5c2NhbGw6OmNyZWF0ZUZyb21Db250
ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tT
eXNjYWxsLmg6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1N5c2NhbGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTeXNjYWxsOjpjcmVhdGVGcm9tQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OlN5c2NhbGw6OmNyZWF0ZUZyb21EZWNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6U3lzY2FsbFJlc3VsdDo6Y3JlYXRlRnJvbURlY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9s
aW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxsLmg6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1Nl
Y2NvbXBGaWx0ZXJzL1N5c2NhbGxQb2xpY3kuY3BwOgorCiAyMDEzLTEwLTE4ICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCB0aGUgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCBjb25kaXRpb24gZnJvbSB0aGUgZGVmaW5pdGlvbiBvZiBXS19B
UElfRU5BQkxFRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNj
b21wRmlsdGVycy9PcGVuU3lzY2FsbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgv
U2VjY29tcEZpbHRlcnMvT3BlblN5c2NhbGwuY3BwCmluZGV4IDJiZTQ5MzhjYTkyODYyOTAzNjEx
YmVmYmQ0YTY5MGYwZDhkMDM5Y2QuLjMwMjBlYWUyNDEzMzM4NzljZTM3N2ViMDNkMmE0YzllMjEz
YWE3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmls
dGVycy9PcGVuU3lzY2FsbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1Nl
Y2NvbXBGaWx0ZXJzL09wZW5TeXNjYWxsLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDT01QSUxFX0FT
U0VSVCghT19SRE9OTFksIE9fUkRPTkxZKTsKIENPTVBJTEVfQVNTRVJUKE9fV1JPTkxZID09IDEs
IE9fV1JPTkxZKTsKIENPTVBJTEVfQVNTRVJUKE9fUkRXUiA9PSAyLCBPX1JEV1IpOwogCi1QYXNz
T3duUHRyPFN5c2NhbGw+IE9wZW5TeXNjYWxsOjpjcmVhdGVGcm9tT3BlbmF0Q29udGV4dChtY29u
dGV4dF90KiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IE9wZW5TeXNjYWxsOjpj
cmVhdGVGcm9tT3BlbmF0Q29udGV4dChtY29udGV4dF90KiBjb250ZXh0KQogewotICAgIE93blB0
cjxPcGVuU3lzY2FsbD4gb3BlbiA9IGFkb3B0UHRyKG5ldyBPcGVuU3lzY2FsbCgwKSk7CisgICAg
YXV0byBvcGVuID0gc3RkOjptYWtlX3VuaXF1ZTxPcGVuU3lzY2FsbD4obnVsbHB0cik7CiAKICAg
ICBvcGVuLT5zZXRGbGFncyhjb250ZXh0LT5ncmVnc1tSRUdfQVJHMl0pOwogICAgIG9wZW4tPnNl
dE1vZGUoY29udGV4dC0+Z3JlZ3NbUkVHX0FSRzNdKTsKQEAgLTU3LDcgKzU3LDcgQEAgUGFzc093
blB0cjxTeXNjYWxsPiBPcGVuU3lzY2FsbDo6Y3JlYXRlRnJvbU9wZW5hdENvbnRleHQobWNvbnRl
eHRfdCogY29udGV4dCkKIAogICAgIGlmIChwYXRoWzBdID09ICcvJykgewogICAgICAgICBvcGVu
LT5zZXRQYXRoKHBhdGgpOwotICAgICAgICByZXR1cm4gb3Blbi5yZWxlYXNlKCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om1vdmUob3Blbik7CiAgICAgfQogCiAgICAgc3RydWN0IHN0YXQgcGF0aFN0
YXQ7CkBAIC05MCwxOSArOTAsMTkgQEAgUGFzc093blB0cjxTeXNjYWxsPiBPcGVuU3lzY2FsbDo6
Y3JlYXRlRnJvbU9wZW5hdENvbnRleHQobWNvbnRleHRfdCogY29udGV4dCkKICAgICBzcHJpbnRm
KCZmZFBhdGhbc2l6ZV0sICIvJXMiLCBwYXRoKTsKICAgICBvcGVuLT5zZXRQYXRoKGZkUGF0aCk7
CiAKLSAgICByZXR1cm4gb3Blbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShvcGVu
KTsKIH0KIAotUGFzc093blB0cjxTeXNjYWxsPiBPcGVuU3lzY2FsbDo6Y3JlYXRlRnJvbUNyZWF0
Q29udGV4dChtY29udGV4dF90KiBjb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IE9w
ZW5TeXNjYWxsOjpjcmVhdGVGcm9tQ3JlYXRDb250ZXh0KG1jb250ZXh0X3QqIGNvbnRleHQpCiB7
Ci0gICAgT3BlblN5c2NhbGwqIG9wZW4gPSBuZXcgT3BlblN5c2NhbGwoMCk7CisgICAgYXV0byBv
cGVuID0gc3RkOjptYWtlX3VuaXF1ZTxPcGVuU3lzY2FsbD4obnVsbHB0cik7CiAKICAgICBvcGVu
LT5zZXRQYXRoKENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29udGV4dC0+Z3JlZ3Nb
UkVHX0FSRzBdKSkpOwogICAgIG9wZW4tPnNldEZsYWdzKE9fQ1JFQVQgfCBPX1dST05MWSB8IE9f
VFJVTkMpOwogICAgIG9wZW4tPnNldE1vZGUoY29udGV4dC0+Z3JlZ3NbUkVHX0FSRzFdKTsKICAg
ICBvcGVuLT5zZXRDb250ZXh0KGNvbnRleHQpOwogCi0gICAgcmV0dXJuIGFkb3B0UHRyKG9wZW4p
OworICAgIHJldHVybiBzdGQ6Om1vdmUob3Blbik7CiB9CiAKIE9wZW5TeXNjYWxsOjpPcGVuU3lz
Y2FsbChtY29udGV4dF90KiBjb250ZXh0KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgT3BlblN5
c2NhbGw6OnNldFJlc3VsdChjb25zdCBTeXNjYWxsUmVzdWx0KiByZXN1bHQpCiAgICAgICAgIGNv
bnRleHQoKS0+Z3JlZ3NbUkVHX1NZU0NBTExdID0gLW9wZW5SZXN1bHQtPmVycm9yTnVtYmVyKCk7
CiB9CiAKLVBhc3NPd25QdHI8U3lzY2FsbFJlc3VsdD4gT3BlblN5c2NhbGw6OmV4ZWN1dGUoY29u
c3QgU3lzY2FsbFBvbGljeSYgcG9saWN5KQorc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+
IE9wZW5TeXNjYWxsOjpleGVjdXRlKGNvbnN0IFN5c2NhbGxQb2xpY3kmIHBvbGljeSkKIHsKICAg
ICBpZiAoIXN0cm5jbXAoIi9wcm9jL3NlbGYvIiwgbV9wYXRoLmRhdGEoKSwgMTEpKSB7CiAgICAg
ICAgIFN0cmluZyByZXNvbHZlZFNlbGZQYXRoID0gQVNDSUlMaXRlcmFsKCIvcHJvYy8iKSArIFN0
cmluZzo6bnVtYmVyKGdldHBwaWQoKSkgKyAmbV9wYXRoLmRhdGEoKVsxMF07CkBAIC0xNTAsNyAr
MTUwLDcgQEAgUGFzc093blB0cjxTeXNjYWxsUmVzdWx0PiBPcGVuU3lzY2FsbDo6ZXhlY3V0ZShj
b25zdCBTeXNjYWxsUG9saWN5JiBwb2xpY3kpCiAgICAgICAgIHBlcm1pc3Npb24gPSBzdGF0aWNf
Y2FzdDxTeXNjYWxsUG9saWN5OjpQZXJtaXNzaW9uPihwZXJtaXNzaW9uIHwgU3lzY2FsbFBvbGlj
eTo6V3JpdGUpOwogCiAgICAgaWYgKCFwb2xpY3kuaGFzUGVybWlzc2lvbkZvclBhdGgobV9wYXRo
LmRhdGEoKSwgcGVybWlzc2lvbikpCi0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgT3BlblN5
c2NhbGxSZXN1bHQoLTEsIEVBQ0NFUykpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxPcGVuU3lzY2FsbFJlc3VsdD4oLTEsIEVBQ0NFUyk7CiAKICAgICAvLyBQZXJtaXNzaW9uIGdy
YW50ZWQsIGV4ZWN1dGUgdGhlIHN5c2NhbGwuIFRoZSBzeXNjYWxsIG1pZ2h0IHN0aWxsCiAgICAg
Ly8gZmFpbCBiZWNhdXNlIG9mIGhhcmQgcGVybWlzc2lvbnMgZW5mb3JjZWQgYnkgdGhlIGZpbGVz
eXN0ZW0gYW5kCkBAIC0xNTgsNyArMTU4LDcgQEAgUGFzc093blB0cjxTeXNjYWxsUmVzdWx0PiBP
cGVuU3lzY2FsbDo6ZXhlY3V0ZShjb25zdCBTeXNjYWxsUG9saWN5JiBwb2xpY3kpCiAgICAgaW50
IGZkID0gb3BlbihtX3BhdGguZGF0YSgpLCBtX2ZsYWdzLCBtX21vZGUpOwogICAgIGludCBlcnJv
ck51bWJlciA9IGZkID09IC0xID8gZXJybm8gOiAwOwogCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBPcGVuU3lzY2FsbFJlc3VsdChmZCwgZXJyb3JOdW1iZXIpKTsKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxPcGVuU3lzY2FsbFJlc3VsdD4oZmQsIGVycm9yTnVtYmVyKTsKIH0KIAogdm9p
ZCBPcGVuU3lzY2FsbDo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmls
dGVycy9PcGVuU3lzY2FsbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBG
aWx0ZXJzL09wZW5TeXNjYWxsLmgKaW5kZXggYzMwMzU4OGU0NmY2MjdjNDhjODc2MDI1MGE3NjI0
NjQ5NzYyNjQ3NC4uZTY0NmQxYmY4MTQ2NTM0OTQzZDg4ZGEzNDZkMTg0NmUzYWJjZjEzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL09wZW5T
eXNjYWxsLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJz
L09wZW5TeXNjYWxsLmgKQEAgLTQwLDggKzQwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIE9wZW5TeXNjYWxsIDogcHVibGljIFN5c2NhbGwgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFN5c2NhbGw+IGNyZWF0ZUZyb21PcGVuYXRDb250ZXh0KG1jb250ZXh0X3QqKTsK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTeXNjYWxsPiBjcmVhdGVGcm9tQ3JlYXRDb250ZXh0KG1j
b250ZXh0X3QqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IGNyZWF0ZUZy
b21PcGVuYXRDb250ZXh0KG1jb250ZXh0X3QqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFN5c2NhbGw+IGNyZWF0ZUZyb21DcmVhdENvbnRleHQobWNvbnRleHRfdCopOwogCiAgICAgZXhw
bGljaXQgT3BlblN5c2NhbGwobWNvbnRleHRfdCopOwogCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFN5c2NhbGwgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHNl
dFJlc3VsdChjb25zdCBTeXNjYWxsUmVzdWx0Kik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFN5
c2NhbGxSZXN1bHQ+IGV4ZWN1dGUoY29uc3QgU3lzY2FsbFBvbGljeSYpOworICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IGV4ZWN1dGUoY29uc3QgU3lzY2FsbFBvbGlj
eSYpOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0
ZXJzL1NlY2NvbXBCcm9rZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2Nv
bXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwCmluZGV4IGZhY2E1OWY2NGJmODc1MjM0YzBjMzhk
NDk0NjUwYWE2MGIzMGU4MzUuLmQ5ZDNiODhmMjJlNGU1MDNkNzQyZDJkNjRmZmRkY2I2MjYzZjdm
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVy
cy9TZWNjb21wQnJva2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2Vj
Y29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMg
dm9pZCBTSUdTWVNIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogZGF0
YSkKICAgICAvLyBzeXNjYWxsIGxvY2FsbHkgd2l0aG91dCBzZW5kaW5nIGl0IHRvIHRoZSBicm9r
ZXIgcHJvY2Vzcy4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIGp1c3QgcmV0dXJuLiBFeGFtcGxl
cyBvZiBsb2NhbGx5IHJlc29sdmVkIHN5c2NhbGxzIGFyZSB0aGUgb25lcwogICAgIC8vIHdpdGgg
Y2FjaGVkIHJlc291cmNlcyBhbmQgaW52YWxpZCBhcmd1bWVudHMuCi0gICAgT3duUHRyPFN5c2Nh
bGw+IHN5c2NhbGwgPSBTeXNjYWxsOjpjcmVhdGVGcm9tQ29udGV4dCh1Y29udGV4dCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IHN5c2NhbGwgPSBTeXNjYWxsOjpjcmVhdGVGcm9tQ29u
dGV4dCh1Y29udGV4dCk7CiAgICAgaWYgKCFzeXNjYWxsKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIFNlY2NvbXBCcm9rZXJDbGllbnQ6OmRpc3BhdGNoKFN5c2Nh
bGwqIHN5c2NhbGwpIGNvbnN0CiAgICAgbV9zb2NrZXRMb2NrLnVubG9jaygpOwogCiAgICAgYXV0
byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb3JlSVBDOjpBcmd1bWVudERlY29kZXI+KChj
b25zdCB1aW50OF90KikgYnVmZmVyLCByZWNlaXZlZEJ5dGVzKTsKLSAgICBPd25QdHI8U3lzY2Fs
bFJlc3VsdD4gcmVzdWx0ID0gU3lzY2FsbFJlc3VsdDo6Y3JlYXRlRnJvbURlY29kZXIoZGVjb2Rl
ci5nZXQoKSwgZmQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsUmVzdWx0PiByZXN1bHQg
PSBTeXNjYWxsUmVzdWx0OjpjcmVhdGVGcm9tRGVjb2RlcihkZWNvZGVyLmdldCgpLCBmZCk7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIENSQVNIKCk7CiAKQEAgLTMyNSwxMSArMzI1LDExIEBA
IE5PX1JFVFVSTiB2b2lkIFNlY2NvbXBCcm9rZXI6OnJ1bkxvb3AoaW50IHNvY2tldCkKICAgICAg
ICAgICAgIGV4aXQocmVjZWl2ZWRCeXRlcyA/IEVYSVRfRkFJTFVSRSA6IEVYSVRfU1VDQ0VTUyk7
CiAKICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb3JlSVBDOjpBcmd1
bWVudERlY29kZXI+KChjb25zdCB1aW50OF90KikgYnVmZmVyLCByZWNlaXZlZEJ5dGVzKTsKLSAg
ICAgICAgT3duUHRyPFN5c2NhbGw+IHN5c2NhbGwgPSBTeXNjYWxsOjpjcmVhdGVGcm9tRGVjb2Rl
cihkZWNvZGVyLmdldCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IHN5c2Nh
bGwgPSBTeXNjYWxsOjpjcmVhdGVGcm9tRGVjb2RlcihkZWNvZGVyLmdldCgpKTsKICAgICAgICAg
aWYgKCFzeXNjYWxsKQogICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogCi0gICAgICAg
IE93blB0cjxTeXNjYWxsUmVzdWx0PiByZXN1bHQgPSBzeXNjYWxsLT5leGVjdXRlKG1fcG9saWN5
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IHJlc3VsdCA9IHN5c2Nh
bGwtPmV4ZWN1dGUobV9wb2xpY3kpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAg
IGV4aXQoRVhJVF9GQUlMVVJFKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ2FjdGlvblN5c2NhbGwuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ2FjdGlvblN5c2NhbGwuY3BwCmluZGV4
IGVjMTJmMzBjMjk1MTRmNDE2YzhlNDliNDU0NDZjM2ZmMjQ3NzAzZTYuLjBiMmU5Y2Q0Y2JiNDVl
OTgzNTJiNTM0YjI4ZDNmMzdlZWIxNmE3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdhY3Rpb25TeXNjYWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lnYWN0aW9uU3lzY2FsbC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8
U3lzY2FsbD4gU2lnYWN0aW9uU3lzY2FsbDo6Y3JlYXRlRnJvbUNvbnRleHQobWNvbnRleHRfdCog
Y29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBTaWdhY3Rpb25TeXNjYWxsOjpjcmVh
dGVGcm9tQ29udGV4dChtY29udGV4dF90KiBjb250ZXh0KQogewogICAgIC8vIFdlIGp1c3QgaWdu
b3JlIGFueSBhdHRlbXB0IG9mIGluc3RhbGxpbmcgYSBoYW5kbGVyIGZvciBTSUdTWVMgc2luY2Ug
dGhpcwogICAgIC8vIHNpZ25hbCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBzYW5kYm94IHRvIHdvcmsu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMv
U2lnYWN0aW9uU3lzY2FsbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBG
aWx0ZXJzL1NpZ2FjdGlvblN5c2NhbGwuaAppbmRleCA5MDQ3NmQ0NmYxMDczZGE3ZGFjYTM5ZjQ5
Y2Q3M2IwYmNhODQwOWYzLi5lZDUyZTNmZmQwZDBkZDllYjNiOTM1YTIzNTFhZmRmZThmY2M2Nzdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMv
U2lnYWN0aW9uU3lzY2FsbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNj
b21wRmlsdGVycy9TaWdhY3Rpb25TeXNjYWxsLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgU2lnYWN0aW9uU3lzY2FsbCB7Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8U3lzY2FsbD4gY3JlYXRlRnJvbUNvbnRleHQobWNvbnRleHRfdCopOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbD4gY3JlYXRlRnJvbUNvbnRleHQobWNvbnRleHRfdCop
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2lncHJvY21hc2tTeXNjYWxsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9jbWFza1N5c2Nh
bGwuY3BwCmluZGV4IDI0MmI4MGQ4YTNmZDhkMzViNjNiY2QzNThlZWExZTE1Mzc0ZjFkZDMuLjg3
OWZmOWQ4M2ZlZDRkYTliNTgzY2Y2NTk3NzJjZjBkMTFhMGQyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9jbWFza1N5c2NhbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdw
cm9jbWFza1N5c2NhbGwuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzT3duUHRyPFN5c2NhbGw+IFNpZ3Byb2NtYXNrU3lzY2FsbDo6Y3JlYXRlRnJvbUNv
bnRleHQodWNvbnRleHRfdCogdWNvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbD4gU2ln
cHJvY21hc2tTeXNjYWxsOjpjcmVhdGVGcm9tQ29udGV4dCh1Y29udGV4dF90KiB1Y29udGV4dCkK
IHsKICAgICAvLyBUaGlzIHN5c2NhbGwgaXMgbmV2ZXIgcHJveGllZCB0byB0aGUgYnJva2VyIHBy
b2Nlc3MgYW5kIHJlc29sdmVkIGxvY2FsbHkuCiAgICAgLy8gV2hhdCB3ZSBkbyBoZXJlIGlzIHNp
bGVudGx5IHJlbW92ZSBTSUdTWVMgZnJvbSB0aGUgc2lnbmFsIHNldCBzbyBubwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NpZ3Byb2NtYXNr
U3lzY2FsbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1Np
Z3Byb2NtYXNrU3lzY2FsbC5oCmluZGV4IDRkMDQ1M2EzNmE3NDUxMmMyMzdjZDI2NmJhNGM1MGJh
ZDBiOWFiZGEuLjAwZjAyMjc1MjQ2ODYyYjY3MDMzMGZlNjU4YWI5ZmIyZmUzY2FhOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TaWdwcm9j
bWFza1N5c2NhbGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZp
bHRlcnMvU2lncHJvY21hc2tTeXNjYWxsLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdHJ1Y3QgU2lncHJvY21hc2tTeXNjYWxsIHsKLSAgICBzdGF0aWMgUGFzc093
blB0cjxTeXNjYWxsPiBjcmVhdGVGcm9tQ29udGV4dCh1Y29udGV4dF90Kik7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBjcmVhdGVGcm9tQ29udGV4dCh1Y29udGV4dF90Kik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxsLmNwcAppbmRleCBiMzljYWI1NTgz
ZTIzMmMwMWE5NTUwZDA4YzY4YmE0N2M2ZDBjYWNmLi5iODRkNmExNzRhNWEyMjBjZjU5MjZkODBi
MGNkZDFhYWYyZWRjZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgv
U2VjY29tcEZpbHRlcnMvU3lzY2FsbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xp
bnV4L1NlY2NvbXBGaWx0ZXJzL1N5c2NhbGwuY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8U3lzY2FsbD4gU3lzY2FsbDo6Y3JlYXRlRnJv
bUNvbnRleHQodWNvbnRleHRfdCogdWNvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbD4g
U3lzY2FsbDo6Y3JlYXRlRnJvbUNvbnRleHQodWNvbnRleHRfdCogdWNvbnRleHQpCiB7CiAgICAg
bWNvbnRleHRfdCogbWNvbnRleHQgPSAmdWNvbnRleHQtPnVjX21jb250ZXh0OwogCiAgICAgc3dp
dGNoIChtY29udGV4dC0+Z3JlZ3NbUkVHX1NZU0NBTExdKSB7CiAgICAgY2FzZSBfX05SX29wZW46
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgT3BlblN5c2NhbGwobWNvbnRleHQpKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T3BlblN5c2NhbGw+KG1jb250ZXh0KTsKICAg
ICBjYXNlIF9fTlJfb3BlbmF0OgogICAgICAgICByZXR1cm4gT3BlblN5c2NhbGw6OmNyZWF0ZUZy
b21PcGVuYXRDb250ZXh0KG1jb250ZXh0KTsKICAgICBjYXNlIF9fTlJfY3JlYXQ6CkBAIC02MCwy
MCArNjAsMjAgQEAgUGFzc093blB0cjxTeXNjYWxsPiBTeXNjYWxsOjpjcmVhdGVGcm9tQ29udGV4
dCh1Y29udGV4dF90KiB1Y29udGV4dCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc093
blB0cjxTeXNjYWxsPiBTeXNjYWxsOjpjcmVhdGVGcm9tRGVjb2RlcihDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbD4gU3lzY2FsbDo6Y3Jl
YXRlRnJvbURlY29kZXIoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyKQogewogICAg
IGludCB0eXBlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIE93blB0cjxTeXNjYWxsPiBzeXNjYWxsOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTeXNjYWxsPiBzeXNjYWxsOwogICAgIGlmICh0eXBlID09IF9fTlJfb3BlbikKLSAg
ICAgICAgc3lzY2FsbCA9IGFkb3B0UHRyKG5ldyBPcGVuU3lzY2FsbCgwKSk7CisgICAgICAgIHN5
c2NhbGwgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wZW5TeXNjYWxsPihudWxscHRyKTsKIAogICAgIGlm
ICghc3lzY2FsbC0+ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzeXNjYWxsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3lzY2FsbDsKIH0KIAog
U3lzY2FsbDo6U3lzY2FsbChpbnQgdHlwZSwgbWNvbnRleHRfdCogY29udGV4dCkKQEAgLTgyLDIw
ICs4MiwyMCBAQCBTeXNjYWxsOjpTeXNjYWxsKGludCB0eXBlLCBtY29udGV4dF90KiBjb250ZXh0
KQogewogfQogCi1QYXNzT3duUHRyPFN5c2NhbGxSZXN1bHQ+IFN5c2NhbGxSZXN1bHQ6OmNyZWF0
ZUZyb21EZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgaW50IGZkKQor
c3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IFN5c2NhbGxSZXN1bHQ6OmNyZWF0ZUZyb21E
ZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgaW50IGZkKQogewogICAg
IGludCB0eXBlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIE93blB0cjxTeXNjYWxsUmVzdWx0PiByZXN1bHQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IHJlc3VsdDsKICAgICBpZiAodHlwZSA9PSBfX05S
X29wZW4pCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBPcGVuU3lzY2FsbFJlc3VsdCgt
MSwgMCkpOworICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wZW5TeXNjYWxsUmVz
dWx0PigtMSwgMCk7CiAKICAgICBpZiAoIXJlc3VsdC0+ZGVjb2RlKGRlY29kZXIsIGZkKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBTeXNjYWxsUmVzdWx0OjpTeXNjYWxsUmVzdWx0KGludCB0
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0
ZXJzL1N5c2NhbGwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVy
cy9TeXNjYWxsLmgKaW5kZXggZTdmMGI0YjhiN2JmMDQ3YmQ5M2EzMzgzOWU3MDcwZGY5MWU5NTYz
Ni4uY2FhOTYxNWNkZWEyNGQzYjJhM2ZmYzdkMDA3OWJkYzFkNjNhNmM1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1N5c2NhbGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbC5oCkBA
IC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBD
IHsKIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKQEAgLTY1LDggKzY1LDggQEAgY2xhc3MgU3lzY2Fs
bCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3lzY2FsbCgpIHsgfQogCi0gICAgc3RhdGljIFBh
c3NPd25QdHI8U3lzY2FsbD4gY3JlYXRlRnJvbUNvbnRleHQodWNvbnRleHRfdCopOwotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFN5c2NhbGw+IGNyZWF0ZUZyb21EZWNvZGVyKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3lzY2FsbD4gY3JlYXRl
RnJvbUNvbnRleHQodWNvbnRleHRfdCopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3lz
Y2FsbD4gY3JlYXRlRnJvbURlY29kZXIoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKICAg
ICBpbnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCkBAIC03NCw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICBtY29udGV4dF90KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0KGNvbnN0IFN5c2NhbGxSZXN1bHQq
KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFN5c2NhbGxSZXN1bHQ+IGV4ZWN1dGUoY29u
c3QgU3lzY2FsbFBvbGljeSYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTeXNj
YWxsUmVzdWx0PiBleGVjdXRlKGNvbnN0IFN5c2NhbGxQb2xpY3kmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKSA9IDA7CiAKQEAg
LTkyLDcgKzkyLDcgQEAgY2xhc3MgU3lzY2FsbFJlc3VsdCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U3lzY2FsbFJlc3VsdCgpIHsgfQogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8U3lzY2FsbFJl
c3VsdD4gY3JlYXRlRnJvbURlY29kZXIoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgaW50IGZk
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGxSZXN1bHQ+IGNyZWF0ZUZyb21E
ZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIGludCBmZCk7CiAKICAgICBpbnQgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbFBvbGljeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU3lzY2FsbFBvbGljeS5jcHAKaW5k
ZXggMDg5YzRiYjAzZmE5NjJjNTliM2UyOTM1ZTJhMzA4MjExZmE0Y2QwOS4uNjM2MmUyOTFiZTEz
ODk0NzE3MWZmZmZlMDczMDZmNTUyZTE1OWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1N5c2NhbGxQb2xpY3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TeXNjYWxsUG9saWN5LmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>