<?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>117677</bug_id>
          
          <creation_ts>2013-06-15 17:11:06 -0700</creation_ts>
          <short_desc>fourthTier: Add CFG simplification for Switch</short_desc>
          <delta_ts>2013-06-17 09:22:59 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>900820</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 17:11:06 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900821</commentid>
    <comment_count>1</comment_count>
      <attachid>204777</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 17:12:01 -0700</bug_when>
    <thetext>Created attachment 204777
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900822</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-15 17:13:36 -0700</bug_when>
    <thetext>Attachment 204777 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp:320:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp:327:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900823</commentid>
    <comment_count>3</comment_count>
      <attachid>204777</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-15 17:16:47 -0700</bug_when>
    <thetext>Comment on attachment 204777
the patch

Attachment 204777 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/922198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900824</commentid>
    <comment_count>4</comment_count>
      <attachid>204777</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-15 17:18:02 -0700</bug_when>
    <thetext>Comment on attachment 204777
the patch

Attachment 204777 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/890288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900825</commentid>
    <comment_count>5</comment_count>
      <attachid>204777</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-15 17:18:35 -0700</bug_when>
    <thetext>Comment on attachment 204777
the patch

Attachment 204777 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/873251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900827</commentid>
    <comment_count>6</comment_count>
      <attachid>204777</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-15 17:19:19 -0700</bug_when>
    <thetext>Comment on attachment 204777
the patch

Attachment 204777 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/873249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900829</commentid>
    <comment_count>7</comment_count>
      <attachid>204778</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 17:28:02 -0700</bug_when>
    <thetext>Created attachment 204778
the patch

Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900830</commentid>
    <comment_count>8</comment_count>
      <attachid>204778</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-15 17:32:02 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/846441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900831</commentid>
    <comment_count>9</comment_count>
      <attachid>204778</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-15 17:32:22 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/855477</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900832</commentid>
    <comment_count>10</comment_count>
      <attachid>204778</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-15 17:32:23 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/890289</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900833</commentid>
    <comment_count>11</comment_count>
      <attachid>204778</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-15 17:34:23 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/855478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900834</commentid>
    <comment_count>12</comment_count>
      <attachid>204778</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-15 17:55:41 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/920181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900835</commentid>
    <comment_count>13</comment_count>
      <attachid>204778</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-15 18:02:52 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/906209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900836</commentid>
    <comment_count>14</comment_count>
      <attachid>204778</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-15 18:05:12 -0700</bug_when>
    <thetext>Comment on attachment 204778
the patch

Attachment 204778 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/906212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900841</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-06-15 18:59:17 -0700</bug_when>
    <thetext>It would be nice for the ChangeLog to have a bit of information in it, like why this is a good idea, and if it speeds anything up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900842</commentid>
    <comment_count>16</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 19:04:04 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; It would be nice for the ChangeLog to have a bit of information in it, like why this is a good idea, and if it speeds anything up.

It&apos;s for completeness.  It only speeds up a microbenchmark at this point.  But broadly, we want all control constructs to be known to the CFG simplifier.

I&apos;ll add that text to the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900851</commentid>
    <comment_count>17</comment_count>
      <attachid>204780</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-15 20:22:47 -0700</bug_when>
    <thetext>Created attachment 204780
the ptach

And now with tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900853</commentid>
    <comment_count>18</comment_count>
      <attachid>204780</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-15 20:28:40 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/924189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900854</commentid>
    <comment_count>19</comment_count>
      <attachid>204780</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-15 20:30:33 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/867478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900855</commentid>
    <comment_count>20</comment_count>
      <attachid>204780</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-15 20:32:31 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/902228</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900856</commentid>
    <comment_count>21</comment_count>
      <attachid>204780</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-15 20:32:58 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/920203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900858</commentid>
    <comment_count>22</comment_count>
      <attachid>204780</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-15 20:46:35 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/920201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900859</commentid>
    <comment_count>23</comment_count>
      <attachid>204780</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-15 20:58:42 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/906242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900860</commentid>
    <comment_count>24</comment_count>
      <attachid>204780</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-15 20:58:58 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

Attachment 204780 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/873287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900914</commentid>
    <comment_count>25</comment_count>
      <attachid>204780</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-06-16 16:07:56 -0700</bug_when>
    <thetext>Comment on attachment 204780
the ptach

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp:190
&gt; +                        for (unsigned i = data-&gt;cases.size(); found == FalseTriState &amp;&amp; i--;) {

What happens if there are multiple case statements with the same constants?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901061</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-17 09:18:51 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 204780 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204780&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp:190
&gt; &gt; +                        for (unsigned i = data-&gt;cases.size(); found == FalseTriState &amp;&amp; i--;) {
&gt; 
&gt; What happens if there are multiple case statements with the same constants?

Won&apos;t happen since the bytecode&apos;s jump tables never have duplicates.  I&apos;ll add a comment at the declaration of SwitchCase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901062</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-17 09:22:59 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151644</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204777</attachid>
            <date>2013-06-15 17:12:01 -0700</date>
            <delta_ts>2013-06-15 17:28:02 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14072</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDEzLTA2LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2NzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1w
bGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0
aW9uUGhhc2U6OmNvbnZlcnRUb0p1bXApOgorICAgICAgICAoQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bm9CbG9ja3Mp
OgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om9uZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnB1cmVTdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0MpOgorCiAyMDEzLTA2LTEzICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogREZHIHNo
b3VsZCBzdXBwb3J0IG9wX3N3aXRjaF9pbW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTUxNjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmVtZUxvZ2dpbmcpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmRldGhyZWFkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9j
a0luZGV4LCBtX2dyYXBoLnN1Y2Nlc3NvcihibG9jaywgMCksIE5vQmxvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2tJbmRleCwgbV9ncmFwaC5zdWNjZXNzb3Io
YmxvY2ssIDApLCBub0Jsb2NrcygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyQ2hh
bmdlZCA9IG91dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguc3VjY2Vzc29yRm9yQ29uZGl0aW9uKGJsb2NrLCBjb25kaXRpb24p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnN1Y2Nlc3NvckZvckNv
bmRpdGlvbihibG9jaywgIWNvbmRpdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvbmVCbG9jayhtX2dyYXBoLnN1Y2Nlc3NvckZvckNvbmRpdGlvbihibG9jaywgIWNvbmRp
dGlvbikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dGKCJDRkdTaW1wbGlmeTogS25vd24gY29uZGl0aW9uICglcykgYnJhbmNoLT5qdW1w
IGNvbnZlcnNpb24gb24gQmxvY2sgIyV1IHRvIEJsb2NrICMldSwgamV0dGlzb25pbmcgQmxvY2sg
IyV1LlxuIiwKQEAgLTE0OCwzMiArMTQ4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5zdWNjZXNzb3IoYmxvY2ssIDApID09IG1fZ3JhcGguc3VjY2Vzc29yKGJsb2NrLCAxKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tJbmRleCB0YXJnZXRCbG9ja0luZGV4ID0gbV9n
cmFwaC5zdWNjZXNzb3IoYmxvY2ssIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogdGFyZ2V0QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW3RhcmdldEJsb2NrSW5kZXhdLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldEJsb2NrKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jay0+aXNSZWFjaGFibGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEJsb2NrLT5tX3ByZWRlY2Vzc29ycy5zaXpl
KCkgPT0gMSkgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ0ZHU2ltcGxpZnk6IEJyYW5jaCB0
byBzYW1lIHN1Y2Nlc3NvciBtZXJnZSBvbiBCbG9jayAjJXUgdG8gQmxvY2sgIyV1LlxuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5kZXgsIHRhcmdldEJsb2Nr
SW5kZXgpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRo
cmVhZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrSW5k
ZXgsIHRhcmdldEJsb2NrSW5kZXgsIE5vQmxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNGR1NpbXBsaWZ5OiBCcmFuY2gtPmp1
bXAgY29udmVyc2lvbiB0byBzYW1lIHN1Y2Nlc3NvciBvbiBCbG9jayAjJXUgdG8gQmxvY2sgIyV1
LlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5kZXgsIHRh
cmdldEJsb2NrSW5kZXgpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9k
ZSogYnJhbmNoID0gYmxvY2stPmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoYnJhbmNoLT5pc1Rlcm1pbmFsKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChicmFuY2gtPm9wKCkgPT0gQnJhbmNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmFuY2gtPmNvbnZlcnRUb1BoYW50b20oKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoYnJhbmNoLT5yZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2Rl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVt
cCwgYnJhbmNoLT5jb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
cEluZm8odGFyZ2V0QmxvY2tJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvSnVtcChibG9ja0luZGV4LCBtX2dyYXBoLnN1
Y2Nlc3NvcihibG9jaywgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDaGFuZ2Vk
ID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xODksNyArMTY0LDg2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgY2FzZSBTd2l0Y2g6IHsKKyAgICAgICAgICAgICAgICAgICAgU3dpdGNoRGF0YSogZGF0
YSA9IGJsb2NrLT5sYXN0KCktPnN3aXRjaERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIC8vIFBydW5lIG91dCBjYXNlcyB0aGF0IGVuZCB1cCBqdW1waW5n
IHRvIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkYXRhLT5jYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGRhdGEtPmNhc2VzW2ldLnRhcmdldCA9PSBkYXRhLT5mYWxsVGhyb3VnaCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlc1tpLS1dID0gZGF0YS0+Y2FzZXMudGFrZUxhc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGNhc2VzIG90aGVyIHRoYW4gZGVmYXVsdCB0
aGVuIHRoaXMgdHVybnMKKyAgICAgICAgICAgICAgICAgICAgLy8gaW50byBhIGp1bXAuCisgICAg
ICAgICAgICAgICAgICAgIGlmIChkYXRhLT5jYXNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRUb0p1bXAoYmxvY2tJbmRleCwgZGF0YS0+ZmFsbFRocm91Z2gp
OworICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDaGFuZ2VkID0gb3V0ZXJDaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2gg
b24gY29uc3RhbnQgLT4gamV0dGlzb24gYWxsIG90aGVyIHRhcmdldHMgYW5kIG1lcmdlLgorICAg
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmxhc3QoKS0+Y2hpbGQxKCktPmhhc0NvbnN0YW50
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZh
bHVlT2ZKU0NvbnN0YW50KGJsb2NrLT5sYXN0KCktPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBUcmlTdGF0ZSBmb3VuZCA9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBCbG9ja0luZGV4IHRhcmdldEJsb2NrSW5kZXggPSBOb0Jsb2NrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6
ZSgpOyBmb3VuZCA9PSBGYWxzZVRyaVN0YXRlICYmIGktLTspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3VuZCA9IEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2YWx1ZSwgZGF0YS0+
Y2FzZXNbaV0udmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9
PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJs
b2NrSW5kZXggPSBkYXRhLT5jYXNlc1tpXS50YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmb3VuZCA9PSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IEZhbHNlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2tJbmRleCA9IGRhdGEtPmZh
bGxUaHJvdWdoOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldEJsb2NrSW5k
ZXggIT0gTm9CbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4LCAxPiBqZXR0aXNvbmVkQmxvY2tzOworICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5udW1TdWNjZXNzb3Jz
KGJsb2NrKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrSW5kZXgg
amV0dGlzb25lZEJsb2NrSW5kZXggPSBtX2dyYXBoLnN1Y2Nlc3NvcihibG9jaywgaSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpldHRpc29uZWRCbG9ja0luZGV4ICE9IHRhcmdl
dEJsb2NrSW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpldHRpc29uZWRC
bG9ja3MuYXBwZW5kKGpldHRpc29uZWRCbG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW3RhcmdldEJsb2NrSW5k
ZXhdLmdldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodGFyZ2V0QmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKSA9PSAxKSB7CisjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDRkdT
aW1wbGlmeTogS25vd24gY29uc3RhbnQgKCIsIHZhbHVlLCAiKSBzd2l0Y2ggbWVyZ2Ugb24gIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsb2NrICMiLCBibG9ja0luZGV4LCAi
IHRvIEJsb2NrICMiLCB0YXJnZXRCbG9ja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLlxuIik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmVtZUxvZ2dpbmcpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9ja0luZGV4LCB0
YXJnZXRCbG9ja0luZGV4LCBqZXR0aXNvbmVkQmxvY2tzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJDRkdTaW1wbGlmeTogS25vd24gY29uc3RhbnQgKCIsIHZhbHVlLCAiKSBz
d2l0Y2gtPmp1bXAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udmVyc2lv
biBvbiBCbG9jayAjIiwgYmxvY2tJbmRleCwgIiB0byBCbG9jayAjIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2tJbmRleCwgIi5cbiIpOworI2VuZGlmCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJlbWVMb2dnaW5nKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmln
aW4gPSBibG9jay0+bGFzdCgpLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrLT5sYXN0KCktPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqZXR0aXNvbmVkQmxvY2tzLnNpemUoKTsgaS0t
OykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamV0dGlzb25CbG9jayhibG9ja0lu
ZGV4LCBqZXR0aXNvbmVkQmxvY2tzW2ldLCBib3VuZGFyeUNvZGVPcmlnaW4pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlDb2RlT3JpZ2lu
LCBPcEluZm8odGFyZ2V0QmxvY2tJbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDaGFuZ2VkID0gb3V0ZXJDaGFuZ2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC0yNDcsNiArMzAxLDM2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgdm9p
ZCBjb252ZXJ0VG9KdW1wKEJsb2NrSW5kZXggYmxvY2tJbmRleCwgQmxvY2tJbmRleCB0YXJnZXRC
bG9ja0luZGV4KQorICAgIHsKKyAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1f
YmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXRCbG9j
ayA9IG1fZ3JhcGgubV9ibG9ja3NbdGFyZ2V0QmxvY2tJbmRleF0uZ2V0KCk7CisgICAgICAgIEFT
U0VSVCh0YXJnZXRCbG9jayk7CisgICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jay0+aXNSZWFjaGFi
bGUpOworICAgICAgICBpZiAodGFyZ2V0QmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKSA9PSAx
KSB7CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAg
ICAgZGF0YUxvZ0YoIkNGR1NpbXBsaWZ5OiBCcmFuY2gvU3dpdGNoIHRvIHNhbWUgc3VjY2Vzc29y
IG1lcmdlIG9uIEJsb2NrICMldSB0byBCbG9jayAjJXUuXG4iLAorICAgICAgICAgICAgICAgICAg
ICAgYmxvY2tJbmRleCwgdGFyZ2V0QmxvY2tJbmRleCk7CisjZW5kaWYKKyAgICAgICAgICAgIG1f
Z3JhcGguZGV0aHJlYWQoKTsKKyAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrSW5kZXgsIHRh
cmdldEJsb2NrSW5kZXgsIG5vQmxvY2tzKCkpOworICAgICAgICB9IGVsc2UgeworI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgICAgIGRhdGFMb2dGKCJD
RkdTaW1wbGlmeTogQnJhbmNoLT5qdW1wIGNvbnZlcnNpb24gdG8gc2FtZSBzdWNjZXNzb3Igb24g
QmxvY2sgIyV1IHRvIEJsb2NrICMldS5cbiIsCisgICAgICAgICAgICAgICAgICAgICBibG9ja0lu
ZGV4LCB0YXJnZXRCbG9ja0luZGV4KTsKKyNlbmRpZgorICAgICAgICAgICAgTm9kZSogYnJhbmNo
ID0gYmxvY2stPmxhc3QoKTsKKyAgICAgICAgICAgIEFTU0VSVChicmFuY2gtPmlzVGVybWluYWwo
KSk7CisgICAgICAgICAgICBBU1NFUlQoYnJhbmNoLT5vcCgpID09IEJyYW5jaCB8fCBicmFuY2gt
Pm9wKCkgPT0gU3dpdGNoKTsKKyAgICAgICAgICAgIGJyYW5jaC0+Y29udmVydFRvUGhhbnRvbSgp
OworICAgICAgICAgICAgQVNTRVJUKGJyYW5jaC0+cmVmQ291bnQoKSA9PSAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAorICAg
ICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBicmFuY2gtPmNvZGVPcmlnaW4s
CisgICAgICAgICAgICAgICAgT3BJbmZvKHRhcmdldEJsb2NrSW5kZXgpKTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIHZvaWQga2lsbFVucmVhY2hhYmxlKEJsb2NrSW5kZXggYmxvY2tJbmRleCkK
ICAgICB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9j
a0luZGV4XS5nZXQoKTsKQEAgLTMwMiw5ICszODYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgVmVjdG9yPEJsb2NrSW5kZXgsIDE+IG5v
QmxvY2tzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWZWN0b3I8QmxvY2tJbmRleCwgMT4oKTsK
KyAgICB9CisgICAgCisgICAgVmVjdG9yPEJsb2NrSW5kZXgsIDE+IG9uZUJsb2NrKEJsb2NrSW5k
ZXggYmxvY2tJbmRleCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4LCAxPiByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2tJbmRleCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogICAgIAogICAgIHZvaWQgbWVyZ2VCbG9ja3MoCi0gICAgICAgIEJsb2Nr
SW5kZXggZmlyc3RCbG9ja0luZGV4LCBCbG9ja0luZGV4IHNlY29uZEJsb2NrSW5kZXgsIEJsb2Nr
SW5kZXggamV0dGlzb25lZEJsb2NrSW5kZXgpCisgICAgICAgIEJsb2NrSW5kZXggZmlyc3RCbG9j
a0luZGV4LCBCbG9ja0luZGV4IHNlY29uZEJsb2NrSW5kZXgsIFZlY3RvcjxCbG9ja0luZGV4LCAx
PiBqZXR0aXNvbmVkQmxvY2tJbmRpY2VzKQogICAgIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIGFk
ZCBhbGwgb2YgdGhlIG5vZGVzIGluIHNlY29uZEJsb2NrIHRvIGZpcnN0QmxvY2ssIGJ1dCBpbiBz
byBkb2luZwogICAgICAgICAvLyBpdCB3aWxsIGFsc28gZW5zdXJlIHRoYXQgYW55IEdldExvY2Fs
cyBmcm9tIHRoZSBzZWNvbmQgYmxvY2sgdGhhdCByZWZlciB0bwpAQCAtMzIyLDggKzQxOCw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGZpcnN0QmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhhbnRvbSgp
OwogICAgICAgICBBU1NFUlQoZmlyc3RCbG9jay0+bGFzdCgpLT5yZWZDb3VudCgpID09IDEpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKGpldHRpc29uZWRCbG9ja0luZGV4ICE9IE5vQmxvY2spIHsK
LSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jayA9IG1fZ3JhcGgubV9ibG9j
a3NbamV0dGlzb25lZEJsb2NrSW5kZXhdLmdldCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBqZXR0aXNvbmVkQmxvY2tJbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgQmFz
aWNCbG9jayogamV0dGlzb25lZEJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tqZXR0aXNvbmVkQmxv
Y2tJbmRpY2VzW2ldXS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGltZSB0
byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBhbGl2ZSBp
biBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5nIHRoZSBm
aXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93biBhCkBAIC0zNTgsOCAr
NDU0LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIC8vIEZpeCB0aGUgcHJlZGVjZXNz
b3JzIG9mIG15IGZvcm1lciBzdWNjZXNzb3JzLiBBZ2Fpbiwgd2UnZCByYXRoZXIgbm90IGRvIHRo
aXMsIGJ1dCBpdCdzCiAgICAgICAgIC8vIGFuIHVuZm9ydHVuYXRlIG5lY2Vzc2l0eS4gU2VlIGFi
b3ZlIGNvbW1lbnQuCi0gICAgICAgIGlmIChqZXR0aXNvbmVkQmxvY2tJbmRleCAhPSBOb0Jsb2Nr
KQotICAgICAgICAgICAgZml4SmV0dGlzb25lZFByZWRlY2Vzc29ycyhmaXJzdEJsb2NrSW5kZXgs
IGpldHRpc29uZWRCbG9ja0luZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gamV0dGlz
b25lZEJsb2NrSW5kaWNlcy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBmaXhKZXR0aXNvbmVk
UHJlZGVjZXNzb3JzKGZpcnN0QmxvY2tJbmRleCwgamV0dGlzb25lZEJsb2NrSW5kaWNlc1tpXSk7
CiAgICAgICAgIAogICAgICAgICBmaXJzdEJsb2NrLT52YWx1ZXNBdFRhaWwgPSBzZWNvbmRCbG9j
ay0+dmFsdWVzQXRUYWlsOwogICAgICAgICBmaXJzdEJsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24g
PSBzZWNvbmRCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTUxNjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTQsNiArMjU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmljdEVx
dWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3Rh
dGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAgICBKU0Nl
bGwqIGFzQ2VsbCgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTE2MTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OTMsNiArNzkzLDI4IEBAIGlubGluZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEV4
ZWNTdGEKICAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShleGVjLCB2MSwgdjIp
OwogfQogCitpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCit7CisgICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkp
CisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2Mik7CisKKyAgICBpZiAodjEuaXNOdW1i
ZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1i
ZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKKworICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlz
Q2VsbCgpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOworICAgIAorICAgIGlm
ICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewor
ICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0
VmFsdWVJbXBsKCk7CisgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJp
bmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJT
dHJpbmcpCisgICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IHRyaVN0YXRlKFdURjo6ZXF1YWwodjFTdHJpbmcsIHYyU3RyaW5nKSk7CisgICAgfQorICAgIAor
ICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2Mik7Cit9CisKIGlubGluZSBUcmlTdGF0ZSBKU1Zh
bHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNJbnQzMigpKQo=
</data>
<flag name="commit-queue"
          id="226169"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204778</attachid>
            <date>2013-06-15 17:28:02 -0700</date>
            <delta_ts>2013-06-15 20:22:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14127</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDEzLTA2LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQWRkIENGRyBzaW1wbGlmaWNhdGlvbiBmb3IgU3dpdGNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBo
YXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OmNv
bnZlcnRUb0p1bXApOgorICAgICAgICAoQ0ZHU2ltcGxpZmljYXRpb25QaGFzZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6bm9CbG9ja3MpOgorICAgICAgICAo
SlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om9uZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1cmVTdHJp
Y3RFcXVhbCk6CisgICAgICAgIChKU0MpOgorCiAyMDEzLTA2LTEzICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogREZHIHNob3VsZCBzdXBwb3J0
IG9wX3N3aXRjaF9pbW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTUxNjE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZXh0cmVtZUxvZ2dpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFk
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9ja0luZGV4LCBtX2dy
YXBoLnN1Y2Nlc3NvcihibG9jaywgMCksIE5vQmxvY2spOworICAgICAgICAgICAgICAgICAgICAg
ICAgbWVyZ2VCbG9ja3MoYmxvY2tJbmRleCwgbV9ncmFwaC5zdWNjZXNzb3IoYmxvY2ssIDApLCBu
b0Jsb2NrcygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyQ2hhbmdlZCA9IG91dGVy
Q2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguc3VjY2Vzc29yRm9yQ29uZGl0aW9uKGJsb2NrLCBjb25kaXRpb24pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnN1Y2Nlc3NvckZvckNvbmRpdGlvbihibG9j
aywgIWNvbmRpdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVCbG9j
ayhtX2dyYXBoLnN1Y2Nlc3NvckZvckNvbmRpdGlvbihibG9jaywgIWNvbmRpdGlvbikpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJD
RkdTaW1wbGlmeTogS25vd24gY29uZGl0aW9uICglcykgYnJhbmNoLT5qdW1wIGNvbnZlcnNpb24g
b24gQmxvY2sgIyV1IHRvIEJsb2NrICMldSwgamV0dGlzb25pbmcgQmxvY2sgIyV1LlxuIiwKQEAg
LTE0OCwzMiArMTQ4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5zdWNjZXNzb3Io
YmxvY2ssIDApID09IG1fZ3JhcGguc3VjY2Vzc29yKGJsb2NrLCAxKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgQmxvY2tJbmRleCB0YXJnZXRCbG9ja0luZGV4ID0gbV9ncmFwaC5zdWNjZXNz
b3IoYmxvY2ssIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0
QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW3RhcmdldEJsb2NrSW5kZXhdLmdldCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldEJsb2NrKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jay0+aXNSZWFjaGFibGUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRhcmdldEJsb2NrLT5tX3ByZWRlY2Vzc29ycy5zaXplKCkgPT0gMSkgewot
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiQ0ZHU2ltcGxpZnk6IEJyYW5jaCB0byBzYW1lIHN1Y2Nl
c3NvciBtZXJnZSBvbiBCbG9jayAjJXUgdG8gQmxvY2sgIyV1LlxuIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5kZXgsIHRhcmdldEJsb2NrSW5kZXgpOwotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrSW5kZXgsIHRhcmdldEJs
b2NrSW5kZXgsIE5vQmxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIkNGR1NpbXBsaWZ5OiBCcmFuY2gtPmp1bXAgY29udmVyc2lv
biB0byBzYW1lIHN1Y2Nlc3NvciBvbiBCbG9jayAjJXUgdG8gQmxvY2sgIyV1LlxuIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5kZXgsIHRhcmdldEJsb2NrSW5k
ZXgpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogYnJhbmNoID0g
YmxvY2stPmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYnJhbmNo
LT5pc1Rlcm1pbmFsKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChicmFu
Y2gtPm9wKCkgPT0gQnJhbmNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gt
PmNvbnZlcnRUb1BoYW50b20oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YnJhbmNoLT5yZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYnJhbmNoLT5j
b2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odGFyZ2V0
QmxvY2tJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udmVydFRvSnVtcChibG9ja0luZGV4LCBtX2dyYXBoLnN1Y2Nlc3NvcihibG9j
aywgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDaGFuZ2VkID0gb3V0ZXJDaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CkBAIC0xODksNyArMTY0LDg2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBT
d2l0Y2g6IHsKKyAgICAgICAgICAgICAgICAgICAgU3dpdGNoRGF0YSogZGF0YSA9IGJsb2NrLT5s
YXN0KCktPnN3aXRjaERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIC8vIFBydW5lIG91dCBjYXNlcyB0aGF0IGVuZCB1cCBqdW1waW5nIHRvIGRlZmF1bHQu
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNl
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEtPmNhc2Vz
W2ldLnRhcmdldCA9PSBkYXRhLT5mYWxsVGhyb3VnaCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhLT5jYXNlc1tpLS1dID0gZGF0YS0+Y2FzZXMudGFrZUxhc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlcmUgYXJlIG5vIGNhc2VzIG90aGVyIHRoYW4gZGVmYXVsdCB0aGVuIHRoaXMgdHVy
bnMKKyAgICAgICAgICAgICAgICAgICAgLy8gaW50byBhIGp1bXAuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChkYXRhLT5jYXNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnZlcnRUb0p1bXAoYmxvY2tJbmRleCwgZGF0YS0+ZmFsbFRocm91Z2gpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5uZXJDaGFuZ2VkID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggb24gY29uc3RhbnQg
LT4gamV0dGlzb24gYWxsIG90aGVyIHRhcmdldHMgYW5kIG1lcmdlLgorICAgICAgICAgICAgICAg
ICAgICBpZiAoYmxvY2stPmxhc3QoKS0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0
YW50KGJsb2NrLT5sYXN0KCktPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBUcmlTdGF0ZSBmb3VuZCA9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBCbG9ja0luZGV4IHRhcmdldEJsb2NrSW5kZXggPSBOb0Jsb2NrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9
PSBGYWxzZVRyaVN0YXRlICYmIGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZCA9IEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2YWx1ZSwgZGF0YS0+Y2FzZXNbaV0udmFs
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBUcnVlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJsb2NrSW5kZXggPSBk
YXRhLT5jYXNlc1tpXS50YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBN
aXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2tJbmRleCA9IGRhdGEtPmZhbGxUaHJvdWdoOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldEJsb2NrSW5kZXggIT0gTm9CbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxCbG9ja0luZGV4LCAxPiBqZXR0aXNvbmVkQmxvY2tzOworICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5udW1TdWNjZXNzb3JzKGJsb2NrKTsgaS0t
OykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrSW5kZXggamV0dGlzb25lZEJs
b2NrSW5kZXggPSBtX2dyYXBoLnN1Y2Nlc3NvcihibG9jaywgaSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGpldHRpc29uZWRCbG9ja0luZGV4ICE9IHRhcmdldEJsb2NrSW5kZXgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpldHRpc29uZWRCbG9ja3MuYXBwZW5k
KGpldHRpc29uZWRCbG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
dGFyZ2V0QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW3RhcmdldEJsb2NrSW5kZXhdLmdldCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFy
Z2V0QmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKSA9PSAxKSB7CisjaWYgREZHX0VOQUJMRShE
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDRkdTaW1wbGlmeTogS25v
d24gY29uc3RhbnQgKCIsIHZhbHVlLCAiKSBzd2l0Y2ggbWVyZ2Ugb24gIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkJsb2NrICMiLCBibG9ja0luZGV4LCAiIHRvIEJsb2NrICMi
LCB0YXJnZXRCbG9ja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLlxu
Iik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZXh0cmVtZUxvZ2dpbmcpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZGV0aHJlYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9ja0luZGV4LCB0YXJnZXRCbG9ja0lu
ZGV4LCBqZXR0aXNvbmVkQmxvY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDRkdTaW1wbGlmeTogS25vd24gY29uc3RhbnQgKCIsIHZhbHVlLCAiKSBzd2l0Y2gtPmp1bXAg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udmVyc2lvbiBvbiBCbG9jayAj
IiwgYmxvY2tJbmRleCwgIiB0byBCbG9jayAjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0QmxvY2tJbmRleCwgIi5cbiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4dHJlbWVMb2dnaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmRldGhyZWFkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmlnaW4gPSBibG9jay0+
bGFzdCgpLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5s
YXN0KCktPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBqZXR0aXNvbmVkQmxvY2tzLnNpemUoKTsgaS0tOykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgamV0dGlzb25CbG9jayhibG9ja0luZGV4LCBqZXR0aXNv
bmVkQmxvY2tzW2ldLCBib3VuZGFyeUNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlDb2RlT3JpZ2luLCBPcEluZm8odGFy
Z2V0QmxvY2tJbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgaW5uZXJDaGFuZ2VkID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0yNDcsNiAr
MzAxLDM4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBjb252ZXJ0VG9K
dW1wKEJsb2NrSW5kZXggYmxvY2tJbmRleCwgQmxvY2tJbmRleCB0YXJnZXRCbG9ja0luZGV4KQor
ICAgIHsKKyAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Jsb2Nr
SW5kZXhdLmdldCgpOworICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA9IG1fZ3JhcGgu
bV9ibG9ja3NbdGFyZ2V0QmxvY2tJbmRleF0uZ2V0KCk7CisgICAgICAgIEFTU0VSVCh0YXJnZXRC
bG9jayk7CisgICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jay0+aXNSZWFjaGFibGUpOworICAgICAg
ICBpZiAodGFyZ2V0QmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKSA9PSAxKSB7CisjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgZGF0YUxvZ0Yo
CisgICAgICAgICAgICAgICAgIkNGR1NpbXBsaWZ5OiBCcmFuY2gvU3dpdGNoIHRvIHNhbWUgc3Vj
Y2Vzc29yIG1lcmdlIG9uIEJsb2NrICMldSB0byBCbG9jayAjJXUuXG4iLAorICAgICAgICAgICAg
ICAgIGJsb2NrSW5kZXgsIHRhcmdldEJsb2NrSW5kZXgpOworI2VuZGlmCisgICAgICAgICAgICBt
X2dyYXBoLmRldGhyZWFkKCk7CisgICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9ja0luZGV4LCB0
YXJnZXRCbG9ja0luZGV4LCBub0Jsb2NrcygpKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgICAgICBkYXRhTG9nRigK
KyAgICAgICAgICAgICAgICAiQ0ZHU2ltcGxpZnk6IEJyYW5jaC0+anVtcCBjb252ZXJzaW9uIHRv
IHNhbWUgc3VjY2Vzc29yIG9uIEJsb2NrICMldSB0byBCbG9jayAjJXUuXG4iLAorICAgICAgICAg
ICAgICAgIGJsb2NrSW5kZXgsIHRhcmdldEJsb2NrSW5kZXgpOworI2VuZGlmCisgICAgICAgICAg
ICBOb2RlKiBicmFuY2ggPSBibG9jay0+bGFzdCgpOworICAgICAgICAgICAgQVNTRVJUKGJyYW5j
aC0+aXNUZXJtaW5hbCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChicmFuY2gtPm9wKCkgPT0gQnJh
bmNoIHx8IGJyYW5jaC0+b3AoKSA9PSBTd2l0Y2gpOworICAgICAgICAgICAgYnJhbmNoLT5jb252
ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICBBU1NFUlQoYnJhbmNoLT5yZWZDb3VudCgpID09
IDEpOworICAgICAgICAgICAgCisgICAgICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKKyAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYnJhbmNoLT5jb2RlT3JpZ2luLAor
ICAgICAgICAgICAgICAgIE9wSW5mbyh0YXJnZXRCbG9ja0luZGV4KSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIGtpbGxVbnJlYWNoYWJsZShCbG9ja0luZGV4IGJsb2NrSW5kZXgpCiAg
ICAgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJ
bmRleF0uZ2V0KCk7CkBAIC0zMDIsOSArMzg4LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIFZlY3RvcjxCbG9ja0luZGV4LCAxPiBub0Js
b2NrcygpCisgICAgeworICAgICAgICByZXR1cm4gVmVjdG9yPEJsb2NrSW5kZXgsIDE+KCk7Cisg
ICAgfQorICAgIAorICAgIFZlY3RvcjxCbG9ja0luZGV4LCAxPiBvbmVCbG9jayhCbG9ja0luZGV4
IGJsb2NrSW5kZXgpCisgICAgeworICAgICAgICBWZWN0b3I8QmxvY2tJbmRleCwgMT4gcmVzdWx0
OworICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrSW5kZXgpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KICAgICAKICAgICB2b2lkIG1lcmdlQmxvY2tzKAotICAgICAgICBCbG9ja0lu
ZGV4IGZpcnN0QmxvY2tJbmRleCwgQmxvY2tJbmRleCBzZWNvbmRCbG9ja0luZGV4LCBCbG9ja0lu
ZGV4IGpldHRpc29uZWRCbG9ja0luZGV4KQorICAgICAgICBCbG9ja0luZGV4IGZpcnN0QmxvY2tJ
bmRleCwgQmxvY2tJbmRleCBzZWNvbmRCbG9ja0luZGV4LCBWZWN0b3I8QmxvY2tJbmRleCwgMT4g
amV0dGlzb25lZEJsb2NrSW5kaWNlcykKICAgICB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCBhZGQg
YWxsIG9mIHRoZSBub2RlcyBpbiBzZWNvbmRCbG9jayB0byBmaXJzdEJsb2NrLCBidXQgaW4gc28g
ZG9pbmcKICAgICAgICAgLy8gaXQgd2lsbCBhbHNvIGVuc3VyZSB0aGF0IGFueSBHZXRMb2NhbHMg
ZnJvbSB0aGUgc2Vjb25kIGJsb2NrIHRoYXQgcmVmZXIgdG8KQEAgLTMyMiw4ICs0MjAsOCBAQCBw
cml2YXRlOgogICAgICAgICBmaXJzdEJsb2NrLT5sYXN0KCktPmNvbnZlcnRUb1BoYW50b20oKTsK
ICAgICAgICAgQVNTRVJUKGZpcnN0QmxvY2stPmxhc3QoKS0+cmVmQ291bnQoKSA9PSAxKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChqZXR0aXNvbmVkQmxvY2tJbmRleCAhPSBOb0Jsb2NrKSB7Ci0g
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tz
W2pldHRpc29uZWRCbG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
amV0dGlzb25lZEJsb2NrSW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGpldHRpc29uZWRCbG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbamV0dGlzb25lZEJsb2Nr
SW5kaWNlc1tpXV0uZ2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFRpbWUgdG8g
aW5zZXJ0IGdob3N0aWVzIGZvciB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGtlcHQgYWxpdmUgaW4g
Y2FzZSB3ZSBPU1IKICAgICAgICAgICAgIC8vIGV4aXQgcHJpb3IgdG8gaGl0dGluZyB0aGUgZmly
c3RCbG9jaydzIHRlcm1pbmFsLCBhbmQgZW5kIHVwIGdvaW5nIGRvd24gYQpAQCAtMzU4LDggKzQ1
Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICAvLyBGaXggdGhlIHByZWRlY2Vzc29y
cyBvZiBteSBmb3JtZXIgc3VjY2Vzc29ycy4gQWdhaW4sIHdlJ2QgcmF0aGVyIG5vdCBkbyB0aGlz
LCBidXQgaXQncwogICAgICAgICAvLyBhbiB1bmZvcnR1bmF0ZSBuZWNlc3NpdHkuIFNlZSBhYm92
ZSBjb21tZW50LgotICAgICAgICBpZiAoamV0dGlzb25lZEJsb2NrSW5kZXggIT0gTm9CbG9jaykK
LSAgICAgICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoZmlyc3RCbG9ja0luZGV4LCBq
ZXR0aXNvbmVkQmxvY2tJbmRleCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRpc29u
ZWRCbG9ja0luZGljZXMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgZml4SmV0dGlzb25lZFBy
ZWRlY2Vzc29ycyhmaXJzdEJsb2NrSW5kZXgsIGpldHRpc29uZWRCbG9ja0luZGljZXNbaV0pOwog
ICAgICAgICAKICAgICAgICAgZmlyc3RCbG9jay0+dmFsdWVzQXRUYWlsID0gc2Vjb25kQmxvY2st
PnZhbHVlc0F0VGFpbDsKICAgICAgICAgZmlyc3RCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uID0g
c2Vjb25kQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1MTYxNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjU0
LDYgKzI1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVh
bFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRp
YyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgSlNDZWxs
KiBhc0NlbGwoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTUxNjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzkzLDYgKzc5MywyOCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChFeGVj
U3RhCiAgICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZXhlYywgdjEsIHYyKTsK
IH0KIAoraW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQoreworICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQor
ICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOworCisgICAgaWYgKHYxLmlzTnVtYmVy
KCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVtYmVy
KCkgPT0gdjIuYXNOdW1iZXIoKSk7CisKKyAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0Nl
bGwoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKKyAgICAKKyAgICBpZiAo
djEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZh
bHVlSW1wbCgpOworICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5n
KHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3Ry
aW5nKQorICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiB0
cmlTdGF0ZShXVEY6OmVxdWFsKHYxU3RyaW5nLCB2MlN0cmluZykpOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOworfQorCiBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1
ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW50MzIoKSkK
</data>
<flag name="commit-queue"
          id="226171"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204780</attachid>
            <date>2013-06-15 20:22:47 -0700</date>
            <delta_ts>2013-06-16 16:07:56 -0700</delta_ts>
            <desc>the ptach</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20463</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEzLTA2LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQWRkIENGRyBzaW1wbGlmaWNhdGlvbiBmb3IgU3dpdGNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgZm9y
IGNvbXBsZXRlbmVzcy4gSXQgb25seSBzcGVlZHMgdXAgYSBtaWNyb2JlbmNobWFyayBhdCB0aGlz
IHBvaW50LgorICAgICAgICBCcm9hZGx5LCB3ZSB3YW50IGFsbCBjb250cm9sIGNvbnN0cnVjdHMg
dG8gYmUga25vd24gdG8gdGhlIENGRyBzaW1wbGlmaWVyLgorCisgICAgICAgICogZGZnL0RGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZp
Y2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25Q
aGFzZTo6Y29udmVydFRvSnVtcCk6CisgICAgICAgIChDRkdTaW1wbGlmaWNhdGlvblBoYXNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpub0Jsb2Nrcyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6b25lQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6Om1lcmdlQmxvY2tzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
cHVyZVN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQyk6CisKIDIwMTMtMDYtMTMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBERkcgc2hvdWxk
IHN1cHBvcnQgb3Bfc3dpdGNoX2ltbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTE2
MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChleHRyZW1lTG9nZ2luZykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
ZGV0aHJlYWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrSW5k
ZXgsIG1fZ3JhcGguc3VjY2Vzc29yKGJsb2NrLCAwKSwgTm9CbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtZXJnZUJsb2NrcyhibG9ja0luZGV4LCBtX2dyYXBoLnN1Y2Nlc3NvcihibG9j
aywgMCksIG5vQmxvY2tzKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJDaGFuZ2Vk
ID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUJsb2NrcygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2tJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5zdWNjZXNzb3JGb3JDb25kaXRpb24oYmxvY2ssIGNvbmRpdGlvbiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguc3VjY2Vzc29yRm9yQ29uZGl0
aW9uKGJsb2NrLCAhY29uZGl0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9uZUJsb2NrKG1fZ3JhcGguc3VjY2Vzc29yRm9yQ29uZGl0aW9uKGJsb2NrLCAhY29uZGl0aW9u
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0YoIkNGR1NpbXBsaWZ5OiBLbm93biBjb25kaXRpb24gKCVzKSBicmFuY2gtPmp1bXAgY29u
dmVyc2lvbiBvbiBCbG9jayAjJXUgdG8gQmxvY2sgIyV1LCBqZXR0aXNvbmluZyBCbG9jayAjJXUu
XG4iLApAQCAtMTQ4LDMyICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnN1
Y2Nlc3NvcihibG9jaywgMCkgPT0gbV9ncmFwaC5zdWNjZXNzb3IoYmxvY2ssIDEpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBCbG9ja0luZGV4IHRhcmdldEJsb2NrSW5kZXggPSBtX2dyYXBo
LnN1Y2Nlc3NvcihibG9jaywgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiB0YXJnZXRCbG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbdGFyZ2V0QmxvY2tJbmRleF0uZ2V0KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2spOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldEJsb2NrLT5pc1JlYWNoYWJsZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKSA9
PSAxKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDRkdTaW1wbGlmeTogQnJhbmNoIHRvIHNh
bWUgc3VjY2Vzc29yIG1lcmdlIG9uIEJsb2NrICMldSB0byBCbG9jayAjJXUuXG4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmRleCwgdGFyZ2V0QmxvY2tJbmRl
eCk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFk
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2tJbmRleCwg
dGFyZ2V0QmxvY2tJbmRleCwgTm9CbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ0ZHU2ltcGxpZnk6IEJyYW5jaC0+anVtcCBj
b252ZXJzaW9uIHRvIHNhbWUgc3VjY2Vzc29yIG9uIEJsb2NrICMldSB0byBCbG9jayAjJXUuXG4i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmRleCwgdGFyZ2V0
QmxvY2tJbmRleCk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBi
cmFuY2ggPSBibG9jay0+bGFzdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChicmFuY2gtPmlzVGVybWluYWwoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGJyYW5jaC0+b3AoKSA9PSBCcmFuY2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyYW5jaC0+Y29udmVydFRvUGhhbnRvbSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChicmFuY2gtPnJlZkNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBi
cmFuY2gtPmNvZGVPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5m
byh0YXJnZXRCbG9ja0luZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb252ZXJ0VG9KdW1wKGJsb2NrSW5kZXgsIG1fZ3JhcGguc3VjY2Vz
c29yKGJsb2NrLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBv
dXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTE4OSw3ICsxNjQsODYgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBjYXNlIFN3aXRjaDogeworICAgICAgICAgICAgICAgICAgICBTd2l0Y2hEYXRhKiBkYXRhID0g
YmxvY2stPmxhc3QoKS0+c3dpdGNoRGF0YSgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gUHJ1bmUgb3V0IGNhc2VzIHRoYXQgZW5kIHVwIGp1bXBpbmcgdG8g
ZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRh
dGEtPmNhc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YS0+Y2FzZXNbaV0udGFyZ2V0ID09IGRhdGEtPmZhbGxUaHJvdWdoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGEtPmNhc2VzW2ktLV0gPSBkYXRhLT5jYXNlcy50YWtlTGFzdCgpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gY2FzZXMgb3RoZXIgdGhhbiBkZWZhdWx0IHRoZW4g
dGhpcyB0dXJucworICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIGEganVtcC4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGRhdGEtPmNhc2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udmVydFRvSnVtcChibG9ja0luZGV4LCBkYXRhLT5mYWxsVGhyb3VnaCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFN3aXRjaCBvbiBj
b25zdGFudCAtPiBqZXR0aXNvbiBhbGwgb3RoZXIgdGFyZ2V0cyBhbmQgbWVyZ2UuCisgICAgICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+bGFzdCgpLT5jaGlsZDEoKS0+aGFzQ29uc3RhbnQoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVP
ZkpTQ29uc3RhbnQoYmxvY2stPmxhc3QoKS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEJsb2NrSW5kZXggdGFyZ2V0QmxvY2tJbmRleCA9IE5vQmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLT5jYXNlcy5zaXplKCk7
IGZvdW5kID09IEZhbHNlVHJpU3RhdGUgJiYgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kID0gSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKHZhbHVlLCBkYXRhLT5jYXNl
c1tpXS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IFRy
dWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2tJ
bmRleCA9IGRhdGEtPmNhc2VzW2ldLnRhcmdldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kID09IE1peGVkVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gRmFsc2VUcmlTdGF0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCbG9ja0luZGV4ID0gZGF0YS0+ZmFsbFRo
cm91Z2g7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2tJbmRleCAh
PSBOb0Jsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPEJsb2NrSW5kZXgsIDE+IGpldHRpc29uZWRCbG9ja3M7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm51bVN1Y2Nlc3NvcnMoYmxv
Y2spOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tJbmRleCBqZXR0
aXNvbmVkQmxvY2tJbmRleCA9IG1fZ3JhcGguc3VjY2Vzc29yKGJsb2NrLCBpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoamV0dGlzb25lZEJsb2NrSW5kZXggIT0gdGFyZ2V0Qmxv
Y2tJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamV0dGlzb25lZEJsb2Nr
cy5hcHBlbmQoamV0dGlzb25lZEJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiB0YXJnZXRCbG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbdGFyZ2V0QmxvY2tJbmRleF0u
Z2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0YXJnZXRCbG9jay0+bV9wcmVkZWNlc3NvcnMuc2l6ZSgpID09IDEpIHsKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNGR1NpbXBs
aWZ5OiBLbm93biBjb25zdGFudCAoIiwgdmFsdWUsICIpIHN3aXRjaCBtZXJnZSBvbiAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxvY2sgIyIsIGJsb2NrSW5kZXgsICIgdG8g
QmxvY2sgIyIsIHRhcmdldEJsb2NrSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIuXG4iKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRyZW1lTG9nZ2luZykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2NrSW5kZXgsIHRhcmdl
dEJsb2NrSW5kZXgsIGpldHRpc29uZWRCbG9ja3MpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkNGR1NpbXBsaWZ5OiBLbm93biBjb25zdGFudCAoIiwgdmFsdWUsICIpIHN3aXRj
aC0+anVtcCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb252ZXJzaW9uIG9u
IEJsb2NrICMiLCBibG9ja0luZGV4LCAiIHRvIEJsb2NrICMiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXJnZXRCbG9ja0luZGV4LCAiLlxuIik7CisjZW5kaWYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmVtZUxvZ2dpbmcpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbiA9
IGJsb2NrLT5sYXN0KCktPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRpc29uZWRCbG9ja3Muc2l6ZSgpOyBpLS07KQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZXR0aXNvbkJsb2NrKGJsb2NrSW5kZXgs
IGpldHRpc29uZWRCbG9ja3NbaV0sIGJvdW5kYXJ5Q29kZU9yaWdpbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBib3VuZGFyeUNvZGVPcmlnaW4sIE9w
SW5mbyh0YXJnZXRCbG9ja0luZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAg
LTI0Nyw2ICszMDEsMzggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGNv
bnZlcnRUb0p1bXAoQmxvY2tJbmRleCBibG9ja0luZGV4LCBCbG9ja0luZGV4IHRhcmdldEJsb2Nr
SW5kZXgpCisgICAgeworICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9j
a3NbYmxvY2tJbmRleF0uZ2V0KCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrID0g
bV9ncmFwaC5tX2Jsb2Nrc1t0YXJnZXRCbG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgQVNTRVJU
KHRhcmdldEJsb2NrKTsKKyAgICAgICAgQVNTRVJUKHRhcmdldEJsb2NrLT5pc1JlYWNoYWJsZSk7
CisgICAgICAgIGlmICh0YXJnZXRCbG9jay0+bV9wcmVkZWNlc3NvcnMuc2l6ZSgpID09IDEpIHsK
KyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgICAgICBk
YXRhTG9nRigKKyAgICAgICAgICAgICAgICAiQ0ZHU2ltcGxpZnk6IEJyYW5jaC9Td2l0Y2ggdG8g
c2FtZSBzdWNjZXNzb3IgbWVyZ2Ugb24gQmxvY2sgIyV1IHRvIEJsb2NrICMldS5cbiIsCisgICAg
ICAgICAgICAgICAgYmxvY2tJbmRleCwgdGFyZ2V0QmxvY2tJbmRleCk7CisjZW5kaWYKKyAgICAg
ICAgICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKKyAgICAgICAgICAgIG1lcmdlQmxvY2tzKGJsb2Nr
SW5kZXgsIHRhcmdldEJsb2NrSW5kZXgsIG5vQmxvY2tzKCkpOworICAgICAgICB9IGVsc2Ugewor
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgICAgIGRh
dGFMb2dGKAorICAgICAgICAgICAgICAgICJDRkdTaW1wbGlmeTogQnJhbmNoLT5qdW1wIGNvbnZl
cnNpb24gdG8gc2FtZSBzdWNjZXNzb3Igb24gQmxvY2sgIyV1IHRvIEJsb2NrICMldS5cbiIsCisg
ICAgICAgICAgICAgICAgYmxvY2tJbmRleCwgdGFyZ2V0QmxvY2tJbmRleCk7CisjZW5kaWYKKyAg
ICAgICAgICAgIE5vZGUqIGJyYW5jaCA9IGJsb2NrLT5sYXN0KCk7CisgICAgICAgICAgICBBU1NF
UlQoYnJhbmNoLT5pc1Rlcm1pbmFsKCkpOworICAgICAgICAgICAgQVNTRVJUKGJyYW5jaC0+b3Ao
KSA9PSBCcmFuY2ggfHwgYnJhbmNoLT5vcCgpID09IFN3aXRjaCk7CisgICAgICAgICAgICBicmFu
Y2gtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgIEFTU0VSVChicmFuY2gtPnJlZkNv
dW50KCkgPT0gMSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2Rl
KAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBicmFuY2gtPmNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgT3BJbmZvKHRhcmdldEJsb2NrSW5kZXgpKTsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIHZvaWQga2lsbFVucmVhY2hhYmxlKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCkKICAgICB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nr
c1tibG9ja0luZGV4XS5nZXQoKTsKQEAgLTMwMiw5ICszODgsMjEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgVmVjdG9yPEJsb2NrSW5kZXgs
IDE+IG5vQmxvY2tzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWZWN0b3I8QmxvY2tJbmRleCwg
MT4oKTsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPEJsb2NrSW5kZXgsIDE+IG9uZUJsb2NrKEJs
b2NrSW5kZXggYmxvY2tJbmRleCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4LCAx
PiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2tJbmRleCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQogICAgIAogICAgIHZvaWQgbWVyZ2VCbG9ja3MoCi0gICAgICAg
IEJsb2NrSW5kZXggZmlyc3RCbG9ja0luZGV4LCBCbG9ja0luZGV4IHNlY29uZEJsb2NrSW5kZXgs
IEJsb2NrSW5kZXggamV0dGlzb25lZEJsb2NrSW5kZXgpCisgICAgICAgIEJsb2NrSW5kZXggZmly
c3RCbG9ja0luZGV4LCBCbG9ja0luZGV4IHNlY29uZEJsb2NrSW5kZXgsIFZlY3RvcjxCbG9ja0lu
ZGV4LCAxPiBqZXR0aXNvbmVkQmxvY2tJbmRpY2VzKQogICAgIHsKICAgICAgICAgLy8gVGhpcyB3
aWxsIGFkZCBhbGwgb2YgdGhlIG5vZGVzIGluIHNlY29uZEJsb2NrIHRvIGZpcnN0QmxvY2ssIGJ1
dCBpbiBzbyBkb2luZwogICAgICAgICAvLyBpdCB3aWxsIGFsc28gZW5zdXJlIHRoYXQgYW55IEdl
dExvY2FscyBmcm9tIHRoZSBzZWNvbmQgYmxvY2sgdGhhdCByZWZlciB0bwpAQCAtMzIyLDggKzQy
MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGZpcnN0QmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhh
bnRvbSgpOwogICAgICAgICBBU1NFUlQoZmlyc3RCbG9jay0+bGFzdCgpLT5yZWZDb3VudCgpID09
IDEpOwogICAgICAgICAKLSAgICAgICAgaWYgKGpldHRpc29uZWRCbG9ja0luZGV4ICE9IE5vQmxv
Y2spIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jayA9IG1fZ3JhcGgu
bV9ibG9ja3NbamV0dGlzb25lZEJsb2NrSW5kZXhdLmdldCgpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBqZXR0aXNvbmVkQmxvY2tJbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgQmFzaWNCbG9jayogamV0dGlzb25lZEJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tqZXR0aXNv
bmVkQmxvY2tJbmRpY2VzW2ldXS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
VGltZSB0byBpbnNlcnQgZ2hvc3RpZXMgZm9yIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUga2VwdCBh
bGl2ZSBpbiBjYXNlIHdlIE9TUgogICAgICAgICAgICAgLy8gZXhpdCBwcmlvciB0byBoaXR0aW5n
IHRoZSBmaXJzdEJsb2NrJ3MgdGVybWluYWwsIGFuZCBlbmQgdXAgZ29pbmcgZG93biBhCkBAIC0z
NTgsOCArNDU2LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIC8vIEZpeCB0aGUgcHJl
ZGVjZXNzb3JzIG9mIG15IGZvcm1lciBzdWNjZXNzb3JzLiBBZ2Fpbiwgd2UnZCByYXRoZXIgbm90
IGRvIHRoaXMsIGJ1dCBpdCdzCiAgICAgICAgIC8vIGFuIHVuZm9ydHVuYXRlIG5lY2Vzc2l0eS4g
U2VlIGFib3ZlIGNvbW1lbnQuCi0gICAgICAgIGlmIChqZXR0aXNvbmVkQmxvY2tJbmRleCAhPSBO
b0Jsb2NrKQotICAgICAgICAgICAgZml4SmV0dGlzb25lZFByZWRlY2Vzc29ycyhmaXJzdEJsb2Nr
SW5kZXgsIGpldHRpc29uZWRCbG9ja0luZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
amV0dGlzb25lZEJsb2NrSW5kaWNlcy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBmaXhKZXR0
aXNvbmVkUHJlZGVjZXNzb3JzKGZpcnN0QmxvY2tJbmRleCwgamV0dGlzb25lZEJsb2NrSW5kaWNl
c1tpXSk7CiAgICAgICAgIAogICAgICAgICBmaXJzdEJsb2NrLT52YWx1ZXNBdFRhaWwgPSBzZWNv
bmRCbG9jay0+dmFsdWVzQXRUYWlsOwogICAgICAgICBmaXJzdEJsb2NrLT5jZmFCcmFuY2hEaXJl
Y3Rpb24gPSBzZWNvbmRCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTUxNjE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTQsNiArMjU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFs
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0
cmljdEVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAg
ICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqLCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFs
KEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAg
ICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTE2MTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OTMsNiArNzkzLDI4IEBAIGlubGluZSBib29sIEpTVmFsdWU6OnN0cmljdEVx
dWFsKEV4ZWNTdGEKICAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShleGVjLCB2
MSwgdjIpOwogfQogCitpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0lu
dDMyKCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2Mik7CisKKyAgICBpZiAodjEu
aXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEu
YXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKKworICAgIGlmICghdjEuaXNDZWxsKCkgfHwg
IXYyLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOworICAgIAor
ICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmco
KSkgeworICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+
dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0g
YXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgaWYgKCF2MVN0cmluZyB8
fCAhdjJTdHJpbmcpCisgICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwodjFTdHJpbmcsIHYyU3RyaW5nKSk7CisgICAgfQor
ICAgIAorICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2Mik7Cit9CisKIGlubGluZSBUcmlTdGF0
ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNJbnQzMigpKQpJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1MTYxNykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDYtMTUgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBmb3VydGhUaWVyOiBBZGQgQ0ZHIHNpbXBsaWZpY2F0aW9u
IGZvciBTd2l0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL1RyaVN0YXRlLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
CiAyMDEzLTA2LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
UHJpbnRpbmcgYSBTdHJpbmdJbXBsKiBzaG91bGQgcmVhbGx5IGd1YXJkIGFnYWluc3QgTlVMTApJ
bmRleDogU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9UcmlTdGF0ZS5oCShyZXZpc2lvbiAxNTE2MTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9UcmlT
dGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw1ICs0NSw2IEBAIHVzaW5nIFdURjo6VHJpU3Rh
dGU7CiB1c2luZyBXVEY6OkZhbHNlVHJpU3RhdGU7CiB1c2luZyBXVEY6OlRydWVUcmlTdGF0ZTsK
IHVzaW5nIFdURjo6TWl4ZWRUcmlTdGF0ZTsKK3VzaW5nIFdURjo6dHJpU3RhdGU7CiAKICNlbmRp
ZiAvLyBUcmlTdGF0ZV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24g
MTUxNjE3KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMDYsNyArMTMwNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFJl
ZlB0cjxTdHIKICAgICB0eXBlZGVmIFN0cmluZ0hhc2ggSGFzaDsKIH07CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVxdWFsOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTUxNjE3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDYtMTUgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KKworICAgICAgICBmb3VydGhUaWVyOiBBZGQgQ0ZHIHNpbXBsaWZpY2F0
aW9uIGZvciBTd2l0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtY29uc3RhbnQuanM6
IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogZmFzdC9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2guanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKGJhcik6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1jb25zdGFu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gt
Y29uc3RhbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2guaHRt
bDogQWRkZWQuCisKIDIwMTMtMDYtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBmb3VydGhUaWVyOiBERkcgc2hvdWxkIHN1cHBvcnQgb3BfaW4gYW5kIGl0IHNo
b3VsZCB1c2UgcGF0Y2hpbmcgdG8gbWFrZSBpdCBmYXN0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ3Jlc3Mvc3dpdGNoLWNvbnN0YW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLWNvbnN0YW50LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtY29uc3Rh
bnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
c3dpdGNoLWNvbnN0YW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLWNv
bnN0YW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3
aXRjaC1jb25zdGFudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3N3aXRjaC1jb25zdGFudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zd2l0Y2gtY29uc3RhbnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3N3aXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3N3aXRjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMCBAQAorSlNSZWdyZXNzL3N3aXRjaAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3N3aXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
d2l0Y2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
d2l0Y2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3dpdGNoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLWNvbnN0
YW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3dpdGNoLWNvbnN0YW50LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtY29uc3RhbnQuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgc3dpdGNoIChvLmYpIHsK
KyAgICBjYXNlIDE6IHJldHVybiA1OworICAgIGNhc2UgMjogcmV0dXJuIDI7CisgICAgY2FzZSAz
OiByZXR1cm4gNzsKKyAgICBjYXNlIDQ6IHJldHVybiA5OworICAgIGNhc2UgNTogcmV0dXJuIG8u
ZiArIDE7CisgICAgY2FzZSA2OiByZXR1cm4gMDsKKyAgICBjYXNlIDc6IHJldHVybiA4OTsKKyAg
ICBjYXNlIDg6IHJldHVybiAyMzsKKyAgICBjYXNlIDk6IHJldHVybiAxMjsKKyAgICBjYXNlIDEw
OiByZXR1cm4gNTQ7CisgICAgY2FzZSAxMTogcmV0dXJuIDUzOworICAgIGRlZmF1bHQ6IHJldHVy
biA0MjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9
IGZvbyh7Zjo1fSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGJhcigp
OworaWYgKHJlc3VsdCAhPSA2MDAwMDAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3dpdGNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3dpdGNoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2guanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjcgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgc3dpdGNoIChvLmYpIHsKKyAgICBjYXNlIDE6
IHJldHVybiA1OworICAgIGNhc2UgMjogcmV0dXJuIDI7CisgICAgY2FzZSAzOiByZXR1cm4gNzsK
KyAgICBjYXNlIDQ6IHJldHVybiA5OworICAgIGNhc2UgNTogcmV0dXJuIG8uZiArIDE7CisgICAg
Y2FzZSA2OiByZXR1cm4gMDsKKyAgICBjYXNlIDc6IHJldHVybiA4OTsKKyAgICBjYXNlIDg6IHJl
dHVybiAyMzsKKyAgICBjYXNlIDk6IHJldHVybiAxMjsKKyAgICBjYXNlIDEwOiByZXR1cm4gNTQ7
CisgICAgY2FzZSAxMTogcmV0dXJuIDUzOworICAgIGRlZmF1bHQ6IHJldHVybiA0MjsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0IF49IGZvbyh7ZjppICUg
MTJ9KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gYmFyKCk7CitpZiAo
cmVzdWx0ICE9IDc4KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
</data>
<flag name="review"
          id="226173"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
    <flag name="commit-queue"
          id="226174"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>