<?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>40649</bug_id>
          
          <creation_ts>2010-06-15 19:36:32 -0700</creation_ts>
          <short_desc>Pull script line number from DocumentParser instead of pushing it to ScriptController</short_desc>
          <delta_ts>2010-06-22 18:21:57 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>238651</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-15 19:36:32 -0700</bug_when>
    <thetext>Pull script line number from DocumentParser instead of pushing it to ScriptController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238653</commentid>
    <comment_count>1</comment_count>
      <attachid>58848</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-15 19:54:38 -0700</bug_when>
    <thetext>Created attachment 58848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238654</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-15 20:04:11 -0700</bug_when>
    <thetext>Attachment 58848 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3337186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238656</commentid>
    <comment_count>3</comment_count>
      <attachid>58848</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-15 20:11:55 -0700</bug_when>
    <thetext>Comment on attachment 58848
Patch

Nits below:

WebCore/bindings/js/ScriptEventListener.cpp:74
 +          if (DocumentParser* parser = frame-&gt;document()-&gt;parser())
Wow, so much prettier with the new names.

WebCore/ChangeLog:10
 +          cleaner IMHO.
Can you measure how much this helps us?  I&apos;m curious what kind of scale change we need per token to move the benchmark.  I&apos;m pretty sure the benchmark moves per-branch per-character.

WebCore/bindings/js/ScriptEventListener.cpp:75
 +              lineNumber = parser-&gt;lineNumber() + 1;
Can you make this a static inline function just so we can give this wacky conversion a name?

WebCore/bindings/v8/ScriptEventListener.cpp:68
 +              lineNumber = parser-&gt;lineNumber();
No +1 here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238660</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-15 20:35:29 -0700</bug_when>
    <thetext>How did it end up as push in the first place?  Can we CC the folks involved in that change in case there is knowledge to be shared?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238685</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-15 23:28:03 -0700</bug_when>
    <thetext>Wow, nevermind.  This backwards design has been with us since back in the KJSProxy days.  Let&apos;s torch it. :)  I went back to r11588 and still found this stuff here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238686</commentid>
    <comment_count>6</comment_count>
      <attachid>58848</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-15 23:29:52 -0700</bug_when>
    <thetext>Comment on attachment 58848
Patch

I&apos;m changing this to a r-.  I&apos;d like to see perf numbers from this change (from running our parser benchmark) and I would like to see the lineNumber+1 hack encapsulated into some sort of function somewhere.  Probably just moved over into the ScriptController code.  If it had a eventHandlerlineNumber() accessor which knew how to call the parser and do the +1, that seems simplest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238687</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-15 23:31:43 -0700</bug_when>
    <thetext>Oh, and if we&apos;re fixing a bug with event handler line numbers and the xml parser we should be sure to test that.  I can help you write the xhtml or svg if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239476</commentid>
    <comment_count>8</comment_count>
      <attachid>59014</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 10:57:55 -0700</bug_when>
    <thetext>Created attachment 59014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239478</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 10:58:56 -0700</bug_when>
    <thetext>Attachment 59014 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 6 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>239480</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 11:01:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 58848 [details])
&gt; Nits below:
&gt; 
&gt; WebCore/bindings/js/ScriptEventListener.cpp:74
&gt;  +          if (DocumentParser* parser = frame-&gt;document()-&gt;parser())
&gt; Wow, so much prettier with the new names.

Yeah, nice work.

&gt; 
&gt; WebCore/ChangeLog:10
&gt;  +          cleaner IMHO.
&gt; Can you measure how much this helps us?  I&apos;m curious what kind of scale change we need per token to move the benchmark.  I&apos;m pretty sure the benchmark moves per-branch per-character.
&gt; 

Here are my results:

Before patch:
avg 3948.5
stdev 30.445853576472445
avg 3946.25
stdev 28.035468606748843

After patch:
avg 3861.7
stdev 28.241990014869703
avg 3859.4
stdev 28.793054718108667

&gt; WebCore/bindings/js/ScriptEventListener.cpp:75
&gt;  +              lineNumber = parser-&gt;lineNumber() + 1;
&gt; Can you make this a static inline function just so we can give this wacky conversion a name?
&gt;

Done.
 
&gt; WebCore/bindings/v8/ScriptEventListener.cpp:68
&gt;  +              lineNumber = parser-&gt;lineNumber();
&gt; No +1 here?

This matches the existing code. Adding the +1 makes the line number expectations in existing LayoutTests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239485</commentid>
    <comment_count>11</comment_count>
      <attachid>59017</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 11:07:36 -0700</bug_when>
    <thetext>Created attachment 59017
Fix tab in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239568</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 14:15:36 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; WebCore/bindings/v8/ScriptEventListener.cpp:68
&gt; &gt;  +              lineNumber = parser-&gt;lineNumber();
&gt; &gt; No +1 here?
&gt; 
&gt; This matches the existing code. Adding the +1 makes the line number expectations in existing LayoutTests fail.

Current LayoutTest expectations aren&apos;t necessarily right, especially when it comes to line numbers for scripts.  if this is a V8 vs. JSC difference we should abstract it away using ScriptController somehow.  Parser line numbers need to be translated to &quot;script engine&quot; line numbers in some way, and that shouldn&apos;t be by manual +1&apos;s in random places. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239570</commentid>
    <comment_count>13</comment_count>
      <attachid>59017</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 14:17:55 -0700</bug_when>
    <thetext>Comment on attachment 59017
Fix tab in ChangeLog

Wow, this patch is GORGEOUS.

I would kinda like a comment here to explain the +1.  At least we only have one +1 now though:
+    if (DocumentParser* parser = m_frame-&gt;document()-&gt;parser())
+        return parser-&gt;lineNumber() + 1;

Also, do we need some sort of XML-based event handler test to test the fixed line number handling for the XML parser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239733</commentid>
    <comment_count>14</comment_count>
      <attachid>59067</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 20:48:14 -0700</bug_when>
    <thetext>Created attachment 59067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239740</commentid>
    <comment_count>15</comment_count>
      <attachid>59069</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 21:29:13 -0700</bug_when>
    <thetext>Created attachment 59069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239743</commentid>
    <comment_count>16</comment_count>
      <attachid>59069</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 21:31:42 -0700</bug_when>
    <thetext>Comment on attachment 59069
Patch

Fantastic!

We should file a follow-up bug about passing your new test.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239746</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 21:36:40 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 59069 [details])
&gt; Fantastic!
&gt; 
&gt; We should file a follow-up bug about passing your new test.

https://bugs.webkit.org/show_bug.cgi?id=40809
&gt; 
&gt; Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240348</commentid>
    <comment_count>18</comment_count>
      <attachid>59069</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-19 09:04:49 -0700</bug_when>
    <thetext>Comment on attachment 59069
Patch

Rejecting patch 59069 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Last 500 characters of output:
rtree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Skipped list contained &apos;compositing/iframes/composited-iframe.html&apos;, but no file of that name could be found
Testing 19160 test cases.
svg/dom/script-line-number.xhtml -&gt; failed

Exiting early after 1 failures. 16783 tests run.
326.66s total testing time

16782 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
15 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/3301412</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240378</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-19 12:51:42 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 59069 [details])
&gt; Rejecting patch 59069 from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
&gt; Last 500 characters of output:
&gt; rtree
&gt; Compiling Java tests
&gt; make: Nothing to be done for `default&apos;.
&gt; Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
&gt; Skipped list contained &apos;compositing/iframes/composited-iframe.html&apos;, but no file of that name could be found
&gt; Testing 19160 test cases.
&gt; svg/dom/script-line-number.xhtml -&gt; failed
&gt; 
&gt; Exiting early after 1 failures. 16783 tests run.
&gt; 326.66s total testing time
&gt; 
&gt; 16782 test cases (99%) succeeded
&gt; 1 test case (&lt;1%) had incorrect layout
&gt; 15 test cases (&lt;1%) had stderr output
&gt; 
&gt; Full output: http://webkit-commit-queue.appspot.com/results/3301412

Is it possible to know which platform generated the failure? I&apos;m having trouble reproducing locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240454</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-20 09:15:20 -0700</bug_when>
    <thetext>The commit-queue runs on Mac Leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240455</commentid>
    <comment_count>21</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 09:45:33 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; The commit-queue runs on Mac Leopard.

I finally figured it out. It reports different line numbers when run after another test vs. being run by itself.

Something is really wacky with the line number from libxml2. I have two options:
1. Disable this new test in this patch
2. Fix the XML line numbers in this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240462</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-20 10:25:45 -0700</bug_when>
    <thetext>We&apos;re probablyl not resetting libxml&apos;s internal state in between uses.  You should feel free to skip the test (or make it simply not print the line numbers in the expectations).  Or you could also figure out how to reset libxml&apos;s internal state.  Thank you for chasing the goose, but don&apos;t feel obligated to run too far. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240467</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-20 10:39:25 -0700</bug_when>
    <thetext>We seem to use:
int XMLDocumentParser::lineNumber() const
{
    return context() ? context()-&gt;input-&gt;line : 1;
}

int XMLDocumentParser::columnNumber() const
{
    return context() ? context()-&gt;input-&gt;col : 1;
}

instead of:
http://xmlsoft.org/html/libxml-SAX2.html#xmlSAX2GetLineNumber

Not sure why.

It&apos;s possible that context-&gt;input gets re-used between contexts.  I kinda doubt it though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240470</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-20 10:44:16 -0700</bug_when>
    <thetext>I suggest just skipping on libxml platforms.  This stuff is complicated and broken.  If you&apos;d like to dive into libXML2 feel free, but I&apos;ve been there.  It&apos;s a trail of tears.  Mostly we end up having to be careful because libxml2 keeps a lot of global state, and clients of WebKit may also be clients of libxml.  When we&apos;ve talked with DV (the author of libxml2) he&apos;s expressly discouraged using libxml2 from a library like we do.  So we have to hack around various bits of libxml2, like its encoding detection, because we only use it for its xml parsing, and not for all the http fetching, encoding detection, tree building, etc. that it has built into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240491</commentid>
    <comment_count>25</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 11:46:21 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I suggest just skipping on libxml platforms.  This stuff is complicated and broken.  If you&apos;d like to dive into libXML2 feel free, but I&apos;ve been there.  It&apos;s a trail of tears.  Mostly we end up having to be careful because libxml2 keeps a lot of global state, and clients of WebKit may also be clients of libxml.  When we&apos;ve talked with DV (the author of libxml2) he&apos;s expressly discouraged using libxml2 from a library like we do.  So we have to hack around various bits of libxml2, like its encoding detection, because we only use it for its xml parsing, and not for all the http fetching, encoding detection, tree building, etc. that it has built into it.

Well context-&gt;input-&gt;line, context-&gt;node-&gt;line, and xmlSAX2GetLineNumber(context) all seem to behave identically. I also tried setting context-&gt;linenumbers = 1 and lineNumbersDefault(1) during initialization. So I&apos;m giving up on chasing this goose.

Since libxml2 is used everywhere except QT, this would have to be skipped everywhere except there. I don&apos;t have a convenient way to build and test QT to see if the test works there, so I just commented out the expectations in the layout test and linked to https://bugs.webkit.org/show_bug.cgi?id=40809.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240492</commentid>
    <comment_count>26</comment_count>
      <attachid>59204</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-20 11:48:45 -0700</bug_when>
    <thetext>Created attachment 59204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241192</commentid>
    <comment_count>27</comment_count>
      <attachid>59204</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 01:50:05 -0700</bug_when>
    <thetext>Comment on attachment 59204
Patch

This si fine.  Seems silly land LayoutTests/svg/dom/script-line-number.xhtml which does nothing.  would be better to just attach it to the bug which is going to fix it instead. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241280</commentid>
    <comment_count>28</comment_count>
      <attachid>59377</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 08:57:56 -0700</bug_when>
    <thetext>Created attachment 59377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241281</commentid>
    <comment_count>29</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 08:59:05 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 59204 [details])
&gt; This si fine.  Seems silly land LayoutTests/svg/dom/script-line-number.xhtml which does nothing.  would be better to just attach it to the bug which is going to fix it instead. :)

Okay, I&apos;ve removed the SVG test. I&apos;m attaching it to https://bugs.webkit.org/show_bug.cgi?id=40809 now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241372</commentid>
    <comment_count>30</comment_count>
      <attachid>59377</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 11:55:10 -0700</bug_when>
    <thetext>Comment on attachment 59377
Patch

You can just re-upload with &quot;land-safely&quot; which will queue it for the commit-queue (or you can mark the patch yourself).  If the reviewer field is filled in, you don&apos;t need another review, just cq+ (which now that you&apos;re a committer you can give yourself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241545</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-22 16:56:38 -0700</bug_when>
    <thetext>Committed r61640: &lt;http://trac.webkit.org/changeset/61640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241562</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 17:35:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61640 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/61640
http://trac.webkit.org/changeset/61638
http://trac.webkit.org/changeset/61639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241580</commentid>
    <comment_count>33</comment_count>
      <attachid>59453</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 18:20:10 -0700</bug_when>
    <thetext>Created attachment 59453
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58848</attachid>
            <date>2010-06-15 19:54:38 -0700</date>
            <delta_ts>2010-06-17 10:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100615195437.patch</filename>
            <type>text/plain</type>
            <size>12347</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmQ3NWVjMWIwMWYyNDYxZjEyMTg4ZTY4MzliN2YxOGU4OWE1Yjk5Zi4uMzYyODlmMzk2OWI2MTQy
MzlmYmE4YjAxY2VhZTI2MWNjZTBhN2I5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNi0xNSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1bGwgc2NyaXB0IGxpbmUgbnVtYmVyIGZyb20g
RG9jdW1lbnRQYXJzZXIgaW5zdGVhZCBvZiBwdXNoaW5nIGl0IHRvIFNjcmlwdENvbnRyb2xsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjQ5CisK
KyAgICAgICAgVGhpcyBhdm9pZHMgZG9pbmcgd29yayBpbiBhIHZlcnkgaG90IGxvb3AgKGFmdGVy
IGV2ZXJ5IHRva2VuKSwgYW5kCisgICAgICAgIGluc3RlYWQgb25seSBkb2VzIGl0IHdoZW4gYW4g
ZXZlbnQgaGFuZGxlciBhY3R1YWxseSBleGlzdHMuIEl0IGlzIGFsc28KKyAgICAgICAgY2xlYW5l
ciBJTUhPLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmV2
ZW50TGlzdGVuZXJIYW5kbGVyTG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJv
eHkuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAg
ICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1
RG9jdW1lbnRQYXJzZXI6OnB1bXBMZXhlcik6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNz
VG9rZW4pOgorCiAyMDEwLTA2LTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggNWM0YmQ0YzI3ZjQ4NTNlNjlkN2YyMzRkMmNjYTI4NmY2YjIy
ZjUyYS4uZGE3MGU1ZTYyODRiMmEzYzI2MjUyMjUxNzJhODc1NWZmZGE3OWQ0MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02MCw3ICs2MCw2IEBAIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpCiAKIFNjcmlwdENvbnRyb2xs
ZXI6OlNjcmlwdENvbnRyb2xsZXIoRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkK
LSAgICAsIG1faGFuZGxlckxpbmVOdW1iZXIoMCkKICAgICAsIG1fc291cmNlVVJMKDApCiAgICAg
LCBtX2luRXhlY3V0ZVNjcmlwdChmYWxzZSkKICAgICAsIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJh
Y2soZmFsc2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGVlN2Nj
N2Q4NTVhN2VjOGI0OTYwNTJjMDExMTg1NWYzYmMyMzk5NmEuLmRkOTVhZWI4MmI2OWExYzFmYzYx
Nzc1NTVkZmJmMzJlZDgyNWFhMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCkBAIC0xMTcsOSArMTE3LDYgQEAgcHVibGljOgogICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTaG91bGRBbGxvd1hTUyBzaG91bGRBbGxvd1hTUyA9
IERvTm90QWxsb3dYU1MpOwogICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkKiwgU2hvdWxkQWxsb3dYU1Mgc2hvdWxk
QWxsb3dYU1MgPSBEb05vdEFsbG93WFNTKTsKIAotICAgIHZvaWQgc2V0RXZlbnRIYW5kbGVyTGlu
ZU51bWJlcihpbnQgbGluZW5vKSB7IG1faGFuZGxlckxpbmVOdW1iZXIgPSBsaW5lbm87IH0KLSAg
ICBpbnQgZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHsgcmV0dXJuIG1faGFuZGxlckxpbmVOdW1i
ZXI7IH0KLQogICAgIHZvaWQgc2V0UHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2soYm9vbCBiKSB7IG1f
cHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2sgPSBiOyB9CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUoRE9NV3JhcHBlcldvcmxkKikgY29uc3Q7CiAgICAgYm9vbCBhbnlQYWdlSXNQcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSBjb25zdDsKQEAgLTE4Nyw3ICsxODQsNiBAQCBwcml2YXRlOgogCiAg
ICAgU2hlbGxNYXAgbV93aW5kb3dTaGVsbHM7CiAgICAgRnJhbWUqIG1fZnJhbWU7Ci0gICAgaW50
IG1faGFuZGxlckxpbmVOdW1iZXI7CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAog
ICAgIGJvb2wgbV9pbkV4ZWN1dGVTY3JpcHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAppbmRleCA0NjdmMTZiOTQwNjJkYTc1NjlkNzQ0MWE1N2NhZWZhMGNk
YzYwNmNmLi5kNDY2NTk3MWY1MThjNWZlZjAxYTYxMDI1ZDA4ODAzNjFjZmZlZjZmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTcxLDcgKzcxLDgg
QEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICB9CiAKLSAgICAgICAgbGluZU51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxl
ckxpbmVOdW1iZXIoKTsKKyAgICAgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgICAgICAgICBsaW5lTnVtYmVyID0gcGFyc2Vy
LT5saW5lTnVtYmVyKCkgKyAxOwogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKTsKICAgICB9CiAKQEAgLTk5LDcgKzEwMCw4IEBAIFBhc3NSZWZQdHI8
SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSog
ZnJhbWUsIEF0dHJpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGxpbmVOdW1iZXIg
PSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7CisgICAgaWYgKERv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAg
ICAgIGxpbmVOdW1iZXIgPSBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDE7CiAgICAgc291cmNlVVJM
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAgIEpTT2JqZWN0KiB3cmFw
cGVyID0gdG9KU0RPTVdpbmRvdyhmcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAg
IHJldHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3Ry
aW5nKCksIGV2ZW50UGFyYW1ldGVyTmFtZShmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVu
dCgpKSwgYXR0ci0+dmFsdWUoKSwgMCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCB3cmFwcGVyLCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2ODFlMWE0Yjc3ZTIwNTJmZGFmNTNjZDMwMTAzZWY1OTM3NDdkODM2Li5j
MmVhMWU0ZjA4N2EwNDBkNjlmYzM2N2VmOTVkYjBkOTZjYjZkZGFkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI1OCwxMSArMjU4LDYgQEAgU2NyaXB0VmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgU2hvdWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUob2JqZWN0KTsKIH0KIAotdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVt
YmVyKQotewotICAgIG1fcHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJl
cik7Ci19Ci0KIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQq
IGV2ZW50KQogewogICAgIG1fcHJveHktPmZpbmlzaGVkV2l0aEV2ZW50KGV2ZW50KTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNWQ0YjgzZTBkYmIxYzg0YWVkODc1
Yzk3M2Y2YjhlYWZmMTEzZWI5NS4uNzc5ZDc0NzYzNGNjN2YwOWM5YWFkZjBlMGY3YmZkMzNkMTdl
NWQ4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTE1Myw3ICsx
NTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2NVbnByb3RlY3RKU1dyYXBwZXIodm9p
ZCopOwogCiAgICAgdm9pZCBmaW5pc2hlZFdpdGhFdmVudChFdmVudCopOwotICAgIHZvaWQgc2V0
RXZlbnRIYW5kbGVyTGluZU51bWJlcihpbnQgbGluZU51bWJlcik7CiAKICAgICB2b2lkIHNldFBy
b2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2spIHsgbV9w
cm9jZXNzaW5nVGltZXJDYWxsYmFjayA9IHByb2Nlc3NpbmdUaW1lckNhbGxiYWNrOyB9CiAgICAg
Ly8gRklYTUU6IEN1cnJlbnRseSB3ZSBkb24ndCB1c2UgdGhlIHBhcmFtZXRlciB3b3JsZCBhdCBh
bGwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAppbmRleCA1
N2EyODI0YTg1MjY1OGE5NmVjZDAzMmU0NTE1NDU4NjZmZDEzNWNjLi43YzRlZDNiMjU0M2NmNDEz
NTRiMGNmYzAzMzdhYTlkOGE1Yzg0ZWZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTY0LDEwICs2NCw5IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZl
bnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRy
aWJ1CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
dG8gdXNlIHNjcmlwdC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1wbGVtZW50ZWQu
Ci0gICAgICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpLT5s
aW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+cGFyc2VyKCktPmNvbHVtbk51bWJlcigpOworICAgICAgICBpZiAoRG9jdW1lbnRQYXJzZXIq
IHBhcnNlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkgeworICAgICAgICAgICAgbGlu
ZU51bWJlciA9IHBhcnNlci0+bGluZU51bWJlcigpOworICAgICAgICAgICAgY29sdW1uTnVtYmVy
ID0gcGFyc2VyLT5jb2x1bW5OdW1iZXIoKTsKICAgICAgICAgfQogICAgICAgICBzb3VyY2VVUkwg
PSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICB9CkBAIC05NywxMCArOTYs
OSBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBDaGFuZ2UgdG8gdXNlIHNjcmlwdC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1w
bGVtZW50ZWQuCi0gICAgICAgIGxpbmVOdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2Vy
KCktPmxpbmVOdW1iZXIoKTsKLSAgICAgICAgY29sdW1uTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50
KCktPnBhcnNlcigpLT5jb2x1bW5OdW1iZXIoKTsKKyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBh
cnNlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkgeworICAgICAgICBsaW5lTnVtYmVy
ID0gcGFyc2VyLT5saW5lTnVtYmVyKCk7CisgICAgICAgIGNvbHVtbk51bWJlciA9IHBhcnNlci0+
Y29sdW1uTnVtYmVyKCk7CiAgICAgfQogICAgIHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKTsKICAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1
bWVudCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApp
bmRleCAwOThkOTU2ZTJjNjIwZDcxNTRjNjJlMmVlNmQ0YTUzMzJhMzBjMjA0Li42NDg3NTE0OTA2
YzEwYmMxOGFlZDQ2Y2FkNmM4OWU5Yjg2MmRiMjQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAt
MjAxLDcgKzIwMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVtYmVyKSB7
IG1faGFuZGxlckxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOyB9CiAgICAgICAgIHZvaWQgZmluaXNo
ZWRXaXRoRXZlbnQoRXZlbnQqKSB7IH0KIAogICAgICAgICAvLyBFdmFsdWF0ZSBKYXZhU2NyaXB0
IGluIGEgbmV3IGlzb2xhdGVkIHdvcmxkLiBUaGUgc2NyaXB0IGdldHMgaXRzIG93bgpAQCAtMzU4
LDggKzM1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9yIHRoZSBtb21l
bnQsIHdlIGhhdmUgb25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3aWxsIGhhdmUgb25lIHBlciBET01X
cmFwcGVyV29ybGQuCiAgICAgICAgIFJlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBtX3dpbmRvd1No
ZWxsOwogCi0gICAgICAgIGludCBtX2hhbmRsZXJMaW5lTnVtYmVyOwotCiAgICAgICAgIC8vIFRy
dWUgZm9yIDxhIGhyZWY9ImphdmFzY3JpcHQ6Zm9vKCkiPiBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+
Zm9vKCk8L3NjcmlwdD4uCiAgICAgICAgIC8vIE9ubHkgdmFsaWQgZHVyaW5nIGV4ZWN1dGlvbi4K
ICAgICAgICAgYm9vbCBtX2lubGluZUNvZGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCAyYTFiYWM2MDkzZDdlZGFjOThkMWVlYjMxZThlZWY3Njg4Zjc1ZmI0
Li5jMTM5OWZjZTkzMjEzZGFiNmE4NzllNTg1ZTIxM2Y0ZjM0MDc2ZmZlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtNzgzLDE5ICs3ODIsMTIgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1l
LCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlwdENvbnRy
b2xsZXIqIGpzUHJveHkgPSBtX2RvYy0+ZnJhbWUoKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQo
KSA6IDA7Ci0gICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgIGpzUHJveHkt
PnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsKLQogICAgIGhhbmRsZUVs
ZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0
dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIGlmIChlYykgewogICAg
ICAgICBzdG9wUGFyc2luZygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGpz
UHJveHkpCi0gICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoMCk7Ci0K
ICAgICBuZXdFbGVtZW50LT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAgU2NyaXB0RWxl
bWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChuZXdFbGVtZW50LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyOTljM2Q5MjcwYTQ4MmFkYjAy
NTRmN2U5MGU4NDZmYmY3YjJmMzg3Li40OTBmYWVkZWQxYzM3N2M2NWJhMWYwNjMzNzMyZjZkNDdl
M2U1MmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTMsMTYgKzE5
Myw5IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVyKFN5bmNocm9ub3VzTW9k
ZSBtb2RlKQogICAgICAgICBpZiAoIW1fbGV4ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQo
KSwgbV90b2tlbikpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoU2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQotICAgICAgICAgICAgc2NyaXB0
Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5lTnVtYmVyKCkgKyAxKTsK
LQogICAgICAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rv
a2VuKTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOwogCi0gICAgICAgIC8vIEZJWE1FOiBXaHkg
aXMgc2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKSBuZWNlc3Nhcnk/Ci0gICAgICAgIGlmIChT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gc2NyaXB0KCkpCi0gICAgICAgICAg
ICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKDApOwotCiAgICAg
ICAgIGlmICghbV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2VkKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBjNWU2MmI2NzA4MDFi
YzQxMmI1NTBlNzI0ZDJmN2RlMmRkMWYwNDAxLi5iZTdjNWQ0NDVjNjhjYWI5NDJjZWEyMzgwMjQ5
NjY2MTU2ZmQzYjg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDgsNyAr
NDgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgpAQCAtMTg4OCwxOCArMTg4NywxMiBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKIAogUGFzc1JlZlB0cjxOb2RlPiBI
VE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiB7Ci0gICAgU2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0Q29udHJvbGxlciA9ICghbV9mcmFnbWVudCAmJiBtX2RvYy0+ZnJhbWUoKSkgPyBt
X2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwotICAgIGlmIChzY3JpcHRDb250cm9sbGVyICYm
IHNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSkKLSAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCB0aGlzIG1fY3VycmVudFNjcmlwdFRh
Z1N0YXJ0TGluZU51bWJlcj8gIEkgc3VzcGVjdCB0aGlzIGlzIHdyb25nLgotICAgICAgICBzY3Jp
cHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKG1fY3VycmVudFRhZ1N0YXJ0
TGluZU51bWJlciArIDEpOyAvLyBTY3JpcHQgbGluZSBudW1iZXJzIGFyZSAxIGJhc2VkLgogICAg
IGlmIChtX2Rlc3QgPiBtX2J1ZmZlcikgewogICAgICAgICBtX2N1cnJlbnRUb2tlbi50ZXh0ID0g
U3RyaW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMobV9idWZmZXIsIG1fZGVz
dCAtIG1fYnVmZmVyKTsKICAgICAgICAgaWYgKG1fY3VycmVudFRva2VuLnRhZ05hbWUgIT0gY29t
bWVudEF0b20pCiAgICAgICAgICAgICBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID0gdGV4dEF0b207
CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09IG51bGxBdG9tKSB7CiAg
ICAgICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7Ci0gICAgICAgIGlmIChzY3JpcHRDb250cm9s
bGVyKQotICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51
bWJlcihtX2xpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUgbnVtYmVycyBhcmUgMSBiYXNl
ZC4KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xOTE3LDggKzE5MTAsNiBAQCBQYXNz
UmVmUHRyPE5vZGU+IEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkKICAgICAgICAg
ICAgIG4gPSBtX3RyZWVDb25zdHJ1Y3Rvci0+cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwog
ICAgIH0KICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwotICAgIGlmIChzY3JpcHRDb250cm9s
bGVyKQotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVy
KDApOwogCiAgICAgcmV0dXJuIG4ucmVsZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59014</attachid>
            <date>2010-06-17 10:57:55 -0700</date>
            <delta_ts>2010-06-17 11:07:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100617105753.patch</filename>
            <type>text/plain</type>
            <size>12185</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2YxOWQ4MjRlYTVjMzc0ODRiYzM2OWFkMDA4ODQ0YjYzYmI0NDAyNy4uMjdlNGIwYzg0ZTIxODgx
YmQ4YWM2MTRiODM0ODVlNDQ3NDU2MmNjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNi0xNyAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1bGwgc2NyaXB0IGxpbmUgbnVtYmVyIGZyb20g
RG9jdW1lbnRQYXJzZXIgaW5zdGVhZCBvZiBwdXNoaW5nIGl0IHRvIFNjcmlwdENvbnRyb2xsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjQ5CisK
KwlUaGlzIGFwcHJvYWNoIGlzIGNsZWFuZXIgYW5kIGltcHJvdmVzIFdlYkNvcmUvYmVuY2htYXJr
cy9wYXJzZXIvaHRtbC1wYXJzZXIuaHRtbCBieSB+MiUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2Ugbm8gbmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OlNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
ZXZlbnRIYW5kbGVyTGluZU51bWJlcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJDb2x1
bW5OdW1iZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6
CisgICAgICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6OnB1bXBMZXhlcik6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2Vy
Ojpwcm9jZXNzVG9rZW4pOgorCiAyMDEwLTA2LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWM0YmQ0YzI3ZjQ4NTNlNjlkN2YyMzRkMmNj
YTI4NmY2YjIyZjUyYS4uYmI5MGE3NzkzNTk5OWE1MTRkZTM5YTRjN2EyNTEwNzcyZDU0ZGEzMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMSw2ICsyMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
CisjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjAsNyArNjEsNiBAQCB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKQogCiBTY3JpcHRDb250
cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJh
bWUpCi0gICAgLCBtX2hhbmRsZXJMaW5lTnVtYmVyKDApCiAgICAgLCBtX3NvdXJjZVVSTCgwKQog
ICAgICwgbV9pbkV4ZWN1dGVTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NpbmdUaW1lckNh
bGxiYWNrKGZhbHNlKQpAQCAtMjM1LDYgKzIzNSwxMyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgcmV0
dXJuIHdpbmRvd1NoZWxsOwogfQogCitpbnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVy
TGluZU51bWJlcigpIGNvbnN0Cit7CisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+bGlu
ZU51bWJlcigpICsgMTsKKyAgICByZXR1cm4gMDsKK30KKyAgICAKIGJvb2wgU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpIGNvbnN0
CiB7CiAgICAgaWYgKG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luIHx8IGlzSmF2YVNjcmlwdEFuY2hv
ck5hdmlnYXRpb24oKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXgg
ZWU3Y2M3ZDg1NWE3ZWM4YjQ5NjA1MmMwMTExODU1ZjNiYzIzOTk2YS4uMGRlYmYzOWI1ZGZkODdk
MjQ3ZGI1N2FkNDJmMGNhZWQzOGM0MzBhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKQEAgLTExNyw5ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgU2NyaXB0VmFsdWUgZXZh
bHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNob3VsZEFsbG93WFNTIHNob3VsZEFsbG93
WFNTID0gRG9Ob3RBbGxvd1hTUyk7CiAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldvcmxkKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQqLCBTaG91bGRBbGxvd1hTUyBz
aG91bGRBbGxvd1hTUyA9IERvTm90QWxsb3dYU1MpOwogCi0gICAgdm9pZCBzZXRFdmVudEhhbmRs
ZXJMaW5lTnVtYmVyKGludCBsaW5lbm8pIHsgbV9oYW5kbGVyTGluZU51bWJlciA9IGxpbmVubzsg
fQotICAgIGludCBldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgeyByZXR1cm4gbV9oYW5kbGVyTGlu
ZU51bWJlcjsgfQotCisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdDsKKyAg
ICAKICAgICB2b2lkIHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgYikgeyBtX3Byb2Nl
c3NpbmdUaW1lckNhbGxiYWNrID0gYjsgfQogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KERPTVdyYXBwZXJXb3JsZCopIGNvbnN0OwogICAgIGJvb2wgYW55UGFnZUlzUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkgY29uc3Q7CkBAIC0xODcsNyArMTg2LDYgQEAgcHJpdmF0ZToKIAogICAgIFNo
ZWxsTWFwIG1fd2luZG93U2hlbGxzOwogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIGludCBtX2hh
bmRsZXJMaW5lTnVtYmVyOwogICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CiAKICAgICBi
b29sIG1faW5FeGVjdXRlU2NyaXB0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggNjgxZTFhNGI3N2UyMDUyZmRhZjUzY2QzMDEwM2VmNTkzNzQ3ZDgzNi4uOWY2
YzM0NGVjZGNlZDY2MjVkNDQ0MTg2NDg4NGUzYjEyOTdiNmE1YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJQ
bGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAgLTI1OCw5ICsyNTksMTggQEAgU2NyaXB0VmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgU2hvdWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUob2JqZWN0KTsKIH0KIAotdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVt
YmVyKQoraW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25z
dAogewotICAgIG1fcHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcik7
CisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5w
YXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpOworICAgIHJldHVy
biAwOworfQorCitpbnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyQ29sdW1uTnVtYmVy
KCkgY29uc3QKK3sKKyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnBhcnNlcigpKQorICAgICAgICByZXR1cm4gcGFyc2VyLT5jb2x1bW5OdW1iZXIo
KTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpmaW5pc2hlZFdp
dGhFdmVudChFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
CmluZGV4IDVkNGI4M2UwZGJiMWM4NGFlZDg3NWM5NzNmNmI4ZWFmZjExM2ViOTUuLjMxODcxODBi
MDZhZGJjYmFjZTRjOWU4OWIzNGU5ODFiY2MwOTAwOGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC0xNTMsNyArMTUzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGdjVW5wcm90ZWN0SlNXcmFwcGVyKHZvaWQqKTsKIAogICAgIHZvaWQgZmluaXNoZWRXaXRo
RXZlbnQoRXZlbnQqKTsKLSAgICB2b2lkIHNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoaW50IGxp
bmVOdW1iZXIpOworCisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdDsKKyAg
ICBpbnQgZXZlbnRIYW5kbGVyQ29sdW1uTnVtYmVyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFBy
b2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2spIHsgbV9w
cm9jZXNzaW5nVGltZXJDYWxsYmFjayA9IHByb2Nlc3NpbmdUaW1lckNhbGxiYWNrOyB9CiAgICAg
Ly8gRklYTUU6IEN1cnJlbnRseSB3ZSBkb24ndCB1c2UgdGhlIHBhcmFtZXRlciB3b3JsZCBhdCBh
bGwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAppbmRleCA1
N2EyODI0YTg1MjY1OGE5NmVjZDAzMmU0NTE1NDU4NjZmZDEzNWNjLi42M2U3ZGZmYTEwOTc3ZGY0
MzYxZmU0NWMyMzY5NmE3NjQ4NDMzNjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTY0LDExICs2NCw4IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZl
bnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRy
aWJ1CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
dG8gdXNlIHNjcmlwdC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1wbGVtZW50ZWQu
Ci0gICAgICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpLT5s
aW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+cGFyc2VyKCktPmNvbHVtbk51bWJlcigpOwotICAgICAgICB9CisgICAgICAgIGxpbmVOdW1i
ZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7CisgICAgICAg
IGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckNvbHVtbk51bWJl
cigpOwogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KTsKICAgICB9CiAKQEAgLTk3LDExICs5NCw4IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0
ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+cGFy
c2VyKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IENoYW5nZSB0byB1c2Ugc2NyaXB0LT5ldmVudEhh
bmRsZXJMaW5lTnVtYmVyKCkgd2hlbiBpbXBsZW1lbnRlZC4KLSAgICAgICAgbGluZU51bWJlciA9
IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+bGluZU51bWJlcigpOwotICAgICAgICBjb2x1
bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmNvbHVtbk51bWJlcigpOwot
ICAgIH0KKyAgICBsaW5lTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGlu
ZU51bWJlcigpOworICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFu
ZGxlckNvbHVtbk51bWJlcigpOwogICAgIHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmcoKTsKICAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0
dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVu
dCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
V29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApp
bmRleCAwOThkOTU2ZTJjNjIwZDcxNTRjNjJlMmVlNmQ0YTUzMzJhMzBjMjA0Li42NDg3NTE0OTA2
YzEwYmMxOGFlZDQ2Y2FkNmM4OWU5Yjg2MmRiMjQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAt
MjAxLDcgKzIwMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVtYmVyKSB7
IG1faGFuZGxlckxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOyB9CiAgICAgICAgIHZvaWQgZmluaXNo
ZWRXaXRoRXZlbnQoRXZlbnQqKSB7IH0KIAogICAgICAgICAvLyBFdmFsdWF0ZSBKYXZhU2NyaXB0
IGluIGEgbmV3IGlzb2xhdGVkIHdvcmxkLiBUaGUgc2NyaXB0IGdldHMgaXRzIG93bgpAQCAtMzU4
LDggKzM1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9yIHRoZSBtb21l
bnQsIHdlIGhhdmUgb25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3aWxsIGhhdmUgb25lIHBlciBET01X
cmFwcGVyV29ybGQuCiAgICAgICAgIFJlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBtX3dpbmRvd1No
ZWxsOwogCi0gICAgICAgIGludCBtX2hhbmRsZXJMaW5lTnVtYmVyOwotCiAgICAgICAgIC8vIFRy
dWUgZm9yIDxhIGhyZWY9ImphdmFzY3JpcHQ6Zm9vKCkiPiBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+
Zm9vKCk8L3NjcmlwdD4uCiAgICAgICAgIC8vIE9ubHkgdmFsaWQgZHVyaW5nIGV4ZWN1dGlvbi4K
ICAgICAgICAgYm9vbCBtX2lubGluZUNvZGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCAyYTFiYWM2MDkzZDdlZGFjOThkMWVlYjMxZThlZWY3Njg4Zjc1ZmI0
Li5jMTM5OWZjZTkzMjEzZGFiNmE4NzllNTg1ZTIxM2Y0ZjM0MDc2ZmZlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtNzgzLDE5ICs3ODIsMTIgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1l
LCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlwdENvbnRy
b2xsZXIqIGpzUHJveHkgPSBtX2RvYy0+ZnJhbWUoKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQo
KSA6IDA7Ci0gICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgIGpzUHJveHkt
PnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsKLQogICAgIGhhbmRsZUVs
ZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0
dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIGlmIChlYykgewogICAg
ICAgICBzdG9wUGFyc2luZygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGpz
UHJveHkpCi0gICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoMCk7Ci0K
ICAgICBuZXdFbGVtZW50LT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAgU2NyaXB0RWxl
bWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChuZXdFbGVtZW50LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAppbmRleCBhMWM5MDU5MzY3NjBiNjkwZGI5
YTljMTI1MmY1MDAyMzdkZjUyNmQ2Li40YTI5M2M4ZWM1NDEzMWNkY2NiOGMzMTY1OTdjNGNmMjQ3
MDk1NTNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTMsMTYgKzE5
Myw5IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVyKFN5bmNocm9ub3VzTW9k
ZSBtb2RlKQogICAgICAgICBpZiAoIW1fbGV4ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQo
KSwgbV90b2tlbikpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoU2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQotICAgICAgICAgICAgc2NyaXB0
Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5lTnVtYmVyKCkgKyAxKTsK
LQogICAgICAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rv
a2VuKTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOwogCi0gICAgICAgIC8vIEZJWE1FOiBXaHkg
aXMgc2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKSBuZWNlc3Nhcnk/Ci0gICAgICAgIGlmIChT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gc2NyaXB0KCkpCi0gICAgICAgICAg
ICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKDApOwotCiAgICAg
ICAgIGlmICghbV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2VkKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyN2YwMTYzNGZkMjkw
MDM2NjA5MGE3MjljZTA5ODEzMDJhZGEwODdmLi4xYWEyMjRlNDkyNDMzOGE5OGY5NzY0MjkzOWQ1
NDIwYTUwMWFjNTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDgsNyAr
NDgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgpAQCAtMTg5MywxOCArMTg5MiwxMiBA
QCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKCkKIAogUGFzc1JlZlB0
cjxOb2RlPiBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiB7Ci0gICAgU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9ICghbV9mcmFnbWVudCAmJiBtX2RvYy0+ZnJh
bWUoKSkgPyBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwotICAgIGlmIChzY3JpcHRDb250
cm9sbGVyICYmIHNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9F
eGVjdXRlU2NyaXB0KSkKLSAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCB0aGlzIG1fY3VycmVu
dFNjcmlwdFRhZ1N0YXJ0TGluZU51bWJlcj8gIEkgc3VzcGVjdCB0aGlzIGlzIHdyb25nLgotICAg
ICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKG1fY3VycmVu
dFRhZ1N0YXJ0TGluZU51bWJlciArIDEpOyAvLyBTY3JpcHQgbGluZSBudW1iZXJzIGFyZSAxIGJh
c2VkLgogICAgIGlmIChtX2Rlc3QgPiBtX2J1ZmZlcikgewogICAgICAgICBtX2N1cnJlbnRUb2tl
bi50ZXh0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMobV9idWZm
ZXIsIG1fZGVzdCAtIG1fYnVmZmVyKTsKICAgICAgICAgaWYgKG1fY3VycmVudFRva2VuLnRhZ05h
bWUgIT0gY29tbWVudEF0b20pCiAgICAgICAgICAgICBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID0g
dGV4dEF0b207CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09IG51bGxB
dG9tKSB7CiAgICAgICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7Ci0gICAgICAgIGlmIChzY3Jp
cHRDb250cm9sbGVyKQotICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5k
bGVyTGluZU51bWJlcihtX2xpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUgbnVtYmVycyBh
cmUgMSBiYXNlZC4KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xOTIyLDggKzE5MTUs
NiBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkK
ICAgICAgICAgICAgIG4gPSBtX3RyZWVDb25zdHJ1Y3Rvci0+cGFyc2VUb2tlbigmbV9jdXJyZW50
VG9rZW4pOwogICAgIH0KICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwotICAgIGlmIChzY3Jp
cHRDb250cm9sbGVyKQotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJM
aW5lTnVtYmVyKDApOwogCiAgICAgcmV0dXJuIG4ucmVsZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59017</attachid>
            <date>2010-06-17 11:07:36 -0700</date>
            <delta_ts>2010-06-17 20:48:10 -0700</delta_ts>
            <desc>Fix tab in ChangeLog</desc>
            <filename>bug-40649-20100617110735.patch</filename>
            <type>text/plain</type>
            <size>12192</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2YxOWQ4MjRlYTVjMzc0ODRiYzM2OWFkMDA4ODQ0YjYzYmI0NDAyNy4uODEwZDdkYzc1M2FkY2Uy
NjUwNTAzNjE1ZjgyM2I2ZWFjN2NhODAwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNi0xNyAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1bGwgc2NyaXB0IGxpbmUgbnVtYmVyIGZyb20g
RG9jdW1lbnRQYXJzZXIgaW5zdGVhZCBvZiBwdXNoaW5nIGl0IHRvIFNjcmlwdENvbnRyb2xsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjQ5CisK
KyAgICAgICAgVGhpcyBhcHByb2FjaCBpcyBjbGVhbmVyIGFuZCBpbXByb3ZlcyBXZWJDb3JlL2Jl
bmNobWFya3MvcGFyc2VyL2h0bWwtcGFyc2VyLmh0bWwgYnkgfjIlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxp
bmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5k
bGVyQ29sdW1uTnVtYmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogZG9tL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVt
ZW50TnMpOgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dFBhcnNlcjo6cHJvY2Vzc1Rva2VuKToKKwogMjAxMC0wNi0xNyAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDVjNGJkNGMyN2Y0ODUzZTY5ZDdm
MjM0ZDJjY2EyODZmNmIyMmY1MmEuLmJiOTBhNzc5MzU5OTlhNTE0ZGUzOWE0YzdhMjUxMDc3MmQ1
NGRhMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEs
NiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTYwLDcgKzYx
LDYgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCkKIAogU2Ny
aXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2Zy
YW1lKGZyYW1lKQotICAgICwgbV9oYW5kbGVyTGluZU51bWJlcigwKQogICAgICwgbV9zb3VyY2VV
UkwoMCkKICAgICAsIG1faW5FeGVjdXRlU2NyaXB0KGZhbHNlKQogICAgICwgbV9wcm9jZXNzaW5n
VGltZXJDYWxsYmFjayhmYWxzZSkKQEAgLTIzNSw2ICsyMzUsMTMgQEAgSlNET01XaW5kb3dTaGVs
bCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQog
ICAgIHJldHVybiB3aW5kb3dTaGVsbDsKIH0KIAoraW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50
SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdAoreworICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFy
c2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgICAgIHJldHVybiBwYXJz
ZXItPmxpbmVOdW1iZXIoKSArIDE7CisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBib29sIFNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZShET01XcmFwcGVyV29ybGQqIHdvcmxk
KSBjb25zdAogewogICAgIGlmIChtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiB8fCBpc0phdmFTY3Jp
cHRBbmNob3JOYXZpZ2F0aW9uKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CmluZGV4IGVlN2NjN2Q4NTVhN2VjOGI0OTYwNTJjMDExMTg1NWYzYmMyMzk5NmEuLjBkZWJmMzli
NWRmZDg3ZDI0N2RiNTdhZDQyZjBjYWVkMzhjNDMwYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC0xMTcsOSArMTE3LDggQEAgcHVibGljOgogICAgIFNjcmlwdFZh
bHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTaG91bGRBbGxvd1hTUyBzaG91
bGRBbGxvd1hTUyA9IERvTm90QWxsb3dYU1MpOwogICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5X
b3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkKiwgU2hvdWxkQWxs
b3dYU1Mgc2hvdWxkQWxsb3dYU1MgPSBEb05vdEFsbG93WFNTKTsKIAotICAgIHZvaWQgc2V0RXZl
bnRIYW5kbGVyTGluZU51bWJlcihpbnQgbGluZW5vKSB7IG1faGFuZGxlckxpbmVOdW1iZXIgPSBs
aW5lbm87IH0KLSAgICBpbnQgZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHsgcmV0dXJuIG1faGFu
ZGxlckxpbmVOdW1iZXI7IH0KLQorICAgIGludCBldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgY29u
c3Q7CisgICAgCiAgICAgdm9pZCBzZXRQcm9jZXNzaW5nVGltZXJDYWxsYmFjayhib29sIGIpIHsg
bV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayA9IGI7IH0KICAgICBib29sIHByb2Nlc3NpbmdVc2Vy
R2VzdHVyZShET01XcmFwcGVyV29ybGQqKSBjb25zdDsKICAgICBib29sIGFueVBhZ2VJc1Byb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpIGNvbnN0OwpAQCAtMTg3LDcgKzE4Niw2IEBAIHByaXZhdGU6CiAK
ICAgICBTaGVsbE1hcCBtX3dpbmRvd1NoZWxsczsKICAgICBGcmFtZSogbV9mcmFtZTsKLSAgICBp
bnQgbV9oYW5kbGVyTGluZU51bWJlcjsKICAgICBjb25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwog
CiAgICAgYm9vbCBtX2luRXhlY3V0ZVNjcmlwdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4
MzYuLjlmNmMzNDRlY2RjZWQ2NjI1ZDQ0NDE4NjQ4ODRlM2IxMjk3YjZhNWEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5j
bHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCkBAIC0yNTgsOSArMjU5LDE4IEBAIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIFNob3VsCiAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKG9iamVjdCk7CiB9
CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihpbnQg
bGluZU51bWJlcikKK2ludCBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVy
KCkgY29uc3QKIHsKLSAgICBtX3Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGxpbmVO
dW1iZXIpOworICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cGFyc2VyKCkpCisgICAgICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1iZXIoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworaW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckNvbHVt
bk51bWJlcigpIGNvbnN0Cit7CisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+Y29sdW1u
TnVtYmVyKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Zmlu
aXNoZWRXaXRoRXZlbnQoRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaAppbmRleCA1ZDRiODNlMGRiYjFjODRhZWQ4NzVjOTczZjZiOGVhZmYxMTNlYjk1Li4z
MTg3MTgwYjA2YWRiY2JhY2U0YzllODliMzRlOTgxYmNjMDkwMDhkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTUzLDcgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBnY1VucHJvdGVjdEpTV3JhcHBlcih2b2lkKik7CiAKICAgICB2b2lkIGZpbmlz
aGVkV2l0aEV2ZW50KEV2ZW50Kik7Ci0gICAgdm9pZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVy
KGludCBsaW5lTnVtYmVyKTsKKworICAgIGludCBldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgY29u
c3Q7CisgICAgaW50IGV2ZW50SGFuZGxlckNvbHVtbk51bWJlcigpIGNvbnN0OwogCiAgICAgdm9p
ZCBzZXRQcm9jZXNzaW5nVGltZXJDYWxsYmFjayhib29sIHByb2Nlc3NpbmdUaW1lckNhbGxiYWNr
KSB7IG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2sgPSBwcm9jZXNzaW5nVGltZXJDYWxsYmFjazsg
fQogICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2UgZG9uJ3QgdXNlIHRoZSBwYXJhbWV0ZXIgd29y
bGQgYXQgYWxsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExp
c3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAK
aW5kZXggNTdhMjgyNGE4NTI2NThhOTZlY2QwMzJlNDUxNTQ1ODY2ZmQxMzVjYy4uNjNlN2RmZmEx
MDk3N2RmNDM2MWZlNDVjMjM2OTZhNzY0ODQzMzY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC02NCwxMSArNjQsOCBAQCBQYXNzUmVmUHRyPFY4
TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9k
ZSwgQXR0cmlidQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
Q2hhbmdlIHRvIHVzZSBzY3JpcHQtPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSB3aGVuIGltcGxl
bWVudGVkLgotICAgICAgICAgICAgbGluZU51bWJlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJz
ZXIoKS0+bGluZU51bWJlcigpOwotICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gZnJhbWUtPmRv
Y3VtZW50KCktPnBhcnNlcigpLT5jb2x1bW5OdW1iZXIoKTsKLSAgICAgICAgfQorICAgICAgICBs
aW5lTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpOwor
ICAgICAgICBjb2x1bW5OdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJDb2x1
bW5OdW1iZXIoKTsKICAgICAgICAgc291cmNlVVJMID0gbm9kZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCk7CiAgICAgfQogCkBAIC05NywxMSArOTQsOCBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2
ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBB
dHRyaQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50
KCktPnBhcnNlcigpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gdXNlIHNjcmlwdC0+
ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1wbGVtZW50ZWQuCi0gICAgICAgIGxpbmVO
dW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmxpbmVOdW1iZXIoKTsKLSAgICAg
ICAgY29sdW1uTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpLT5jb2x1bW5OdW1i
ZXIoKTsKLSAgICB9CisgICAgbGluZU51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFu
ZGxlckxpbmVOdW1iZXIoKTsKKyAgICBjb2x1bW5OdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5l
dmVudEhhbmRsZXJDb2x1bW5OdW1iZXIoKTsKICAgICBzb3VyY2VVUkwgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZH
RG9jdW1lbnQoKSwgYXR0ci0+dmFsdWUoKSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VNYWluV29ybGQpKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmgKaW5kZXggMDk4ZDk1NmUyYzYyMGQ3MTU0YzYyZTJlZTZkNGE1MzMyYTMwYzIwNC4uNjQ4
NzUxNDkwNmMxMGJjMThhZWQ0NmNhZDZjODllOWI4NjJkYjI0NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmgKQEAgLTIwMSw3ICsyMDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KICNl
bmRpZgogCi0gICAgICAgIHZvaWQgc2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihpbnQgbGluZU51
bWJlcikgeyBtX2hhbmRsZXJMaW5lTnVtYmVyID0gbGluZU51bWJlcjsgfQogICAgICAgICB2b2lk
IGZpbmlzaGVkV2l0aEV2ZW50KEV2ZW50KikgeyB9CiAKICAgICAgICAgLy8gRXZhbHVhdGUgSmF2
YVNjcmlwdCBpbiBhIG5ldyBpc29sYXRlZCB3b3JsZC4gVGhlIHNjcmlwdCBnZXRzIGl0cyBvd24K
QEAgLTM1OCw4ICszNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZvciB0
aGUgbW9tZW50LCB3ZSBoYXZlIG9uZSBvZiB0aGVzZS4gIFNvb24gd2Ugd2lsbCBoYXZlIG9uZSBw
ZXIgRE9NV3JhcHBlcldvcmxkLgogICAgICAgICBSZWZQdHI8VjhET01XaW5kb3dTaGVsbD4gbV93
aW5kb3dTaGVsbDsKIAotICAgICAgICBpbnQgbV9oYW5kbGVyTGluZU51bWJlcjsKLQogICAgICAg
ICAvLyBUcnVlIGZvciA8YSBocmVmPSJqYXZhc2NyaXB0OmZvbygpIj4gYW5kIGZhbHNlIGZvciA8
c2NyaXB0PmZvbygpPC9zY3JpcHQ+LgogICAgICAgICAvLyBPbmx5IHZhbGlkIGR1cmluZyBleGVj
dXRpb24uCiAgICAgICAgIGJvb2wgbV9pbmxpbmVDb2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMmExYmFjNjA5M2Q3ZWRhYzk4ZDFlZWIzMWU4ZWVmNzY4
OGY3NWZiNC4uYzEzOTlmY2U5MzIxM2RhYjZhODc5ZTU4NWUyMTNmNGYzNDA3NmZmZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NCw3ICs0NCw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTc4MywxOSArNzgyLDEyIEBAIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKGNvbnN0IHhtbENoYXIqIHhtbExv
Y2FsTmFtZSwgY29uc3QgeG1sQ2hhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3Jp
cHRDb250cm9sbGVyKiBqc1Byb3h5ID0gbV9kb2MtPmZyYW1lKCkgPyBtX2RvYy0+ZnJhbWUoKS0+
c2NyaXB0KCkgOiAwOwotICAgIGlmIChqc1Byb3h5ICYmIG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQo
KS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICBq
c1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGxpbmVOdW1iZXIoKSk7Ci0KICAgICBo
YW5kbGVFbGVtZW50QXR0cmlidXRlcyhuZXdFbGVtZW50LmdldCgpLCBsaWJ4bWxBdHRyaWJ1dGVz
LCBuYl9hdHRyaWJ1dGVzLCBlYywgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICBpZiAoZWMp
IHsKICAgICAgICAgc3RvcFBhcnNpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChqc1Byb3h5KQotICAgICAgICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVy
KDApOwotCiAgICAgbmV3RWxlbWVudC0+YmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKIAogICAgIFNj
cmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnQobmV3RWxlbWVudC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYTFjOTA1OTM2NzYw
YjY5MGRiOWE5YzEyNTJmNTAwMjM3ZGY1MjZkNi4uNGEyOTNjOGVjNTQxMzFjZGNjYjhjMzE2NTk3
YzRjZjI0NzA5NTUzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcApAQCAtMTkz
LDE2ICsxOTMsOSBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OnB1bXBMZXhlcihTeW5jaHJv
bm91c01vZGUgbW9kZSkKICAgICAgICAgaWYgKCFtX2xleGVyLT5uZXh0VG9rZW4obV9pbnB1dC5j
dXJyZW50KCksIG1fdG9rZW4pKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKFNj
cmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBzY3JpcHQoKSkKLSAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigp
ICsgMSk7Ci0KICAgICAgICAgbV90cmVlQ29uc3RydWN0b3ItPmNvbnN0cnVjdFRyZWVGcm9tVG9r
ZW4obV90b2tlbik7CiAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKIAotICAgICAgICAvLyBGSVhN
RTogV2h5IGlzIHNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoMCkgbmVjZXNzYXJ5PwotICAgICAg
ICBpZiAoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQotICAg
ICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKTsK
LQogICAgICAgICBpZiAoIW1fdHJlZUNvbnN0cnVjdG9yLT5pc1BhdXNlZCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMjdmMDE2
MzRmZDI5MDAzNjYwOTBhNzI5Y2UwOTgxMzAyYWRhMDg3Zi4uMWFhMjI0ZTQ5MjQzMzhhOThmOTc2
NDI5MzlkNTQyMGE1MDFhYzU3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByZWxvYWRTY2FubmVyLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKQEAgLTE4OTMsMTggKzE4
OTIsMTIgQEAgYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaFdhc0NhbGxlZCgpCiAKIFBh
c3NSZWZQdHI8Tm9kZT4gSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW4oKQogewotICAg
IFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSAoIW1fZnJhZ21lbnQgJiYgbV9k
b2MtPmZyYW1lKCkpID8gbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAgICBpZiAoc2Ny
aXB0Q29udHJvbGxlciAmJiBzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgdGhpcyBt
X2N1cnJlbnRTY3JpcHRUYWdTdGFydExpbmVOdW1iZXI/ICBJIHN1c3BlY3QgdGhpcyBpcyB3cm9u
Zy4KLSAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlciht
X2N1cnJlbnRUYWdTdGFydExpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUgbnVtYmVycyBh
cmUgMSBiYXNlZC4KICAgICBpZiAobV9kZXN0ID4gbV9idWZmZXIpIHsKICAgICAgICAgbV9jdXJy
ZW50VG9rZW4udGV4dCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJz
KG1fYnVmZmVyLCBtX2Rlc3QgLSBtX2J1ZmZlcik7CiAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tl
bi50YWdOYW1lICE9IGNvbW1lbnRBdG9tKQogICAgICAgICAgICAgbV9jdXJyZW50VG9rZW4udGFn
TmFtZSA9IHRleHRBdG9tOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50VG9rZW4udGFnTmFtZSA9
PSBudWxsQXRvbSkgewogICAgICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwotICAgICAgICBp
ZiAoc2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPnNldEV2
ZW50SGFuZGxlckxpbmVOdW1iZXIobV9saW5lTnVtYmVyICsgMSk7IC8vIFNjcmlwdCBsaW5lIG51
bWJlcnMgYXJlIDEgYmFzZWQuCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTkyMiw4
ICsxOTE1LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NU
b2tlbigpCiAgICAgICAgICAgICBuID0gbV90cmVlQ29uc3RydWN0b3ItPnBhcnNlVG9rZW4oJm1f
Y3VycmVudFRva2VuKTsKICAgICB9CiAgICAgbV9jdXJyZW50VG9rZW4ucmVzZXQoKTsKLSAgICBp
ZiAoc2NyaXB0Q29udHJvbGxlcikKLSAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRI
YW5kbGVyTGluZU51bWJlcigwKTsKIAogICAgIHJldHVybiBuLnJlbGVhc2UoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59067</attachid>
            <date>2010-06-17 20:48:14 -0700</date>
            <delta_ts>2010-06-17 21:29:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100617204813.patch</filename>
            <type>text/plain</type>
            <size>17321</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MTliNjg1Y2Q1ZjhiODc0MjM4MzZmNTVlMDkyOTllMDJkYWM5NTczLi5mNmYyOTFl
Yjk2ZDllNzdlYWRjNjM1OTNlZjVhMGZlNjQzOWI4MDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDYtMTcgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRl
c3RzIHdoaWNoIHRlc3QgbGluZSBudW1iZXJzIGZvciBib3RoIGlubGluZSBhbmQgZXZlbnQgaGFu
ZGxlcgorICAgICAgICBzY3JpcHRzIGluIGJvdGggSFRNTCBhbmQgWEhUTUwgZG9jdW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NDkKKwor
ICAgICAgICBUaGUgWEhUTUwgdGVzdCBGQUlMUyBib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNv
ZGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtbGlu
ZS1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC1s
aW5lLW51bWJlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9z
Y3JpcHQtbGluZS1udW1iZXIuanM6IEFkZGVkLgorICAgICAgICAoZ2V0TGluZUZyb21FcnJvcik6
CisgICAgICAgIChhc3NlcnRFcnJvck9uTGluZSk6CisgICAgICAgICogc3ZnL2RvbS9zY3JpcHQt
bGluZS1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3Njcmlw
dC1saW5lLW51bWJlci54aHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMTcgIERpbWl0cmkgR2xhemtv
diAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBDaHJvbWl1
bSBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZGI1ZjVkYWI5YjE5NGE2
YmJkNTMxYjBjNWE2NmYyMDM4ZmE1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmUgbnVtYmVycyBhcmUgY29ycmVjdGx5IHJlcG9ydGVk
IGZvciBib3RoIGlubGluZSBzY3JpcHRzIGFuZCBpbmxpbmUgZXZlbnQgaGFuZGxlcnMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIDEwIGlzIDEwCitQQVNTIDEzIGlzIDEz
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM1
OWJhZmJmOTE1NjFmMjcwOTBlY2QzMTllMGE3MWQ4YWI3Yjk1NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLmh0bWwKQEAgLTAsMCArMSwy
MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zY3JpcHQtbGlu
ZS1udW1iZXIuanMiIG9ubG9hZD0idHJ5IHsgbm9uRXhpc3RlbnRGdW5jdGlvbk9uTGluZTEwKCk7
IH0gY2F0Y2ggKGUpIHsgYXNzZXJ0RXJyb3JPbkxpbmUoZSwgMTApOyB9Ij48L3NjcmlwdD4KKzxz
Y3JpcHQ+Cit0cnkgeworICAgIG5vbkV4aXN0ZW50RnVuY3Rpb25PbkxpbmUxMygpOworfSBjYXRj
aCAoZSkgeworICAgIGFzc2VydEVycm9yT25MaW5lKGUsIDEzKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc2Ny
aXB0LWxpbmUtbnVtYmVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc2Ny
aXB0LWxpbmUtbnVtYmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZDliMWEzYzRiMTVmZmY5Njk2OWIyYjFl
ODhhODFjNzQyNmFlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC10ZXN0cy9zY3JpcHQtbGluZS1udW1iZXIuanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3Jp
cHRpb24oCisiVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmUgbnVtYmVycyBhcmUgY29ycmVjdGx5
IHJlcG9ydGVkIGZvciBib3RoIGlubGluZSBzY3JpcHRzIGFuZCBpbmxpbmUgZXZlbnQgaGFuZGxl
cnMuIgorKTsKKworZnVuY3Rpb24gZ2V0TGluZUZyb21FcnJvcihlKQoreworICAgIC8vIEpTQwor
ICAgIGlmIChlLmxpbmUpCisgICAgICAgIHJldHVybiBlLmxpbmU7CisKKyAgICAvLyBWOAorICAg
IGlmIChlLnN0YWNrKSB7CisgICAgICAgIC8vIEVycm9yTmFtZTogRXJyb3JEZXNjcmlwdGlvbiBh
dCBGaWxlTmFtZTpMaW5lTnVtYmVyOkNvbHVtbk51bWJlcgorICAgICAgICBwYXJ0cyA9IGUuc3Rh
Y2suc3BsaXQoIjoiKTsKKyAgICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJdOwor
ICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXJyb3JPbkxpbmUo
ZXJyb3IsIGV4cGVjdGVkTGluZSkKK3sKKyAgICBzaG91bGRCZShzdHJpbmdpZnkoZ2V0TGluZUZy
b21FcnJvcihlcnJvcikpLCBzdHJpbmdpZnkoZXhwZWN0ZWRMaW5lKSk7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9z
Y3JpcHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3Jp
cHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZDYxMDUzZjZmNzdiM2Fl
ODhkYTU2MGFmMWM0YzhlYjg1YjE1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvZG9tL3NjcmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmUgbnVtYmVycyBhcmUgY29ycmVjdGx5IHJlcG9ydGVk
IGZvciBib3RoIGlubGluZSBzY3JpcHRzIGFuZCBpbmxpbmUgZXZlbnQgaGFuZGxlcnMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworRkFJTCAyMSBzaG91bGQgYmUgOS4gV2FzIDIxLgor
RkFJTCAyMiBzaG91bGQgYmUgMTIuIFdhcyAyMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9t
L3NjcmlwdC1saW5lLW51bWJlci54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LWxp
bmUtbnVtYmVyLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ODJjZTE0MDE3NmEzYTJhMDFhOWMwMWQyZjAw
OTY4NmFiZDRkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3Njcmlw
dC1saW5lLW51bWJlci54aHRtbApAQCAtMCwwICsxLDE5IEBACis8aHRtbCB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L3NjcmlwdC1saW5lLW51bWJlci5qcyIgb25sb2FkPSJ0cnkgeyBub25FeGlzdGVudEZ1bmN0aW9u
T25MaW5lOSgpOyB9IGNhdGNoIChlKSB7IGFzc2VydEVycm9yT25MaW5lKGUsIDkpOyB9Ij48L3Nj
cmlwdD4KKzxzY3JpcHQ+Cit0cnkgeworICAgIG5vbkV4aXN0ZW50RnVuY3Rpb25PbkxpbmUxMigp
OworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydEVycm9yT25MaW5lKGUsIDEyKTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUzZWFlZTQ3MWEzNWNmNTM5NWNjNGNjZjRm
MDc2OGYwZTg5N2JhZjQuLmI5YTc4ZTgyN2EyNTQ4YjIzODYxOTNkZTE4YTgxMmY4NDcyNjg5OTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMTcgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQdWxsIHNjcmlwdCBsaW5lIG51bWJlciBmcm9tIERvY3VtZW50UGFyc2VyIGluc3RlYWQgb2Yg
cHVzaGluZyBpdCB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDY0OQorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggaXMg
Y2xlYW5lciBhbmQgaW1wcm92ZXMgV2ViQ29yZS9iZW5jaG1hcmtzL3BhcnNlci9odG1sLXBhcnNl
ci5odG1sIGJ5IH4yJS4KKworICAgICAgICBUZXN0czogZmFzdC9qcy9zY3JpcHQtbGluZS1udW1i
ZXIuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2RvbS9zY3JpcHQtbGluZS1udW1iZXIueGh0bWwK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmV2ZW50SGFuZGxlckNvbHVtbk51bWJlcik6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAqIGRvbS9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExl
eGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6CisKIDIwMTAtMDYtMTcg
IEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDVjNGJkNGMyN2Y0ODUzZTY5ZDdmMjM0ZDJjY2EyODZmNmIyMmY1MmEuLjZmMDQ1
N2EwMzdmMjE2YmNkNDlkZWQ0NDNmOTE5YzA3ODNlOGE2NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50
UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTYwLDcgKzYxLDYgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVy
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkKIAogU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJv
bGxlcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9oYW5kbGVy
TGluZU51bWJlcigwKQogICAgICwgbV9zb3VyY2VVUkwoMCkKICAgICAsIG1faW5FeGVjdXRlU2Ny
aXB0KGZhbHNlKQogICAgICwgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayhmYWxzZSkKQEAgLTIz
NSw2ICsyMzUsMTQgQEAgSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIHJldHVybiB3aW5kb3dTaGVsbDsKIH0K
IAoraW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdAor
eworICAgIC8vIEpTQyBleHBlY3RzIDEtYmFzZWQgbGluZSBudW1iZXJzLCBzbyB3ZSBtdXN0IGFk
ZCBvbmUgaGVyZSB0byBnZXQgaXQgcmlnaHQuCisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJz
ZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNl
ci0+bGluZU51bWJlcigpICsgMTsKKyAgICByZXR1cm4gMDsKK30KKyAgICAKIGJvb2wgU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKERPTVdyYXBwZXJXb3JsZCogd29ybGQp
IGNvbnN0CiB7CiAgICAgaWYgKG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luIHx8IGlzSmF2YVNjcmlw
dEFuY2hvck5hdmlnYXRpb24oKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggZWU3Y2M3ZDg1NWE3ZWM4YjQ5NjA1MmMwMTExODU1ZjNiYzIzOTk2YS4uMGRlYmYzOWI1
ZGZkODdkMjQ3ZGI1N2FkNDJmMGNhZWQzOGM0MzBhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTExNyw5ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgU2NyaXB0VmFs
dWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNob3VsZEFsbG93WFNTIHNob3Vs
ZEFsbG93WFNTID0gRG9Ob3RBbGxvd1hTUyk7CiAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQqLCBTaG91bGRBbGxv
d1hTUyBzaG91bGRBbGxvd1hTUyA9IERvTm90QWxsb3dYU1MpOwogCi0gICAgdm9pZCBzZXRFdmVu
dEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lbm8pIHsgbV9oYW5kbGVyTGluZU51bWJlciA9IGxp
bmVubzsgfQotICAgIGludCBldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgeyByZXR1cm4gbV9oYW5k
bGVyTGluZU51bWJlcjsgfQotCisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25z
dDsKKyAgICAKICAgICB2b2lkIHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgYikgeyBt
X3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrID0gYjsgfQogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKERPTVdyYXBwZXJXb3JsZCopIGNvbnN0OwogICAgIGJvb2wgYW55UGFnZUlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkgY29uc3Q7CkBAIC0xODcsNyArMTg2LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFNoZWxsTWFwIG1fd2luZG93U2hlbGxzOwogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIGlu
dCBtX2hhbmRsZXJMaW5lTnVtYmVyOwogICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CiAK
ICAgICBib29sIG1faW5FeGVjdXRlU2NyaXB0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggNjgxZTFhNGI3N2UyMDUyZmRhZjUzY2QzMDEwM2VmNTkzNzQ3ZDgz
Ni4uOWY2YzM0NGVjZGNlZDY2MjVkNDQ0MTg2NDg4NGUzYjEyOTdiNmE1YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNs
dWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAgLTI1OCw5ICsyNTksMTggQEAgU2Ny
aXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgU2hvdWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUob2JqZWN0KTsKIH0K
IAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBs
aW5lTnVtYmVyKQoraW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
KSBjb25zdAogewotICAgIG1fcHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51
bWJlcik7CisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpOworICAg
IHJldHVybiAwOworfQorCitpbnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyQ29sdW1u
TnVtYmVyKCkgY29uc3QKK3sKKyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnBhcnNlcigpKQorICAgICAgICByZXR1cm4gcGFyc2VyLT5jb2x1bW5O
dW1iZXIoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpmaW5p
c2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5oCmluZGV4IDVkNGI4M2UwZGJiMWM4NGFlZDg3NWM5NzNmNmI4ZWFmZjExM2ViOTUuLjMx
ODcxODBiMDZhZGJjYmFjZTRjOWU4OWIzNGU5ODFiY2MwOTAwOGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNTMsNyArMTUzLDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGdjVW5wcm90ZWN0SlNXcmFwcGVyKHZvaWQqKTsKIAogICAgIHZvaWQgZmluaXNo
ZWRXaXRoRXZlbnQoRXZlbnQqKTsKLSAgICB2b2lkIHNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
aW50IGxpbmVOdW1iZXIpOworCisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25z
dDsKKyAgICBpbnQgZXZlbnRIYW5kbGVyQ29sdW1uTnVtYmVyKCkgY29uc3Q7CiAKICAgICB2b2lk
IHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2sp
IHsgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayA9IHByb2Nlc3NpbmdUaW1lckNhbGxiYWNrOyB9
CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBkb24ndCB1c2UgdGhlIHBhcmFtZXRlciB3b3Js
ZCBhdCBhbGwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlz
dGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcApp
bmRleCA1N2EyODI0YTg1MjY1OGE5NmVjZDAzMmU0NTE1NDU4NjZmZDEzNWNjLi42M2U3ZGZmYTEw
OTc3ZGY0MzYxZmU0NWMyMzY5NmE3NjQ4NDMzNjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTY0LDExICs2NCw4IEBAIFBhc3NSZWZQdHI8VjhM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2Rl
LCBBdHRyaWJ1CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBD
aGFuZ2UgdG8gdXNlIHNjcmlwdC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1wbGVt
ZW50ZWQuCi0gICAgICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNl
cigpLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+cGFyc2VyKCktPmNvbHVtbk51bWJlcigpOwotICAgICAgICB9CisgICAgICAgIGxp
bmVOdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7Cisg
ICAgICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckNvbHVt
bk51bWJlcigpOwogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKTsKICAgICB9CiAKQEAgLTk3LDExICs5NCw4IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZl
bnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0
dHJpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQo
KS0+cGFyc2VyKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IENoYW5nZSB0byB1c2Ugc2NyaXB0LT5l
dmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgd2hlbiBpbXBsZW1lbnRlZC4KLSAgICAgICAgbGluZU51
bWJlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+bGluZU51bWJlcigpOwotICAgICAg
ICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmNvbHVtbk51bWJl
cigpOwotICAgIH0KKyAgICBsaW5lTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5k
bGVyTGluZU51bWJlcigpOworICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2
ZW50SGFuZGxlckNvbHVtbk51bWJlcigpOwogICAgIHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdE
b2N1bWVudCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuaAppbmRleCAxNzE5NTBiZWQxZmEwYWJmZGQ0NGI4ODgzZDgzNDhlMGU5NGJiNGU2Li5kY2Q4
ZDE2NjBjM2E5OGVkNTJlMGEwMjc2ODNhZDY1N2Y4N2E4OGQxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
aApAQCAtMjAxLDcgKzIwMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogI2Vu
ZGlmCiAKLSAgICAgICAgdm9pZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVt
YmVyKSB7IG1faGFuZGxlckxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOyB9CiAgICAgICAgIHZvaWQg
ZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQqKSB7IH0KIAogICAgICAgICAvLyBFdmFsdWF0ZSBKYXZh
U2NyaXB0IGluIGEgbmV3IGlzb2xhdGVkIHdvcmxkLiBUaGUgc2NyaXB0IGdldHMgaXRzIG93bgpA
QCAtMzYyLDggKzM2MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9yIHRo
ZSBtb21lbnQsIHdlIGhhdmUgb25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3aWxsIGhhdmUgb25lIHBl
ciBET01XcmFwcGVyV29ybGQuCiAgICAgICAgIFJlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBtX3dp
bmRvd1NoZWxsOwogCi0gICAgICAgIGludCBtX2hhbmRsZXJMaW5lTnVtYmVyOwotCiAgICAgICAg
IC8vIFRydWUgZm9yIDxhIGhyZWY9ImphdmFzY3JpcHQ6Zm9vKCkiPiBhbmQgZmFsc2UgZm9yIDxz
Y3JpcHQ+Zm9vKCk8L3NjcmlwdD4uCiAgICAgICAgIC8vIE9ubHkgdmFsaWQgZHVyaW5nIGV4ZWN1
dGlvbi4KICAgICAgICAgYm9vbCBtX2lubGluZUNvZGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAppbmRleCAyYTFiYWM2MDkzZDdlZGFjOThkMWVlYjMxZThlZWY3Njg4
Zjc1ZmI0Li5jMTM5OWZjZTkzMjEzZGFiNmE4NzllNTg1ZTIxM2Y0ZjM0MDc2ZmZlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtNzgzLDE5ICs3ODIsMTIgQEAgdm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9j
YWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlw
dENvbnRyb2xsZXIqIGpzUHJveHkgPSBtX2RvYy0+ZnJhbWUoKSA/IG1fZG9jLT5mcmFtZSgpLT5z
Y3JpcHQoKSA6IDA7Ci0gICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgp
LT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgIGpz
UHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsKLQogICAgIGhh
bmRsZUVsZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMs
IG5iX2F0dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIGlmIChlYykg
ewogICAgICAgICBzdG9wUGFyc2luZygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGpzUHJveHkpCi0gICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
MCk7Ci0KICAgICBuZXdFbGVtZW50LT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAgU2Ny
aXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChuZXdFbGVtZW50Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAppbmRleCBhMWM5MDU5MzY3NjBi
NjkwZGI5YTljMTI1MmY1MDAyMzdkZjUyNmQ2Li40YTI5M2M4ZWM1NDEzMWNkY2NiOGMzMTY1OTdj
NGNmMjQ3MDk1NTNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTMs
MTYgKzE5Myw5IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVyKFN5bmNocm9u
b3VzTW9kZSBtb2RlKQogICAgICAgICBpZiAoIW1fbGV4ZXItPm5leHRUb2tlbihtX2lucHV0LmN1
cnJlbnQoKSwgbV90b2tlbikpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoU2Ny
aXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQotICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5lTnVtYmVyKCkg
KyAxKTsKLQogICAgICAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+Y29uc3RydWN0VHJlZUZyb21Ub2tl
bihtX3Rva2VuKTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOwogCi0gICAgICAgIC8vIEZJWE1F
OiBXaHkgaXMgc2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKSBuZWNlc3Nhcnk/Ci0gICAgICAg
IGlmIChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gc2NyaXB0KCkpCi0gICAg
ICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKDApOwot
CiAgICAgICAgIGlmICghbV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2VkKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyN2YwMTYz
NGZkMjkwMDM2NjA5MGE3MjljZTA5ODEzMDJhZGEwODdmLi4xYWEyMjRlNDkyNDMzOGE5OGY5NzY0
MjkzOWQ1NDIwYTUwMWFjNTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKLSNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgpAQCAtMTg5MywxOCArMTg5
MiwxMiBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKCkKIAogUGFz
c1JlZlB0cjxOb2RlPiBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiB7Ci0gICAg
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9ICghbV9mcmFnbWVudCAmJiBtX2Rv
Yy0+ZnJhbWUoKSkgPyBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwotICAgIGlmIChzY3Jp
cHRDb250cm9sbGVyICYmIHNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCB0aGlzIG1f
Y3VycmVudFNjcmlwdFRhZ1N0YXJ0TGluZU51bWJlcj8gIEkgc3VzcGVjdCB0aGlzIGlzIHdyb25n
LgotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKG1f
Y3VycmVudFRhZ1N0YXJ0TGluZU51bWJlciArIDEpOyAvLyBTY3JpcHQgbGluZSBudW1iZXJzIGFy
ZSAxIGJhc2VkLgogICAgIGlmIChtX2Rlc3QgPiBtX2J1ZmZlcikgewogICAgICAgICBtX2N1cnJl
bnRUb2tlbi50ZXh0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMo
bV9idWZmZXIsIG1fZGVzdCAtIG1fYnVmZmVyKTsKICAgICAgICAgaWYgKG1fY3VycmVudFRva2Vu
LnRhZ05hbWUgIT0gY29tbWVudEF0b20pCiAgICAgICAgICAgICBtX2N1cnJlbnRUb2tlbi50YWdO
YW1lID0gdGV4dEF0b207CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09
IG51bGxBdG9tKSB7CiAgICAgICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7Ci0gICAgICAgIGlm
IChzY3JpcHRDb250cm9sbGVyKQotICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZl
bnRIYW5kbGVyTGluZU51bWJlcihtX2xpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUgbnVt
YmVycyBhcmUgMSBiYXNlZC4KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xOTIyLDgg
KzE5MTUsNiBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rv
a2VuKCkKICAgICAgICAgICAgIG4gPSBtX3RyZWVDb25zdHJ1Y3Rvci0+cGFyc2VUb2tlbigmbV9j
dXJyZW50VG9rZW4pOwogICAgIH0KICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwotICAgIGlm
IChzY3JpcHRDb250cm9sbGVyKQotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhh
bmRsZXJMaW5lTnVtYmVyKDApOwogCiAgICAgcmV0dXJuIG4ucmVsZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59069</attachid>
            <date>2010-06-17 21:29:13 -0700</date>
            <delta_ts>2010-06-20 11:48:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100617212911.patch</filename>
            <type>text/plain</type>
            <size>17303</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MTliNjg1Y2Q1ZjhiODc0MjM4MzZmNTVlMDkyOTllMDJkYWM5NTczLi4yMjA1MzJk
MGM3NzU5MWI2Mjk1MThhYWI2YzhjNzE3MTk5Y2IzZGJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDYtMTcgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRl
c3RzIHdoaWNoIHRlc3QgbGluZSBudW1iZXJzIGZvciBib3RoIGlubGluZSBhbmQgZXZlbnQgaGFu
ZGxlcgorICAgICAgICBzY3JpcHRzIGluIGJvdGggSFRNTCBhbmQgWEhUTUwgZG9jdW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NDkKKwor
ICAgICAgICBUaGUgWEhUTUwgdGVzdCBGQUlMUyBib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNv
ZGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMv
c2NyaXB0LWxpbmUtbnVtYmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldExpbmVGcm9tRXJyb3Ip
OgorICAgICAgICAoYXNzZXJ0RXJyb3JPbkxpbmUpOgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0
LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3Jp
cHQtbGluZS1udW1iZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9zY3JpcHQtbGlu
ZS1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3NjcmlwdC1s
aW5lLW51bWJlci54aHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMTcgIERpbWl0cmkgR2xhemtvdiAg
PGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBDaHJvbWl1bSBl
eHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvc2NyaXB0LWxpbmUtbnVtYmVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvc2NyaXB0LWxpbmUtbnVtYmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZDliMWEzYzRiMTVmZmY5Njk2
OWIyYjFlODhhODFjNzQyNmFlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9zY3JpcHQtbGluZS1udW1iZXIuanMKQEAgLTAsMCArMSwyNiBAQAorZGVz
Y3JpcHRpb24oCisiVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmUgbnVtYmVycyBhcmUgY29ycmVj
dGx5IHJlcG9ydGVkIGZvciBib3RoIGlubGluZSBzY3JpcHRzIGFuZCBpbmxpbmUgZXZlbnQgaGFu
ZGxlcnMuIgorKTsKKworZnVuY3Rpb24gZ2V0TGluZUZyb21FcnJvcihlKQoreworICAgIC8vIEpT
QworICAgIGlmIChlLmxpbmUpCisgICAgICAgIHJldHVybiBlLmxpbmU7CisKKyAgICAvLyBWOAor
ICAgIGlmIChlLnN0YWNrKSB7CisgICAgICAgIC8vIEVycm9yTmFtZTogRXJyb3JEZXNjcmlwdGlv
biBhdCBGaWxlTmFtZTpMaW5lTnVtYmVyOkNvbHVtbk51bWJlcgorICAgICAgICBwYXJ0cyA9IGUu
c3RhY2suc3BsaXQoIjoiKTsKKyAgICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJd
OworICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXJyb3JPbkxp
bmUoZXJyb3IsIGV4cGVjdGVkTGluZSkKK3sKKyAgICBzaG91bGRCZShzdHJpbmdpZnkoZ2V0TGlu
ZUZyb21FcnJvcihlcnJvcikpLCBzdHJpbmdpZnkoZXhwZWN0ZWRMaW5lKSk7Cit9CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZGI1ZjVkYWI5YjE5
NGE2YmJkNTMxYjBjNWE2NmYyMDM4ZmE1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBA
QAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmUgbnVtYmVycyBhcmUgY29ycmVjdGx5IHJlcG9y
dGVkIGZvciBib3RoIGlubGluZSBzY3JpcHRzIGFuZCBpbmxpbmUgZXZlbnQgaGFuZGxlcnMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIDEwIGlzIDEwCitQQVNTIDEzIGlz
IDEzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2M1NjVlMDhjZTM3ODdiMzdiOTUyYzAzNGYyY2FmOGIzMjBhMGI3YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLmh0bWwKQEAgLTAsMCAr
MSwyMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zY3JpcHQtbGlu
ZS1udW1iZXIuanMiIG9ubG9hZD0idHJ5IHsgbm9uRXhpc3RlbnRGdW5jdGlvbk9uTGluZTEwKCk7
IH0gY2F0Y2ggKGUpIHsgYXNzZXJ0RXJyb3JPbkxpbmUoZSwgMTApOyB9Ij48L3NjcmlwdD4KKzxz
Y3JpcHQ+Cit0cnkgeworICAgIG5vbkV4aXN0ZW50RnVuY3Rpb25PbkxpbmUxMygpOworfSBjYXRj
aCAoZSkgeworICAgIGFzc2VydEVycm9yT25MaW5lKGUsIDEzKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtbGluZS1udW1i
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtbGluZS1udW1iZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZDYxMDUzZjZmNzdiM2FlODhkYTU2MGFmMWM0Yzhl
Yjg1YjE1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1s
aW5lLW51bWJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGNoZWNr
cyB0aGF0IGxpbmUgbnVtYmVycyBhcmUgY29ycmVjdGx5IHJlcG9ydGVkIGZvciBib3RoIGlubGlu
ZSBzY3JpcHRzIGFuZCBpbmxpbmUgZXZlbnQgaGFuZGxlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworRkFJTCAyMSBzaG91bGQgYmUgOS4gV2FzIDIxLgorRkFJTCAyMiBzaG91bGQg
YmUgMTIuIFdhcyAyMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1saW5lLW51
bWJlci54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LWxpbmUtbnVtYmVyLnhodG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI5M2IxNzM5NDkzZWRmYzhlMjQ0NzllZjUxNWMxMWM3MjVjZDlmZjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1saW5lLW51bWJlci54
aHRtbApAQCAtMCwwICsxLDE5IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL3NjcmlwdC1saW5lLW51bWJl
ci5qcyIgb25sb2FkPSJ0cnkgeyBub25FeGlzdGVudEZ1bmN0aW9uT25MaW5lOSgpOyB9IGNhdGNo
IChlKSB7IGFzc2VydEVycm9yT25MaW5lKGUsIDkpOyB9Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Cit0
cnkgeworICAgIG5vbkV4aXN0ZW50RnVuY3Rpb25PbkxpbmUxMigpOworfSBjYXRjaCAoZSkgewor
ICAgIGFzc2VydEVycm9yT25MaW5lKGUsIDEyKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDUzZWFlZTQ3MWEzNWNmNTM5NWNjNGNjZjRmMDc2OGYwZTg5N2JhZjQuLmI5
YTc4ZTgyN2EyNTQ4YjIzODYxOTNkZTE4YTgxMmY4NDcyNjg5OTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTAtMDYtMTcgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdWxsIHNjcmlwdCBsaW5l
IG51bWJlciBmcm9tIERvY3VtZW50UGFyc2VyIGluc3RlYWQgb2YgcHVzaGluZyBpdCB0byBTY3Jp
cHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDY0OQorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggaXMgY2xlYW5lciBhbmQgaW1wcm92
ZXMgV2ViQ29yZS9iZW5jaG1hcmtzL3BhcnNlci9odG1sLXBhcnNlci5odG1sIGJ5IH4yJS4KKwor
ICAgICAgICBUZXN0czogZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbAorICAgICAgICAg
ICAgICAgc3ZnL2RvbS9zY3JpcHQtbGluZS1udW1iZXIueGh0bWwKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJM
aW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFu
ZGxlckNvbHVtbk51bWJlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxl
bWVudE5zKToKKyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6CisKIDIwMTAtMDYtMTcgIEplcmVteSBNb3Nrb3ZpY2gg
IDxqZXJlbXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDVjNGJkNGMy
N2Y0ODUzZTY5ZDdmMjM0ZDJjY2EyODZmNmIyMmY1MmEuLjZmMDQ1N2EwMzdmMjE2YmNkNDlkZWQ0
NDNmOTE5YzA3ODNlOGE2NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
QEAgLTYwLDcgKzYxLDYgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFk
aW5nKCkKIAogU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZSogZnJhbWUp
CiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9oYW5kbGVyTGluZU51bWJlcigwKQogICAg
ICwgbV9zb3VyY2VVUkwoMCkKICAgICAsIG1faW5FeGVjdXRlU2NyaXB0KGZhbHNlKQogICAgICwg
bV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayhmYWxzZSkKQEAgLTIzNSw2ICsyMzUsMTQgQEAgSlNE
T01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVyV29y
bGQqIHdvcmxkKQogICAgIHJldHVybiB3aW5kb3dTaGVsbDsKIH0KIAoraW50IFNjcmlwdENvbnRy
b2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdAoreworICAgIC8vIEpTQyBleHBl
Y3RzIDEtYmFzZWQgbGluZSBudW1iZXJzLCBzbyB3ZSBtdXN0IGFkZCBvbmUgaGVyZSB0byBnZXQg
aXQgcmlnaHQuCisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpICsg
MTsKKyAgICByZXR1cm4gMDsKK30KKyAgICAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpIGNvbnN0CiB7CiAgICAgaWYg
KG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luIHx8IGlzSmF2YVNjcmlwdEFuY2hvck5hdmlnYXRpb24o
KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZWU3Y2M3ZDg1NWE3
ZWM4YjQ5NjA1MmMwMTExODU1ZjNiYzIzOTk2YS4uMGRlYmYzOWI1ZGZkODdkMjQ3ZGI1N2FkNDJm
MGNhZWQzOGM0MzBhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAg
LTExNyw5ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYsIFNob3VsZEFsbG93WFNTIHNob3VsZEFsbG93WFNTID0gRG9Ob3RB
bGxvd1hTUyk7CiAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQqLCBTaG91bGRBbGxvd1hTUyBzaG91bGRBbGxvd1hT
UyA9IERvTm90QWxsb3dYU1MpOwogCi0gICAgdm9pZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVy
KGludCBsaW5lbm8pIHsgbV9oYW5kbGVyTGluZU51bWJlciA9IGxpbmVubzsgfQotICAgIGludCBl
dmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgeyByZXR1cm4gbV9oYW5kbGVyTGluZU51bWJlcjsgfQot
CisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdDsKKyAgICAKICAgICB2b2lk
IHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgYikgeyBtX3Byb2Nlc3NpbmdUaW1lckNh
bGxiYWNrID0gYjsgfQogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKERPTVdyYXBwZXJX
b3JsZCopIGNvbnN0OwogICAgIGJvb2wgYW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkg
Y29uc3Q7CkBAIC0xODcsNyArMTg2LDYgQEAgcHJpdmF0ZToKIAogICAgIFNoZWxsTWFwIG1fd2lu
ZG93U2hlbGxzOwogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIGludCBtX2hhbmRsZXJMaW5lTnVt
YmVyOwogICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CiAKICAgICBib29sIG1faW5FeGVj
dXRlU2NyaXB0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NjgxZTFhNGI3N2UyMDUyZmRhZjUzY2QzMDEwM2VmNTkzNzQ3ZDgzNi4uOWY2YzM0NGVjZGNlZDY2
MjVkNDQ0MTg2NDg4NGUzYjEyOTdiNmE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRn
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKQEAgLTI1OCw5ICsyNTksMTggQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2hv
dWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUob2JqZWN0KTsKIH0KIAotdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVtYmVyKQoraW50IFNj
cmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdAogewotICAgIG1f
cHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcik7CisgICAgaWYgKERv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAg
ICAgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpOworICAgIHJldHVybiAwOworfQorCitp
bnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyQ29sdW1uTnVtYmVyKCkgY29uc3QKK3sK
KyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBh
cnNlcigpKQorICAgICAgICByZXR1cm4gcGFyc2VyLT5jb2x1bW5OdW1iZXIoKTsKKyAgICByZXR1
cm4gMDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpmaW5pc2hlZFdpdGhFdmVudChFdmVu
dCogZXZlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDVkNGI4
M2UwZGJiMWM4NGFlZDg3NWM5NzNmNmI4ZWFmZjExM2ViOTUuLjMxODcxODBiMDZhZGJjYmFjZTRj
OWU4OWIzNGU5ODFiY2MwOTAwOGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oCkBAIC0xNTMsNyArMTUzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGdjVW5wcm90
ZWN0SlNXcmFwcGVyKHZvaWQqKTsKIAogICAgIHZvaWQgZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQq
KTsKLSAgICB2b2lkIHNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoaW50IGxpbmVOdW1iZXIpOwor
CisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdDsKKyAgICBpbnQgZXZlbnRI
YW5kbGVyQ29sdW1uTnVtYmVyKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFByb2Nlc3NpbmdUaW1l
ckNhbGxiYWNrKGJvb2wgcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2spIHsgbV9wcm9jZXNzaW5nVGlt
ZXJDYWxsYmFjayA9IHByb2Nlc3NpbmdUaW1lckNhbGxiYWNrOyB9CiAgICAgLy8gRklYTUU6IEN1
cnJlbnRseSB3ZSBkb24ndCB1c2UgdGhlIHBhcmFtZXRlciB3b3JsZCBhdCBhbGwuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAppbmRleCA1N2EyODI0YTg1MjY1
OGE5NmVjZDAzMmU0NTE1NDU4NjZmZDEzNWNjLi42M2U3ZGZmYTEwOTc3ZGY0MzYxZmU0NWMyMzY5
NmE3NjQ4NDMzNjliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5l
ci5jcHAKQEAgLTY0LDExICs2NCw4IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4g
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1CiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQo
KS0+cGFyc2VyKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2UgdG8gdXNlIHNjcmlw
dC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1wbGVtZW50ZWQuCi0gICAgICAgICAg
ICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpLT5saW5lTnVtYmVyKCk7
Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkt
PmNvbHVtbk51bWJlcigpOwotICAgICAgICB9CisgICAgICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRD
b250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7CisgICAgICAgIGNvbHVtbk51bWJl
ciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckNvbHVtbk51bWJlcigpOwogICAgICAg
ICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICB9CiAK
QEAgLTk3LDExICs5NCw4IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKLSAg
ICAgICAgLy8gRklYTUU6IENoYW5nZSB0byB1c2Ugc2NyaXB0LT5ldmVudEhhbmRsZXJMaW5lTnVt
YmVyKCkgd2hlbiBpbXBsZW1lbnRlZC4KLSAgICAgICAgbGluZU51bWJlciA9IGZyYW1lLT5kb2N1
bWVudCgpLT5wYXJzZXIoKS0+bGluZU51bWJlcigpOwotICAgICAgICBjb2x1bW5OdW1iZXIgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmNvbHVtbk51bWJlcigpOwotICAgIH0KKyAgICBs
aW5lTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpOwor
ICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckNvbHVtbk51
bWJlcigpOwogICAgIHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KTsKICAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFt
ZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpLCBhdHRyLT52
YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV29ybGRDb250ZXh0
SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCAxNzE5NTBi
ZWQxZmEwYWJmZGQ0NGI4ODgzZDgzNDhlMGU5NGJiNGU2Li5kY2Q4ZDE2NjBjM2E5OGVkNTJlMGEw
Mjc2ODNhZDY1N2Y4N2E4OGQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtMjAxLDcgKzIwMSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgdm9p
ZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lTnVtYmVyKSB7IG1faGFuZGxlckxp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOyB9CiAgICAgICAgIHZvaWQgZmluaXNoZWRXaXRoRXZlbnQo
RXZlbnQqKSB7IH0KIAogICAgICAgICAvLyBFdmFsdWF0ZSBKYXZhU2NyaXB0IGluIGEgbmV3IGlz
b2xhdGVkIHdvcmxkLiBUaGUgc2NyaXB0IGdldHMgaXRzIG93bgpAQCAtMzYyLDggKzM2MSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRm9yIHRoZSBtb21lbnQsIHdlIGhhdmUg
b25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3aWxsIGhhdmUgb25lIHBlciBET01XcmFwcGVyV29ybGQu
CiAgICAgICAgIFJlZlB0cjxWOERPTVdpbmRvd1NoZWxsPiBtX3dpbmRvd1NoZWxsOwogCi0gICAg
ICAgIGludCBtX2hhbmRsZXJMaW5lTnVtYmVyOwotCiAgICAgICAgIC8vIFRydWUgZm9yIDxhIGhy
ZWY9ImphdmFzY3JpcHQ6Zm9vKCkiPiBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+Zm9vKCk8L3Njcmlw
dD4uCiAgICAgICAgIC8vIE9ubHkgdmFsaWQgZHVyaW5nIGV4ZWN1dGlvbi4KICAgICAgICAgYm9v
bCBtX2lubGluZUNvZGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCAyYTFiYWM2MDkzZDdlZGFjOThkMWVlYjMxZThlZWY3Njg4Zjc1ZmI0Li5jMTM5OWZjZTkz
MjEzZGFiNmE4NzllNTg1ZTIxM2Y0ZjM0MDc2ZmZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgpAQCAtNzgzLDE5ICs3ODIsMTIgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNl
cjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxD
aGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlwdENvbnRyb2xsZXIqIGpzUHJv
eHkgPSBtX2RvYy0+ZnJhbWUoKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7Ci0gICAg
aWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFu
ZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsKLQogICAgIGhhbmRsZUVsZW1lbnRBdHRyaWJ1
dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0dHJpYnV0ZXMsIGVj
LCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIGlmIChlYykgewogICAgICAgICBzdG9wUGFy
c2luZygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGpzUHJveHkpCi0gICAg
ICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoMCk7Ci0KICAgICBuZXdFbGVt
ZW50LT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAgU2NyaXB0RWxlbWVudCogc2NyaXB0
RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChuZXdFbGVtZW50LmdldCgpKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmNwcAppbmRleCBhMWM5MDU5MzY3NjBiNjkwZGI5YTljMTI1MmY1MDAy
MzdkZjUyNmQ2Li40YTI5M2M4ZWM1NDEzMWNkY2NiOGMzMTY1OTdjNGNmMjQ3MDk1NTNiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTMsMTYgKzE5Myw5IEBAIHZvaWQg
SFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAg
ICAgICBpZiAoIW1fbGV4ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbikp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQotICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+
c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5lTnVtYmVyKCkgKyAxKTsKLQogICAgICAgICBt
X3RyZWVDb25zdHJ1Y3Rvci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rva2VuKTsKICAgICAg
ICAgbV90b2tlbi5jbGVhcigpOwogCi0gICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgc2V0RXZlbnRI
YW5kbGVyTGluZU51bWJlcigwKSBuZWNlc3Nhcnk/Ci0gICAgICAgIGlmIChTY3JpcHRDb250cm9s
bGVyKiBzY3JpcHRDb250cm9sbGVyID0gc2NyaXB0KCkpCi0gICAgICAgICAgICBzY3JpcHRDb250
cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKDApOwotCiAgICAgICAgIGlmICghbV90
cmVlQ29uc3RydWN0b3ItPmlzUGF1c2VkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyN2YwMTYzNGZkMjkwMDM2NjA5MGE3Mjlj
ZTA5ODEzMDJhZGEwODdmLi4xYWEyMjRlNDkyNDMzOGE5OGY5NzY0MjkzOWQ1NDIwYTUwMWFjNTdj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiWFNTQXVkaXRvci5oIgpAQCAtMTg5MywxOCArMTg5MiwxMiBAQCBib29sIEhUTUxE
b2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKCkKIAogUGFzc1JlZlB0cjxOb2RlPiBIVE1M
RG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiB7Ci0gICAgU2NyaXB0Q29udHJvbGxlciog
c2NyaXB0Q29udHJvbGxlciA9ICghbV9mcmFnbWVudCAmJiBtX2RvYy0+ZnJhbWUoKSkgPyBtX2Rv
Yy0+ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwotICAgIGlmIChzY3JpcHRDb250cm9sbGVyICYmIHNj
cmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0
KSkKLSAgICAgICAgLy8gRklYTUU6IFdoeSBpc24ndCB0aGlzIG1fY3VycmVudFNjcmlwdFRhZ1N0
YXJ0TGluZU51bWJlcj8gIEkgc3VzcGVjdCB0aGlzIGlzIHdyb25nLgotICAgICAgICBzY3JpcHRD
b250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKG1fY3VycmVudFRhZ1N0YXJ0TGlu
ZU51bWJlciArIDEpOyAvLyBTY3JpcHQgbGluZSBudW1iZXJzIGFyZSAxIGJhc2VkLgogICAgIGlm
IChtX2Rlc3QgPiBtX2J1ZmZlcikgewogICAgICAgICBtX2N1cnJlbnRUb2tlbi50ZXh0ID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMobV9idWZmZXIsIG1fZGVzdCAt
IG1fYnVmZmVyKTsKICAgICAgICAgaWYgKG1fY3VycmVudFRva2VuLnRhZ05hbWUgIT0gY29tbWVu
dEF0b20pCiAgICAgICAgICAgICBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID0gdGV4dEF0b207CiAg
ICAgfSBlbHNlIGlmIChtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09IG51bGxBdG9tKSB7CiAgICAg
ICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7Ci0gICAgICAgIGlmIChzY3JpcHRDb250cm9sbGVy
KQotICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJl
cihtX2xpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUgbnVtYmVycyBhcmUgMSBiYXNlZC4K
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xOTIyLDggKzE5MTUsNiBAQCBQYXNzUmVm
UHRyPE5vZGU+IEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkKICAgICAgICAgICAg
IG4gPSBtX3RyZWVDb25zdHJ1Y3Rvci0+cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwogICAg
IH0KICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwotICAgIGlmIChzY3JpcHRDb250cm9sbGVy
KQotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKDAp
OwogCiAgICAgcmV0dXJuIG4ucmVsZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59204</attachid>
            <date>2010-06-20 11:48:45 -0700</date>
            <delta_ts>2010-06-22 08:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100620114845.patch</filename>
            <type>text/plain</type>
            <size>17444</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkODcyZGU5MDA5YjI5YjE2Yjc3ODU1NjdjZTZhNmNhMzcxMjg5NjRjLi5mN2U4ZTYw
Y2EzZjM0M2E1ZDg4YzcyYTRhNzBkODZmNDYzMmZjZGFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMDYtMTkgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3Rz
IHdoaWNoIHRlc3QgbGluZSBudW1iZXJzIGZvciBib3RoIGlubGluZSBhbmQgZXZlbnQgaGFuZGxl
cgorICAgICAgICBzY3JpcHRzIGluIGJvdGggSFRNTCBhbmQgWEhUTUwgZG9jdW1lbnRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NDkKKworICAg
ICAgICBUaGUgWEhUTUwgdGVzdCBGQUlMUyBpbiBhbiBpbmRldGVybWluYXRlIHdheSBib3RoIGJl
Zm9yZSBhbmQgYWZ0ZXIgdGhlIGNvZGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLAorICAgICAgICBz
byB0aGUgZXhwZWN0YXRpb25zIGFyZSBjb21tZW50ZWQgb3V0LgorCisgICAgICAgICogZmFzdC9q
cy9yZXNvdXJjZXMvc2NyaXB0LWxpbmUtbnVtYmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGdldExp
bmVGcm9tRXJyb3IpOgorICAgICAgICAoYXNzZXJ0RXJyb3JPbkxpbmUpOgorICAgICAgICAqIGZh
c3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2Rv
bS9zY3JpcHQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
ZG9tL3NjcmlwdC1saW5lLW51bWJlci54aHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMTkgIE5pa2l0
YSBWYXNpbHlldiAgPG1lQGVsdjFzLnJ1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZl
bGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9zY3JpcHQt
bGluZS1udW1iZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9zY3JpcHQtbGlu
ZS1udW1iZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkOWIxYTNjNGIxNWZmZjk2OTY5YjJiMWU4OGE4MWM3
NDI2YWUwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L3NjcmlwdC1saW5lLW51bWJlci5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlvbigKKyJU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgbGluZSBudW1iZXJzIGFyZSBjb3JyZWN0bHkgcmVwb3J0ZWQg
Zm9yIGJvdGggaW5saW5lIHNjcmlwdHMgYW5kIGlubGluZSBldmVudCBoYW5kbGVycy4iCispOwor
CitmdW5jdGlvbiBnZXRMaW5lRnJvbUVycm9yKGUpCit7CisgICAgLy8gSlNDCisgICAgaWYgKGUu
bGluZSkKKyAgICAgICAgcmV0dXJuIGUubGluZTsKKworICAgIC8vIFY4CisgICAgaWYgKGUuc3Rh
Y2spIHsKKyAgICAgICAgLy8gRXJyb3JOYW1lOiBFcnJvckRlc2NyaXB0aW9uIGF0IEZpbGVOYW1l
OkxpbmVOdW1iZXI6Q29sdW1uTnVtYmVyCisgICAgICAgIHBhcnRzID0gZS5zdGFjay5zcGxpdCgi
OiIpOworICAgICAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMl07CisgICAgfQorCisg
ICAgcmV0dXJuIC0xOworfQorCitmdW5jdGlvbiBhc3NlcnRFcnJvck9uTGluZShlcnJvciwgZXhw
ZWN0ZWRMaW5lKQoreworICAgIHNob3VsZEJlKHN0cmluZ2lmeShnZXRMaW5lRnJvbUVycm9yKGVy
cm9yKSksIHN0cmluZ2lmeShleHBlY3RlZExpbmUpKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC1saW5l
LW51bWJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC1saW5lLW51
bWJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFkYjVmNWRhYjliMTk0YTZiYmQ1MzFiMGM1
YTY2ZjIwMzhmYTUxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2Ny
aXB0LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgbGluZSBudW1iZXJzIGFyZSBjb3JyZWN0bHkgcmVwb3J0ZWQgZm9yIGJvdGgg
aW5saW5lIHNjcmlwdHMgYW5kIGlubGluZSBldmVudCBoYW5kbGVycy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgMTAgaXMgMTAKK1BBU1MgMTMgaXMgMTMKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzU2NWUwOGNlMzc4
N2IzN2I5NTJjMDM0ZjJjYWY4YjMyMGEwYjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NjcmlwdC1saW5lLW51bWJlci5qcyIg
b25sb2FkPSJ0cnkgeyBub25FeGlzdGVudEZ1bmN0aW9uT25MaW5lMTAoKTsgfSBjYXRjaCAoZSkg
eyBhc3NlcnRFcnJvck9uTGluZShlLCAxMCk7IH0iPjwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7
CisgICAgbm9uRXhpc3RlbnRGdW5jdGlvbk9uTGluZTEzKCk7Cit9IGNhdGNoIChlKSB7CisgICAg
YXNzZXJ0RXJyb3JPbkxpbmUoZSwgMTMpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTYyZmE1NjNlOTdkNDA0Njk3ZjY4YTc5N2ExZGEyM2U1ZWM4NWEyMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LWxpbmUtbnVtYmVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBsaW5lIG51
bWJlcnMgYXJlIGNvcnJlY3RseSByZXBvcnRlZCBmb3IgYm90aCBpbmxpbmUgc2NyaXB0cyBhbmQg
aW5saW5lIGV2ZW50IGhhbmRsZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1saW5lLW51bWJlci54aHRtbCBiL0xheW91
dFRlc3RzL3N2Zy9kb20vc2NyaXB0LWxpbmUtbnVtYmVyLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNGU1
OTY3ZmU2Y2VjODZmNmM5NjY5NTA1NWZmOTQ0YzI4MjM2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC1saW5lLW51bWJlci54aHRtbApAQCAtMCwwICsxLDIx
IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4K
Kzx0aXRsZT5TY3JpcHQgbGluZSBudW1iZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
c2NyaXB0LWxpbmUtbnVtYmVyLmpzIiBvbmxvYWQ9InRyeSB7IG5vbkV4aXN0ZW50RnVuY3Rpb25P
bkxpbmUxMCgpOyB9IGNhdGNoIChlKSB7IC8qIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDA4MDkgKi8gLyogYXNzZXJ0RXJyb3JPbkxpbmUoZSwgMTApOyov
IH0iPjwvc2NyaXB0PgorPHNjcmlwdD4KK3RyeSB7CisgICAgbm9uRXhpc3RlbnRGdW5jdGlvbk9u
TGluZTEzKCk7Cit9IGNhdGNoIChlKSB7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDgwOQorICAgIC8vIGFzc2VydEVycm9yT25MaW5lKGUs
IDEzKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyMTE5N2ZlYWVl
OWFkMWNlMzAwMGE4M2I5M2YyZTA0ZTczMzE0NTYuLmY4MGY1OGVlMmNjZmI1YTRlOGFkZWY4ODcw
OGY0YzBkM2ZlM2NjN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMTkgIFRvbnkgR2VudGlsY29y
ZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KKworICAgICAgICBQdWxsIHNjcmlwdCBsaW5lIG51bWJlciBmcm9tIERvY3VtZW50UGFyc2Vy
IGluc3RlYWQgb2YgcHVzaGluZyBpdCB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDY0OQorCisgICAgICAgIFRoaXMg
YXBwcm9hY2ggaXMgY2xlYW5lciBhbmQgaW1wcm92ZXMgV2ViQ29yZS9iZW5jaG1hcmtzL3BhcnNl
ci9odG1sLXBhcnNlci5odG1sIGJ5IH4yJS4KKworICAgICAgICBUZXN0czogZmFzdC9qcy9zY3Jp
cHQtbGluZS1udW1iZXIuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2RvbS9zY3JpcHQtbGluZS1u
dW1iZXIueGh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVt
YmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckNvbHVtbk51bWJlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAg
ICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKiBodG1sL0hU
TUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBh
cnNlcjo6cHVtcExleGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6CisK
IDIwMTAtMDYtMTkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDVjNGJkNGMyN2Y0ODUzZTY5ZDdmMjM0ZDJjY2EyODZmNmIyMmY1
MmEuLjZmMDQ1N2EwMzdmMjE2YmNkNDlkZWQ0NDNmOTE5YzA3ODNlOGE2NGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUg
IkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTYwLDcgKzYxLDYgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCkKIAogU2NyaXB0Q29udHJvbGxlcjo6U2Ny
aXB0Q29udHJvbGxlcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwg
bV9oYW5kbGVyTGluZU51bWJlcigwKQogICAgICwgbV9zb3VyY2VVUkwoMCkKICAgICAsIG1faW5F
eGVjdXRlU2NyaXB0KGZhbHNlKQogICAgICwgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayhmYWxz
ZSkKQEAgLTIzNSw2ICsyMzUsMTQgQEAgSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxl
cjo6aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIHJldHVybiB3aW5kb3dT
aGVsbDsKIH0KIAoraW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
KSBjb25zdAoreworICAgIC8vIEpTQyBleHBlY3RzIDEtYmFzZWQgbGluZSBudW1iZXJzLCBzbyB3
ZSBtdXN0IGFkZCBvbmUgaGVyZSB0byBnZXQgaXQgcmlnaHQuCisgICAgaWYgKERvY3VtZW50UGFy
c2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0
dXJuIHBhcnNlci0+bGluZU51bWJlcigpICsgMTsKKyAgICByZXR1cm4gMDsKK30KKyAgICAKIGJv
b2wgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luIHx8IGlz
SmF2YVNjcmlwdEFuY2hvck5hdmlnYXRpb24oKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggZWU3Y2M3ZDg1NWE3ZWM4YjQ5NjA1MmMwMTExODU1ZjNiYzIzOTk2YS4u
MGRlYmYzOWI1ZGZkODdkMjQ3ZGI1N2FkNDJmMGNhZWQzOGM0MzBhOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTExNyw5ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAg
U2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNob3VsZEFsbG93
WFNTIHNob3VsZEFsbG93WFNTID0gRG9Ob3RBbGxvd1hTUyk7CiAgICAgU2NyaXB0VmFsdWUgZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQqLCBT
aG91bGRBbGxvd1hTUyBzaG91bGRBbGxvd1hTUyA9IERvTm90QWxsb3dYU1MpOwogCi0gICAgdm9p
ZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGludCBsaW5lbm8pIHsgbV9oYW5kbGVyTGluZU51
bWJlciA9IGxpbmVubzsgfQotICAgIGludCBldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgeyByZXR1
cm4gbV9oYW5kbGVyTGluZU51bWJlcjsgfQotCisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1i
ZXIoKSBjb25zdDsKKyAgICAKICAgICB2b2lkIHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJv
b2wgYikgeyBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrID0gYjsgfQogICAgIGJvb2wgcHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKERPTVdyYXBwZXJXb3JsZCopIGNvbnN0OwogICAgIGJvb2wgYW55UGFn
ZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29uc3Q7CkBAIC0xODcsNyArMTg2LDYgQEAgcHJp
dmF0ZToKIAogICAgIFNoZWxsTWFwIG1fd2luZG93U2hlbGxzOwogICAgIEZyYW1lKiBtX2ZyYW1l
OwotICAgIGludCBtX2hhbmRsZXJMaW5lTnVtYmVyOwogICAgIGNvbnN0IFN0cmluZyogbV9zb3Vy
Y2VVUkw7CiAKICAgICBib29sIG1faW5FeGVjdXRlU2NyaXB0OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjgxZTFhNGI3N2UyMDUyZmRhZjUzY2QzMDEwM2Vm
NTkzNzQ3ZDgzNi4uOWY2YzM0NGVjZGNlZDY2MjVkNDQ0MTg2NDg4NGUzYjEyOTdiNmE1YSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAgLTI1OCw5ICsyNTks
MTggQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2hvdWwKICAgICByZXR1cm4gU2NyaXB0VmFsdWUob2Jq
ZWN0KTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRFdmVudEhhbmRsZXJMaW5lTnVt
YmVyKGludCBsaW5lTnVtYmVyKQoraW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxp
bmVOdW1iZXIoKSBjb25zdAogewotICAgIG1fcHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1i
ZXIobGluZU51bWJlcik7CisgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJl
cigpOworICAgIHJldHVybiAwOworfQorCitpbnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5k
bGVyQ29sdW1uTnVtYmVyKCkgY29uc3QKK3sKKyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNl
ciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpKQorICAgICAgICByZXR1cm4gcGFyc2Vy
LT5jb2x1bW5OdW1iZXIoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpmaW5pc2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oCmluZGV4IDVkNGI4M2UwZGJiMWM4NGFlZDg3NWM5NzNmNmI4ZWFmZjEx
M2ViOTUuLjMxODcxODBiMDZhZGJjYmFjZTRjOWU4OWIzNGU5ODFiY2MwOTAwOGQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNTMsNyArMTUzLDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGdjVW5wcm90ZWN0SlNXcmFwcGVyKHZvaWQqKTsKIAogICAgIHZv
aWQgZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQqKTsKLSAgICB2b2lkIHNldEV2ZW50SGFuZGxlckxp
bmVOdW1iZXIoaW50IGxpbmVOdW1iZXIpOworCisgICAgaW50IGV2ZW50SGFuZGxlckxpbmVOdW1i
ZXIoKSBjb25zdDsKKyAgICBpbnQgZXZlbnRIYW5kbGVyQ29sdW1uTnVtYmVyKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGJvb2wgcHJvY2Vzc2luZ1RpbWVy
Q2FsbGJhY2spIHsgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayA9IHByb2Nlc3NpbmdUaW1lckNh
bGxiYWNrOyB9CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBkb24ndCB1c2UgdGhlIHBhcmFt
ZXRlciB3b3JsZCBhdCBhbGwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcAppbmRleCA1N2EyODI0YTg1MjY1OGE5NmVjZDAzMmU0NTE1NDU4NjZmZDEzNWNjLi42
M2U3ZGZmYTEwOTc3ZGY0MzYxZmU0NWMyMzY5NmE3NjQ4NDMzNjliIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTY0LDExICs2NCw4IEBAIFBhc3NS
ZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihO
b2RlKiBub2RlLCBBdHRyaWJ1CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBDaGFuZ2UgdG8gdXNlIHNjcmlwdC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdo
ZW4gaW1wbGVtZW50ZWQuCi0gICAgICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50
KCktPnBhcnNlcigpLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmNvbHVtbk51bWJlcigpOwotICAgICAgICB9Cisg
ICAgICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVt
YmVyKCk7CisgICAgICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFu
ZGxlckNvbHVtbk51bWJlcigpOwogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKTsKICAgICB9CiAKQEAgLTk3LDExICs5NCw4IEBAIFBhc3NSZWZQdHI8
VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSog
ZnJhbWUsIEF0dHJpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChmcmFtZS0+
ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IENoYW5nZSB0byB1c2Ug
c2NyaXB0LT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgd2hlbiBpbXBsZW1lbnRlZC4KLSAgICAg
ICAgbGluZU51bWJlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+bGluZU51bWJlcigp
OwotICAgICAgICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmNv
bHVtbk51bWJlcigpOwotICAgIH0KKyAgICBsaW5lTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+
ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpOworICAgIGNvbHVtbk51bWJlciA9IHNjcmlwdENvbnRy
b2xsZXItPmV2ZW50SGFuZGxlckNvbHVtbk51bWJlcigpOwogICAgIHNvdXJjZVVSTCA9IGZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+aXNTVkdEb2N1bWVudCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaAppbmRleCAxNzE5NTBiZWQxZmEwYWJmZGQ0NGI4ODgzZDgzNDhlMGU5NGJi
NGU2Li5kY2Q4ZDE2NjBjM2E5OGVkNTJlMGEwMjc2ODNhZDY1N2Y4N2E4OGQxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuaApAQCAtMjAxLDcgKzIwMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgfQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGlu
dCBsaW5lTnVtYmVyKSB7IG1faGFuZGxlckxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOyB9CiAgICAg
ICAgIHZvaWQgZmluaXNoZWRXaXRoRXZlbnQoRXZlbnQqKSB7IH0KIAogICAgICAgICAvLyBFdmFs
dWF0ZSBKYXZhU2NyaXB0IGluIGEgbmV3IGlzb2xhdGVkIHdvcmxkLiBUaGUgc2NyaXB0IGdldHMg
aXRzIG93bgpAQCAtMzYyLDggKzM2MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gRm9yIHRoZSBtb21lbnQsIHdlIGhhdmUgb25lIG9mIHRoZXNlLiAgU29vbiB3ZSB3aWxsIGhh
dmUgb25lIHBlciBET01XcmFwcGVyV29ybGQuCiAgICAgICAgIFJlZlB0cjxWOERPTVdpbmRvd1No
ZWxsPiBtX3dpbmRvd1NoZWxsOwogCi0gICAgICAgIGludCBtX2hhbmRsZXJMaW5lTnVtYmVyOwot
CiAgICAgICAgIC8vIFRydWUgZm9yIDxhIGhyZWY9ImphdmFzY3JpcHQ6Zm9vKCkiPiBhbmQgZmFs
c2UgZm9yIDxzY3JpcHQ+Zm9vKCk8L3NjcmlwdD4uCiAgICAgICAgIC8vIE9ubHkgdmFsaWQgZHVy
aW5nIGV4ZWN1dGlvbi4KICAgICAgICAgYm9vbCBtX2lubGluZUNvZGU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAyYTFiYWM2MDkzZDdlZGFjOThkMWVlYjMx
ZThlZWY3Njg4Zjc1ZmI0Li5jMTM5OWZjZTkzMjEzZGFiNmE4NzllNTg1ZTIxM2Y0ZjM0MDc2ZmZl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ0LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtNzgzLDE5ICs3ODIs
MTIgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hh
ciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFNjcmlwdENvbnRyb2xsZXIqIGpzUHJveHkgPSBtX2RvYy0+ZnJhbWUoKSA/IG1fZG9jLT5m
cmFtZSgpLT5zY3JpcHQoKSA6IDA7Ci0gICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCkt
PnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0g
ICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpKTsK
LQogICAgIGhhbmRsZUVsZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQuZ2V0KCksIGxpYnhtbEF0
dHJpYnV0ZXMsIG5iX2F0dHJpYnV0ZXMsIGVjLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24pOwogICAg
IGlmIChlYykgewogICAgICAgICBzdG9wUGFyc2luZygpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGpzUHJveHkpCi0gICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxp
bmVOdW1iZXIoMCk7Ci0KICAgICBuZXdFbGVtZW50LT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwog
CiAgICAgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChuZXdF
bGVtZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFy
c2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAppbmRleCA4OWNj
ZjU3OTA5M2MxMDk5OWMwOTU5MjU5ODI0OTRhOWE3ZGJiYTc1Li41NzA3OGViM2ZlMDI1NzAxOGMy
MTNlNGI5YmY4ODZjYmJhZWNkMzQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3Bw
CkBAIC0xOTMsMTYgKzE5Myw5IEBAIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6cHVtcExleGVy
KFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgICAgICBpZiAoIW1fbGV4ZXItPm5leHRUb2tlbiht
X2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbikpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBpZiAoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQotICAg
ICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5l
TnVtYmVyKCkgKyAxKTsKLQogICAgICAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+Y29uc3RydWN0VHJl
ZUZyb21Ub2tlbihtX3Rva2VuKTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOwogCi0gICAgICAg
IC8vIEZJWE1FOiBXaHkgaXMgc2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKSBuZWNlc3Nhcnk/
Ci0gICAgICAgIGlmIChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gc2NyaXB0
KCkpCi0gICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVt
YmVyKDApOwotCiAgICAgICAgIGlmICghbV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2VkKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRl
eCAyN2YwMTYzNGZkMjkwMDM2NjA5MGE3MjljZTA5ODEzMDJhZGEwODdmLi4xYWEyMjRlNDkyNDMz
OGE5OGY5NzY0MjkzOWQ1NDIwYTUwMWFjNTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKLSNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgpAQCAtMTg5
MywxOCArMTg5MiwxMiBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVk
KCkKIAogUGFzc1JlZlB0cjxOb2RlPiBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigp
CiB7Ci0gICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9ICghbV9mcmFnbWVu
dCAmJiBtX2RvYy0+ZnJhbWUoKSkgPyBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwotICAg
IGlmIChzY3JpcHRDb250cm9sbGVyICYmIHNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3Jp
cHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAgLy8gRklYTUU6IFdoeSBpc24n
dCB0aGlzIG1fY3VycmVudFNjcmlwdFRhZ1N0YXJ0TGluZU51bWJlcj8gIEkgc3VzcGVjdCB0aGlz
IGlzIHdyb25nLgotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5l
TnVtYmVyKG1fY3VycmVudFRhZ1N0YXJ0TGluZU51bWJlciArIDEpOyAvLyBTY3JpcHQgbGluZSBu
dW1iZXJzIGFyZSAxIGJhc2VkLgogICAgIGlmIChtX2Rlc3QgPiBtX2J1ZmZlcikgewogICAgICAg
ICBtX2N1cnJlbnRUb2tlbi50ZXh0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENo
YXJhY3RlcnMobV9idWZmZXIsIG1fZGVzdCAtIG1fYnVmZmVyKTsKICAgICAgICAgaWYgKG1fY3Vy
cmVudFRva2VuLnRhZ05hbWUgIT0gY29tbWVudEF0b20pCiAgICAgICAgICAgICBtX2N1cnJlbnRU
b2tlbi50YWdOYW1lID0gdGV4dEF0b207CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRUb2tlbi50
YWdOYW1lID09IG51bGxBdG9tKSB7CiAgICAgICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7Ci0g
ICAgICAgIGlmIChzY3JpcHRDb250cm9sbGVyKQotICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxl
ci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihtX2xpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0
IGxpbmUgbnVtYmVycyBhcmUgMSBiYXNlZC4KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBA
IC0xOTIyLDggKzE5MTUsNiBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxEb2N1bWVudFBhcnNlcjo6
cHJvY2Vzc1Rva2VuKCkKICAgICAgICAgICAgIG4gPSBtX3RyZWVDb25zdHJ1Y3Rvci0+cGFyc2VU
b2tlbigmbV9jdXJyZW50VG9rZW4pOwogICAgIH0KICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgp
OwotICAgIGlmIChzY3JpcHRDb250cm9sbGVyKQotICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5z
ZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKDApOwogCiAgICAgcmV0dXJuIG4ucmVsZWFzZSgpOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59377</attachid>
            <date>2010-06-22 08:57:56 -0700</date>
            <delta_ts>2010-06-22 18:43:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100622085755.patch</filename>
            <type>text/plain</type>
            <size>15478</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNGY2NWNjNzJkYzlmZDNkOWRhOWMxMTkyZTE1NzQwZDkyOTFhZDhkLi5iY2FlNzNk
YjZmOGI1YzU4ZmIzYjhiZWEwOGM0M2UxNzliMGQ2ODQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMTkgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3Rz
IHdoaWNoIHRlc3QgbGluZSBudW1iZXJzIGZvciBib3RoIGlubGluZSBhbmQgZXZlbnQgaGFuZGxl
cgorICAgICAgICBzY3JpcHRzIGluIEhUTUwgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NDkKKworICAgICAgICAqIGZhc3QvanMv
cmVzb3VyY2VzL3NjcmlwdC1saW5lLW51bWJlci5qczogQWRkZWQuCisgICAgICAgIChnZXRMaW5l
RnJvbUVycm9yKToKKyAgICAgICAgKGFzc2VydEVycm9yT25MaW5lKToKKyAgICAgICAgKiBmYXN0
L2pzL3NjcmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA2LTIyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNl
cy9zY3JpcHQtbGluZS1udW1iZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9z
Y3JpcHQtbGluZS1udW1iZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkOWIxYTNjNGIxNWZmZjk2OTY5YjJi
MWU4OGE4MWM3NDI2YWUwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzb3VyY2VzL3NjcmlwdC1saW5lLW51bWJlci5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlw
dGlvbigKKyJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgbGluZSBudW1iZXJzIGFyZSBjb3JyZWN0bHkg
cmVwb3J0ZWQgZm9yIGJvdGggaW5saW5lIHNjcmlwdHMgYW5kIGlubGluZSBldmVudCBoYW5kbGVy
cy4iCispOworCitmdW5jdGlvbiBnZXRMaW5lRnJvbUVycm9yKGUpCit7CisgICAgLy8gSlNDCisg
ICAgaWYgKGUubGluZSkKKyAgICAgICAgcmV0dXJuIGUubGluZTsKKworICAgIC8vIFY4CisgICAg
aWYgKGUuc3RhY2spIHsKKyAgICAgICAgLy8gRXJyb3JOYW1lOiBFcnJvckRlc2NyaXB0aW9uIGF0
IEZpbGVOYW1lOkxpbmVOdW1iZXI6Q29sdW1uTnVtYmVyCisgICAgICAgIHBhcnRzID0gZS5zdGFj
ay5zcGxpdCgiOiIpOworICAgICAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMl07Cisg
ICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitmdW5jdGlvbiBhc3NlcnRFcnJvck9uTGluZShl
cnJvciwgZXhwZWN0ZWRMaW5lKQoreworICAgIHNob3VsZEJlKHN0cmluZ2lmeShnZXRMaW5lRnJv
bUVycm9yKGVycm9yKSksIHN0cmluZ2lmeShleHBlY3RlZExpbmUpKTsKK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC1saW5lLW51bWJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC1saW5lLW51bWJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFkYjVmNWRhYjliMTk0YTZi
YmQ1MzFiMGM1YTY2ZjIwMzhmYTUxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvanMvc2NyaXB0LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgbGluZSBudW1iZXJzIGFyZSBjb3JyZWN0bHkgcmVwb3J0ZWQg
Zm9yIGJvdGggaW5saW5lIHNjcmlwdHMgYW5kIGlubGluZSBldmVudCBoYW5kbGVycy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgMTAgaXMgMTAKK1BBU1MgMTMgaXMgMTMK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzU2
NWUwOGNlMzc4N2IzN2I5NTJjMDM0ZjJjYWY4YjMyMGEwYjdiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbApAQCAtMCwwICsxLDIw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NjcmlwdC1saW5lLW51
bWJlci5qcyIgb25sb2FkPSJ0cnkgeyBub25FeGlzdGVudEZ1bmN0aW9uT25MaW5lMTAoKTsgfSBj
YXRjaCAoZSkgeyBhc3NlcnRFcnJvck9uTGluZShlLCAxMCk7IH0iPjwvc2NyaXB0PgorPHNjcmlw
dD4KK3RyeSB7CisgICAgbm9uRXhpc3RlbnRGdW5jdGlvbk9uTGluZTEzKCk7Cit9IGNhdGNoIChl
KSB7CisgICAgYXNzZXJ0RXJyb3JPbkxpbmUoZSwgMTMpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGI5YmI1N2EwOGI2NTA5ZDI5M2M0OWY3NzViYzgzODkzNmFmODkxODYuLmVmMWVjYmNkMmEx
ODNkM2M2NTVjMDRlMjgyM2E0NDM3M2U5OTRjN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDYtMTkg
IFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBQdWxsIHNjcmlwdCBsaW5lIG51bWJlciBmcm9t
IERvY3VtZW50UGFyc2VyIGluc3RlYWQgb2YgcHVzaGluZyBpdCB0byBTY3JpcHRDb250cm9sbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDY0OQor
CisgICAgICAgIFRoaXMgYXBwcm9hY2ggaXMgY2xlYW5lciBhbmQgaW1wcm92ZXMgV2ViQ29yZS9i
ZW5jaG1hcmtzL3BhcnNlci9odG1sLXBhcnNlci5odG1sIGJ5IH4yJS4KKworICAgICAgICBUZXN0
czogZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmV2ZW50SGFuZGxlckxpbmVOdW1iZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlckxpbmVO
dW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVy
Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50
TnMpOgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1Rva2VuKToKKwogMjAxMC0wNi0yMiAgWXV0YSBLaXRhbXVyYSAgPHl1dGFr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWM0YmQ0YzI3
ZjQ4NTNlNjlkN2YyMzRkMmNjYTI4NmY2YjIyZjUyYS4uNmYwNDU3YTAzN2YyMTZiY2Q0OWRlZDQ0
M2Y5MTljMDc4M2U4YTY0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtNjAsNyArNjEsNiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRp
bmcoKQogCiBTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkK
ICAgICA6IG1fZnJhbWUoZnJhbWUpCi0gICAgLCBtX2hhbmRsZXJMaW5lTnVtYmVyKDApCiAgICAg
LCBtX3NvdXJjZVVSTCgwKQogICAgICwgbV9pbkV4ZWN1dGVTY3JpcHQoZmFsc2UpCiAgICAgLCBt
X3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZhbHNlKQpAQCAtMjM1LDYgKzIzNSwxNCBAQCBKU0RP
TVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCiAgICAgcmV0dXJuIHdpbmRvd1NoZWxsOwogfQogCitpbnQgU2NyaXB0Q29udHJv
bGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIGNvbnN0Cit7CisgICAgLy8gSlNDIGV4cGVj
dHMgMS1iYXNlZCBsaW5lIG51bWJlcnMsIHNvIHdlIG11c3QgYWRkIG9uZSBoZXJlIHRvIGdldCBp
dCByaWdodC4KKyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnBhcnNlcigpKQorICAgICAgICByZXR1cm4gcGFyc2VyLT5saW5lTnVtYmVyKCkgKyAx
OworICAgIHJldHVybiAwOworfQorICAgIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNz
aW5nVXNlckdlc3R1cmUoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkgY29uc3QKIHsKICAgICBpZiAo
bV9hbGxvd1BvcHVwc0Zyb21QbHVnaW4gfHwgaXNKYXZhU2NyaXB0QW5jaG9yTmF2aWdhdGlvbigp
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlZTdjYzdkODU1YTdl
YzhiNDk2MDUyYzAxMTE4NTVmM2JjMjM5OTZhLi4wZGViZjM5YjVkZmQ4N2QyNDdkYjU3YWQ0MmYw
Y2FlZDM4YzQzMGE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAt
MTE3LDkgKzExNyw4IEBAIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgU2hvdWxkQWxsb3dYU1Mgc2hvdWxkQWxsb3dYU1MgPSBEb05vdEFs
bG93WFNTKTsKICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCosIFNob3VsZEFsbG93WFNTIHNob3VsZEFsbG93WFNT
ID0gRG9Ob3RBbGxvd1hTUyk7CiAKLSAgICB2b2lkIHNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
aW50IGxpbmVubykgeyBtX2hhbmRsZXJMaW5lTnVtYmVyID0gbGluZW5vOyB9Ci0gICAgaW50IGV2
ZW50SGFuZGxlckxpbmVOdW1iZXIoKSB7IHJldHVybiBtX2hhbmRsZXJMaW5lTnVtYmVyOyB9Ci0K
KyAgICBpbnQgZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIGNvbnN0OworICAgIAogICAgIHZvaWQg
c2V0UHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2soYm9vbCBiKSB7IG1fcHJvY2Vzc2luZ1RpbWVyQ2Fs
bGJhY2sgPSBiOyB9CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoRE9NV3JhcHBlcldv
cmxkKikgY29uc3Q7CiAgICAgYm9vbCBhbnlQYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBj
b25zdDsKQEAgLTE4Nyw3ICsxODYsNiBAQCBwcml2YXRlOgogCiAgICAgU2hlbGxNYXAgbV93aW5k
b3dTaGVsbHM7CiAgICAgRnJhbWUqIG1fZnJhbWU7Ci0gICAgaW50IG1faGFuZGxlckxpbmVOdW1i
ZXI7CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAogICAgIGJvb2wgbV9pbkV4ZWN1
dGVTY3JpcHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2
ODFlMWE0Yjc3ZTIwNTJmZGFmNTNjZDMwMTAzZWY1OTM3NDdkODM2Li45ZjZjMzQ0ZWNkY2VkNjYy
NWQ0NDQxODY0ODg0ZTNiMTI5N2I2YTVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnRMaXN0ZW5lci5oIgpAQCAtMjU4LDkgKzI1OSwxOCBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTaG91
bAogICAgIHJldHVybiBTY3JpcHRWYWx1ZShvYmplY3QpOwogfQogCi12b2lkIFNjcmlwdENvbnRy
b2xsZXI6OnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoaW50IGxpbmVOdW1iZXIpCitpbnQgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIGNvbnN0CiB7Ci0gICAgbV9w
cm94eS0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5lTnVtYmVyKTsKKyAgICBpZiAoRG9j
dW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpKQorICAg
ICAgICByZXR1cm4gcGFyc2VyLT5saW5lTnVtYmVyKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lu
dCBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJDb2x1bW5OdW1iZXIoKSBjb25zdAorewor
ICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFy
c2VyKCkpCisgICAgICAgIHJldHVybiBwYXJzZXItPmNvbHVtbk51bWJlcigpOworICAgIHJldHVy
biAwOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmZpbmlzaGVkV2l0aEV2ZW50KEV2ZW50
KiBldmVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNWQ0Yjgz
ZTBkYmIxYzg0YWVkODc1Yzk3M2Y2YjhlYWZmMTEzZWI5NS4uMzE4NzE4MGIwNmFkYmNiYWNlNGM5
ZTg5YjM0ZTk4MWJjYzA5MDA4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKQEAgLTE1Myw3ICsxNTMsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2NVbnByb3Rl
Y3RKU1dyYXBwZXIodm9pZCopOwogCiAgICAgdm9pZCBmaW5pc2hlZFdpdGhFdmVudChFdmVudCop
OwotICAgIHZvaWQgc2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihpbnQgbGluZU51bWJlcik7CisK
KyAgICBpbnQgZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIGNvbnN0OworICAgIGludCBldmVudEhh
bmRsZXJDb2x1bW5OdW1iZXIoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UHJvY2Vzc2luZ1RpbWVy
Q2FsbGJhY2soYm9vbCBwcm9jZXNzaW5nVGltZXJDYWxsYmFjaykgeyBtX3Byb2Nlc3NpbmdUaW1l
ckNhbGxiYWNrID0gcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2s7IH0KICAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5IHdlIGRvbid0IHVzZSB0aGUgcGFyYW1ldGVyIHdvcmxkIGF0IGFsbC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDU3YTI4MjRhODUyNjU4
YTk2ZWNkMDMyZTQ1MTU0NTg2NmZkMTM1Y2MuLjYzZTdkZmZhMTA5NzdkZjQzNjFmZTQ1YzIzNjk2
YTc2NDg0MzM2OWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVy
LmNwcApAQCAtNjQsMTEgKzY0LDggQEAgUGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
LT5wYXJzZXIoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IENoYW5nZSB0byB1c2Ugc2NyaXB0
LT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgd2hlbiBpbXBsZW1lbnRlZC4KLSAgICAgICAgICAg
IGxpbmVOdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCktPmxpbmVOdW1iZXIoKTsK
LSAgICAgICAgICAgIGNvbHVtbk51bWJlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+
Y29sdW1uTnVtYmVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgbGluZU51bWJlciA9IHNjcmlwdENv
bnRyb2xsZXItPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKTsKKyAgICAgICAgY29sdW1uTnVtYmVy
ID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyQ29sdW1uTnVtYmVyKCk7CiAgICAgICAg
IHNvdXJjZVVSTCA9IG5vZGUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAgIH0KIApA
QCAtOTcsMTEgKzk0LDggQEAgUGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgQXR0cmkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkgewotICAg
ICAgICAvLyBGSVhNRTogQ2hhbmdlIHRvIHVzZSBzY3JpcHQtPmV2ZW50SGFuZGxlckxpbmVOdW1i
ZXIoKSB3aGVuIGltcGxlbWVudGVkLgotICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnBhcnNlcigpLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgIGNvbHVtbk51bWJlciA9IGZy
YW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+Y29sdW1uTnVtYmVyKCk7Ci0gICAgfQorICAgIGxp
bmVOdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7Cisg
ICAgY29sdW1uTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyQ29sdW1uTnVt
YmVyKCk7CiAgICAgc291cmNlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
OwogICAgIHJldHVybiBWOExhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1l
KCkuc3RyaW5nKCksIGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCksIGF0dHItPnZh
bHVlKCksIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXb3JsZENvbnRleHRI
YW5kbGUoVXNlTWFpbldvcmxkKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IDA4OGIzMzc3
NGJjNmRlZGQ3ZDFhZTZhZjBiOWY3NTU3ZTdkNDJhZTMuLmIxNmJkMDhjNzY4YTA1MzZkYjY3MDI5
ZmVhNTI0ZjNiYzU3MTA0NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94
eS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC0yMDIsNyArMjAyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICB2b2lk
IHNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoaW50IGxpbmVOdW1iZXIpIHsgbV9oYW5kbGVyTGlu
ZU51bWJlciA9IGxpbmVOdW1iZXI7IH0KICAgICAgICAgdm9pZCBmaW5pc2hlZFdpdGhFdmVudChF
dmVudCopIHsgfQogCiAgICAgICAgIC8vIEV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBuZXcgaXNv
bGF0ZWQgd29ybGQuIFRoZSBzY3JpcHQgZ2V0cyBpdHMgb3duCkBAIC0zNjksOCArMzY4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGb3IgdGhlIG1vbWVudCwgd2UgaGF2ZSBv
bmUgb2YgdGhlc2UuICBTb29uIHdlIHdpbGwgaGF2ZSBvbmUgcGVyIERPTVdyYXBwZXJXb3JsZC4K
ICAgICAgICAgUmVmUHRyPFY4RE9NV2luZG93U2hlbGw+IG1fd2luZG93U2hlbGw7CiAKLSAgICAg
ICAgaW50IG1faGFuZGxlckxpbmVOdW1iZXI7Ci0KICAgICAgICAgLy8gVHJ1ZSBmb3IgPGEgaHJl
Zj0iamF2YXNjcmlwdDpmb28oKSI+IGFuZCBmYWxzZSBmb3IgPHNjcmlwdD5mb28oKTwvc2NyaXB0
Pi4KICAgICAgICAgLy8gT25seSB2YWxpZCBkdXJpbmcgZXhlY3V0aW9uLgogICAgICAgICBib29s
IG1faW5saW5lQ29kZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmlu
ZGV4IDJhMWJhYzYwOTNkN2VkYWM5OGQxZWViMzFlOGVlZjc2ODhmNzVmYjQuLmMxMzk5ZmNlOTMy
MTNkYWI2YTg3OWU1ODVlMjEzZjRmMzQwNzZmZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCkBAIC03ODMsMTkgKzc4MiwxMiBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2Vy
OjpzdGFydEVsZW1lbnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENo
YQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0Q29udHJvbGxlcioganNQcm94
eSA9IG1fZG9jLT5mcmFtZSgpID8gbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAgICBp
ZiAoanNQcm94eSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAganNQcm94eS0+c2V0RXZlbnRIYW5k
bGVyTGluZU51bWJlcihsaW5lTnVtYmVyKCkpOwotCiAgICAgaGFuZGxlRWxlbWVudEF0dHJpYnV0
ZXMobmV3RWxlbWVudC5nZXQoKSwgbGlieG1sQXR0cmlidXRlcywgbmJfYXR0cmlidXRlcywgZWMs
IG1fc2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHN0b3BQYXJz
aW5nKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoanNQcm94eSkKLSAgICAg
ICAganNQcm94eS0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKTsKLQogICAgIG5ld0VsZW1l
bnQtPmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CiAKICAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRF
bGVtZW50ID0gdG9TY3JpcHRFbGVtZW50KG5ld0VsZW1lbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1
RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGZmM2ZlNGUwZDQ5N2E1MDU5MGFiZmJiMzMxMzVhZTJj
ODEwOTgxNmUuLjhjN2JlNDY1OTQwYmNkNTNhOWJhYzQ4Mjg1N2Q2ZDYxMzBiZmZjYzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE5MywxNiArMTkzLDkgQEAgdm9pZCBI
VE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAg
ICAgIGlmICghbV9sZXhlci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChTY3JpcHRDb250cm9sbGVyKiBzY3Jp
cHRDb250cm9sbGVyID0gc2NyaXB0KCkpCi0gICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5z
ZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVyKGxpbmVOdW1iZXIoKSArIDEpOwotCiAgICAgICAgIG1f
dHJlZUNvbnN0cnVjdG9yLT5jb25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAg
ICBtX3Rva2VuLmNsZWFyKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFdoeSBpcyBzZXRFdmVudEhh
bmRsZXJMaW5lTnVtYmVyKDApIG5lY2Vzc2FyeT8KLSAgICAgICAgaWYgKFNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBzY3JpcHQoKSkKLSAgICAgICAgICAgIHNjcmlwdENvbnRy
b2xsZXItPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoMCk7Ci0KICAgICAgICAgaWYgKCFtX3Ry
ZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDI3ZjAxNjM0ZmQyOTAwMzY2MDkwYTcyOWNl
MDk4MTMwMmFkYTA4N2YuLjFhYTIyNGU0OTI0MzM4YTk4Zjk3NjQyOTM5ZDU0MjBhNTAxYWM1N2Mg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQcmVsb2FkU2Nhbm5lci5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJYU1NBdWRpdG9yLmgiCkBAIC0xODkzLDE4ICsxODkyLDEyIEBAIGJvb2wgSFRNTERv
Y3VtZW50UGFyc2VyOjpmaW5pc2hXYXNDYWxsZWQoKQogCiBQYXNzUmVmUHRyPE5vZGU+IEhUTUxE
b2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkKIHsKLSAgICBTY3JpcHRDb250cm9sbGVyKiBz
Y3JpcHRDb250cm9sbGVyID0gKCFtX2ZyYWdtZW50ICYmIG1fZG9jLT5mcmFtZSgpKSA/IG1fZG9j
LT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7Ci0gICAgaWYgKHNjcmlwdENvbnRyb2xsZXIgJiYgc2Ny
aXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
KQotICAgICAgICAvLyBGSVhNRTogV2h5IGlzbid0IHRoaXMgbV9jdXJyZW50U2NyaXB0VGFnU3Rh
cnRMaW5lTnVtYmVyPyAgSSBzdXNwZWN0IHRoaXMgaXMgd3JvbmcuCi0gICAgICAgIHNjcmlwdENv
bnRyb2xsZXItPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobV9jdXJyZW50VGFnU3RhcnRMaW5l
TnVtYmVyICsgMSk7IC8vIFNjcmlwdCBsaW5lIG51bWJlcnMgYXJlIDEgYmFzZWQuCiAgICAgaWYg
KG1fZGVzdCA+IG1fYnVmZmVyKSB7CiAgICAgICAgIG1fY3VycmVudFRva2VuLnRleHQgPSBTdHJp
bmdJbXBsOjpjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVycyhtX2J1ZmZlciwgbV9kZXN0IC0g
bV9idWZmZXIpOwogICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4udGFnTmFtZSAhPSBjb21tZW50
QXRvbSkKICAgICAgICAgICAgIG1fY3VycmVudFRva2VuLnRhZ05hbWUgPSB0ZXh0QXRvbTsKICAg
ICB9IGVsc2UgaWYgKG1fY3VycmVudFRva2VuLnRhZ05hbWUgPT0gbnVsbEF0b20pIHsKICAgICAg
ICAgbV9jdXJyZW50VG9rZW4ucmVzZXQoKTsKLSAgICAgICAgaWYgKHNjcmlwdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zZXRFdmVudEhhbmRsZXJMaW5lTnVtYmVy
KG1fbGluZU51bWJlciArIDEpOyAvLyBTY3JpcHQgbGluZSBudW1iZXJzIGFyZSAxIGJhc2VkLgog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE5MjIsOCArMTkxNSw2IEBAIFBhc3NSZWZQ
dHI8Tm9kZT4gSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW4oKQogICAgICAgICAgICAg
biA9IG1fdHJlZUNvbnN0cnVjdG9yLT5wYXJzZVRva2VuKCZtX2N1cnJlbnRUb2tlbik7CiAgICAg
fQogICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7Ci0gICAgaWYgKHNjcmlwdENvbnRyb2xsZXIp
Ci0gICAgICAgIHNjcmlwdENvbnRyb2xsZXItPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIoMCk7
CiAKICAgICByZXR1cm4gbi5yZWxlYXNlKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59453</attachid>
            <date>2010-06-22 18:20:10 -0700</date>
            <delta_ts>2010-06-22 18:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40649-20100622182009.patch</filename>
            <type>text/plain</type>
            <size>14790</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTJhNDM5ZWNjZTUwYjJmNzFjZGQwOWUzOGRlNTM2ZTY4NjgxODVhMC4uODYzOTIyYmVmOGQ1N2Ux
MmQ0ZjA1NmEyODI4NmRlNmFkMzYwMTJmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0IEBACisKIDIwMTAtMDYtMjIgIFRv
bnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KQEAgLTI3LDQzICsyOCw2IEBACiAgICAgICAgICogaHRtbC9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgogICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpw
cm9jZXNzVG9rZW4pOgogCi0yMDEwLTA2LTIyICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAg
TWFrZSBQZW5kaW5nU2NyaXB0IGhvbGQgYSBDYWNoZWRSZXNvdXJjZUNsaWVudCBvcGVuIGZvciBp
dHMgbGlmZXRpbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwOTY4Ci0KLSAgICAgICAgVGhpcyByZXBsYWNlcyB0aGUgbWVjaGFuaXNtIGludHJvZHVj
ZWQgaW4gcjYxMzc0IHdpdGggYSBzaW1wbGVyCi0gICAgICAgIGFwcHJvYWNoIGZyb20gcHJldmVu
dGluZyB1bmV4cGVjdGVkIHB1cmdlczsgYWx3YXlzIGtlZXAgYSBjbGllbnQgb3Blbi4KLSAgICAg
ICAgVGhpcyB3aWxsIGFwcHJvYWNoIHdpbGwgYWxsb3cgZGVmZXJyZWQgc2NyaXB0cyB0byBhZGQg
YSBjbGllbnQgYWZ0ZXIKLSAgICAgICAgdGhlIHJlc291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVl
biBsb2FkZWQgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQKLSAgICAgICAgdGhlIGJ1ZmZl
ciBiZWluZyBwdXJnZWQgaW4gdGhlIG1lYW50aW1lLgotCi0gICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIG1ha2luZyBhIENhY2hlZFJlc291cmNlIHB1cmdlIGl0c2VsZiBpcyBub3QKLSAgICAg
ICAgdGVzdGFibGUgZnJvbSBhIExheW91dFRlc3QuCi0KLSAgICAgICAgKiBodG1sL0hUTUw1RG9j
dW1lbnRQYXJzZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6
d2F0Y2hGb3JMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6Om5v
dGlmeUZpbmlzaGVkKToKLSAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3JpcHRSdW5uZXIpOgot
ICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2Ny
aXB0KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3Jp
cHRSZWFkeSk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBl
bmRpbmdTY3JpcHQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OndhdGNo
Rm9yTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNo
aW5nRm9yTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpOgotICAgICAgICAoV2Vi
Q29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgotICAgICAgICAqIGh0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuaDoKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVy
OjpQZW5kaW5nU2NyaXB0OjpQZW5kaW5nU2NyaXB0KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1
U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1NjcmlwdCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6c2V0Q2FjaGVkU2NyaXB0
KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojpj
YWNoZWRTY3JpcHQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OlBlbmRp
bmdTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKToKLSAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVu
bmVySG9zdC5oOgotCiAyMDEwLTA2LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IGZlNDRhZmM0ODBkNjI4NmQzYjJmZGQ0ZTQwMWU5MmU5YjQwNmZkNWQu
LmM5OGZkZTAyZjE1MWM1YmEzNGE4NDFiMjc1MzAzNjhmOWU2YjVkYTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVEb2N1bWVudFBhcnNlci5jcHAKQEAgLTQwNiwxMCArNDA2LDYgQEAgdm9pZCBIVE1MNURvY3Vt
ZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiB2b2lkIEhU
TUw1RG9jdW1lbnRQYXJzZXI6OndhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2Ny
aXB0KQogewotICAgIEFTU0VSVCghY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKLSAgICAvLyBh
ZGRDbGllbnQgd291bGQgY2FsbCBub3RpZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCB3ZXJlIGNvbXBs
ZXRlLgotICAgIC8vIENhbGxlcnMgZG8gbm90IGV4cGVjdCB0byBiZSByZS1lbnRlcmVkIGZyb20g
dGhpcyBjYWxsLCBzbyB0aGV5IHNob3VsZAotICAgIC8vIG5vdCBhbiBhbHJlYWR5LWxvYWRlZCBD
YWNoZWRSZXNvdXJjZS4KICAgICBjYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKIH0KIApA
QCAtNDI4LDYgKzQyNCwxNCBAQCBib29sIEhUTUw1RG9jdW1lbnRQYXJzZXI6OnNob3VsZExvYWRF
eHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgQXRvbWljU3RyaW5nJiBzcgogdm9pZCBIVE1MNURv
Y3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyKTsKKyAgICAvLyBJZ25vcmUgY2FsbHMg
dW5sZXNzIHdlIGhhdmUgYSBzY3JpcHQgYmxvY2tpbmcgdGhlIHBhcnNlciB3YWl0aW5nCisgICAg
Ly8gZm9yIGl0cyBvd24gbG9hZC4gIE90aGVyd2lzZSB0aGlzIG1heSBiZSBhIGxvYWQgY2FsbGJh
Y2sgZnJvbQorICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgYmVjYXVzZSB0aGUgc2Ny
aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBjYWNoZS4KKyAgICAvLyBIVE1MNVNjcmlwdFJ1bm5lciBt
YXkgbm90IGJlIHJlYWR5IHRvIGhhbmRsZSBydW5uaW5nIHRoYXQgc2NyaXB0IHlldC4KKyAgICBp
ZiAoIW1fc2NyaXB0UnVubmVyLT5oYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSkgeworICAgICAg
ICBBU1NFUlQobV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIEFTU0VSVCghaW5TY3JpcHRFeGVjdXRpb24oKSk7CiAgICAgQVNT
RVJUKG1fdHJlZUNvbnN0cnVjdG9yLT5pc1BhdXNlZCgpKTsKICAgICAvLyBOb3RlOiBXZSBvbmx5
IGV2ZXIgd2FpdCBvbiBvbmUgc2NyaXB0IGF0IGEgdGltZSwgc28gd2UgYWx3YXlzIGtub3cgdGhp
cwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKaW5kZXggYzcyOGUwNGQyMmFjZWRmZTM3Yjkx
YzM3ODUwNjI2Y2UxYmVhMzkxYS4uM2UxNmQ0MTQzNzA1OGI0YWVmYWFhNTM0ZTc0OTY3MDcxNzkx
MTRiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIEhU
TUw1U2NyaXB0UnVubmVyOjpIVE1MNVNjcmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQsIEhU
TUw1U2NyaXB0UnVubmVySG9zdCoKIEhUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3JpcHRSdW5u
ZXIoKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgcGFzc2VkIGEgImRvbmUgbG9hZGlu
Zy9wYXJzaW5nIiBjYWxsYmFjayBzb29uZXIgdGhhbiBkZXN0cnVjdGlvbj8KLSAgICBpZiAobV9w
YXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdT
Y3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQo
KSkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7
CiB9CiAKQEAgLTk5LDEwICs5OSwxMCBAQCBpbmxpbmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRl
U2NyaXB0RXJyb3JFdmVudCgpCiAKIFNjcmlwdFNvdXJjZUNvZGUgSFRNTDVTY3JpcHRSdW5uZXI6
OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9v
bCYgZXJyb3JPY2N1cnJlZCkKIHsKLSAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKSB7Ci0g
ICAgICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2FjaGVkU2NyaXB0KCktPmVycm9yT2NjdXJy
ZWQoKTsKLSAgICAgICAgQVNTRVJUKHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSk7
Ci0gICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSk7
CisgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQpIHsKKyAgICAgICAgZXJyb3JPY2N1cnJlZCA9
IHNjcmlwdC5jYWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKTsKKyAgICAgICAgQVNTRVJUKHNj
cmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpOworICAgICAgICByZXR1cm4gU2NyaXB0U291
cmNlQ29kZShzY3JpcHQuY2FjaGVkU2NyaXB0LmdldCgpKTsKICAgICB9CiAgICAgZXJyb3JPY2N1
cnJlZCA9IGZhbHNlOwogICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5lbGVtZW50
LT50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50
KSwgc2NyaXB0LnN0YXJ0aW5nTGluZU51bWJlcik7CkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBI
VE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1Njcmlw
dCYgc2NyaXB0KQogICAgIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyA9ICFtX2Rv
Y3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKTsKICAgICBpZiAobV9oYXNTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHNjcmlw
dC5jYWNoZWRTY3JpcHQoKSAmJiAhc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKQor
ICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0ICYmICFzY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xv
YWRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3Jp
cHQoKQogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IHNvdXJjZUZyb21QZW5kaW5n
U2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LCBlcnJvck9jY3VycmVkKTsKIAogICAgIC8v
IFN0b3Agd2F0Y2hpbmcgbG9hZHMgYmVmb3JlIGV4ZWN1dGVTY3JpcHQgdG8gcHJldmVudCByZWN1
cnNpb24gaWYgdGhlIHNjcmlwdCByZWxvYWRzIGl0c2VsZi4KLSAgICBpZiAobV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0
Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNj
cmlwdCAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKICAgICAg
ICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiAKICAgICAv
LyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQgYmVmb3JlIHBvc3NpYmxlIHJlbnRyYW5jeSBmcm9t
IGV4ZWN1dGVTY3JpcHQoKQpAQCAtMTYxLDE4ICsxNjEsMzAgQEAgdm9pZCBIVE1MNVNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVNjcmlwdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJgogICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNv
dXJjZUNvZGUpOwogfQogCitib29sIEhUTUw1U2NyaXB0UnVubmVyOjpoYXNTY3JpcHRzV2FpdGlu
Z0ZvckxvYWQoKSBjb25zdAoreworICAgIC8vIFdlJ3JlIG9ubHkgYWN0dWFsbHkgd2FpdGluZyBm
b3IgYSBsb2FkLiAgVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlIGxvYWQKKyAgICAvLyBjYWxsYmFj
a3Mgd2hlbiBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGNhbGxzIG5vdGlmeUZpbmlzaGVkIGJl
Y2F1c2UKKyAgICAvLyBvZiBhIGNhY2hlIGhpdCAobm90IGJlY2F1c2Ugb2YgYSBsb2FkIHdlIHdl
cmUgc2V0IHVwIHRvIHdhaXQgZm9yKS4KKyAgICByZXR1cm4gbV9wYXJzaW5nQmxvY2tpbmdTY3Jp
cHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPT0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2Fk
OworfQorCiB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjp3YXRjaEZvckxvYWQoUGVuZGluZ1Njcmlw
dCYgcGVuZGluZ1NjcmlwdCkKIHsKICAgICBBU1NFUlQoIXBlbmRpbmdTY3JpcHQud2F0Y2hpbmdG
b3JMb2FkKCkpOwotICAgIG1faG9zdC0+d2F0Y2hGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVk
U2NyaXB0KCkpOwotICAgIHBlbmRpbmdTY3JpcHQuc2V0V2F0Y2hpbmdGb3JMb2FkKHRydWUpOwor
ICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgd2lsbCBjYWxsIG5vdGlmeUZpbmlzaGVk
IGlmIHRoZSBsb2FkIGlzIGFscmVhZHkKKyAgICAvLyBjb21wbGV0ZS4gIFdlIHNldCB3YXRjaGlu
Z0ZvckxvYWRTdGF0ZSB0byBSZWdpc3RlcmluZ0ZvcldhdGNoIHNvIHRoYXQgd2UKKyAgICAvLyBr
bm93IHRvIGlnbm9yZSBhbnkgbm90aWZ5RmluaXNoZWQgY2FsbCBkdXJpbmcgYWRkQ2xpZW50Lgor
ICAgIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5kaW5nU2NyaXB0OjpS
ZWdpc3RlcmluZ0ZvcldhdGNoOworICAgIG1faG9zdC0+d2F0Y2hGb3JMb2FkKHBlbmRpbmdTY3Jp
cHQuY2FjaGVkU2NyaXB0LmdldCgpKTsKKyAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9h
ZFN0YXRlID0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2FkOwogfQogCiB2b2lkIEhUTUw1
U2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdT
Y3JpcHQpCiB7CiAgICAgQVNTRVJUKHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpOwot
ICAgIG1faG9zdC0+c3RvcFdhdGNoaW5nRm9yTG9hZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlw
dCgpKTsKLSAgICBwZW5kaW5nU2NyaXB0LnNldFdhdGNoaW5nRm9yTG9hZChmYWxzZSk7CisgICAg
bV9ob3N0LT5zdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0Lmdl
dCgpKTsKKyAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZFN0YXRlID0gUGVuZGluZ1Nj
cmlwdDo6Tm90V2F0Y2hpbmdGb3JMb2FkOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBt
YXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcgd2hvc2UgdGFnIG5hbWUgaXMgJ3NjcmlwdCciCkBA
IC0yMTIsMTAgKzIyNCwxNCBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2lu
Z0Jsb2NraW5nU2NyaXB0cygpCiAKIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3Jp
cHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkKIHsKKyAgICAv
LyBDYWxsZXJzIHNob3VsZCBjaGVjayBoYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSBiZWZvcmUg
Y2FsbGluZworICAgIC8vIHRvIHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBkdXJp
bmcgZHVlIHRvCisgICAgLy8gQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCBjYWxsaW5nIG5vdGlm
eUZpbmlzaGVkIG9uIGNhY2hlLWhpdHMuCisgICAgQVNTRVJUKGhhc1NjcmlwdHNXYWl0aW5nRm9y
TG9hZCgpKTsKICAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKICAgICBBU1NFUlQo
aGF2ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNhY2hlZFNj
cmlwdCwgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgPT0gY2FjaGVkU2Ny
aXB0KTsKLSAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkt
PmlzTG9hZGVkKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVkU2NyaXB0LCBtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPT0gY2FjaGVkU2NyaXB0KTsKKyAgICBBU1NFUlQo
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKICAgICBy
ZXR1cm4gZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKIH0KIApAQCAtMjIzLDcgKzIz
OSw3IEBAIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkKIHsKICAgICAvLyBDYWxsZXJzIHNob3VsZCBjaGVjayBoYXNTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCkgYmVmb3JlIGNhbGxpbmcKICAgICAvLyB0byBwcmV2ZW50IHBh
cnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVyaW5nIDwvc3R5bGU+IHBhcnNpbmcuCi0gICAgQVNT
RVJUKG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk7CisgICAgQVNTRVJUKGhhc1Nj
cmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3Rp
bmdMZXZlbCk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgp
KTsKICAgICByZXR1cm4gZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKQEAgLTI0Niwx
MyArMjYyLDE2IEBAIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQoRWxlbWVu
dCogc2NyaXB0KQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBEaXNwYXRjaCBlcnJvciBl
dmVudC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BhcnNpbmdCbG9ja2luZ1Njcmlw
dC5zZXRDYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KTsKLQotICAgIC8vIFdlIG9ubHkgY2FyZSBh
Ym91dCBhIGxvYWQgY2FsbGJhY2sgaWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5Ci0gICAg
Ly8gaW4gdGhlIGNhY2hlLiAgQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdAotICAgIC8vIGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcgY29u
dHJvbCB0byB0aGUgcGFyc2VyLgotICAgIGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2Fj
aGVkU2NyaXB0KCktPmlzTG9hZGVkKCkpCi0gICAgICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdCk7CisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0
ID0gY2FjaGVkU2NyaXB0OworCisgICAgLy8gQWx3YXlzIGNhbGwgd2F0Y2hGb3JMb2FkLCBldmVu
IGlmIHRoZSBzY3JpcHQgaXMgYWxyZWFkeSBsb2FkZWQuCisgICAgLy8gQ2FjaGVkUmVzb3VyY2Ug
bWF5IHB1cmdlIGl0cyBkYXRhIGlmIGl0IGhhcyBubyBjbGllbnRzLCB3aGljaCB3b3VsZCBjYXVz
ZQorICAgIC8vIGxhdGVyIHNjcmlwdCBleGVjdXRpb24gdG8gZmFpbC4gIHdhdGNoRm9yTG9hZCBz
ZXRzIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0CisgICAgLy8gdG8gdGhlIFJlZ2lzdGVyaW5nRm9y
V2F0Y2ggc3RhdGUgc28gd2Uga25vdyB0byBpZ25vcmUgYW55CisgICAgLy8gZXhlY3V0ZVNjcmlw
dHNXYWl0aW5nRm9yTG9hZCBjYWxsYmFja3MgZHVyaW5nIHRoZSB3YXRjaEZvckxvYWQgY2FsbC4K
KyAgICB3YXRjaEZvckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOworICAgIC8vIENhbGxl
cnMgd2lsbCBhdHRlbXB0IHRvIHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQgaWYgcG9z
c2libGUKKyAgICAvLyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KIH0K
IAogLy8gVGhpcyBtZXRob2QgaXMgbWVhbnQgdG8gbWF0Y2ggdGhlIEhUTUw1IGRlZmluaXRpb24g
b2YgInJ1bm5pbmcgYSBzY3JpcHQiCkBAIC0yNzgsMjQgKzI5Nyw0IEBAIHZvaWQgSFRNTDVTY3Jp
cHRSdW5uZXI6OnJ1blNjcmlwdChFbGVtZW50KiBzY3JpcHQsIGludCBzdGFydGluZ0xpbmVOdW1i
ZXIpCiAgICAgfQogfQogCi1IVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6flBlbmRp
bmdTY3JpcHQoKQotewotICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgbV9jYWNoZWRT
Y3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6
UGVuZGluZ1NjcmlwdDo6c2V0Q2FjaGVkU2NyaXB0KENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0
KQotewotICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJl
bW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKLSAg
ICBpZiAobV9jYWNoZWRTY3JpcHQpCi0gICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQo
dGhpcyk7Ci19Ci0KLUNhY2hlZFNjcmlwdCogSFRNTDVTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3Jp
cHQ6OmNhY2hlZFNjcmlwdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0Lmdl
dCgpOwotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCmluZGV4IDljMmZiMzYwMmY0NzUx
YzY2YjU4YTE5YzI2MDFhYjY0NmIyMTQ1MDQuLjMxMDk3MjA5NmZiNmIyOGIyODk2MTMxZTU0NGM5
NWY2YjdlODUxZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCkBAIC00OCw0NyArNDgsNDMg
QEAgcHVibGljOgogCiAgICAgLy8gUHJvY2Vzc2VzIHRoZSBwYXNzZWQgaW4gc2NyaXB0IGFuZCBh
bnkgcGVuZGluZyBzY3JpcHRzIGlmIHBvc3NpYmxlLgogICAgIGJvb2wgZXhlY3V0ZShQYXNzUmVm
UHRyPEVsZW1lbnQ+IHNjcmlwdFRvUHJvY2VzcywgaW50IHNjcmlwdFN0YXJ0TGluZSk7Ci0gICAg
Ly8gUHJvY2Vzc2VzIGFueSBwZW5kaW5nIHNjcmlwdHMuCisKKyAgICBib29sIGhhc1NjcmlwdHNX
YWl0aW5nRm9yTG9hZCgpIGNvbnN0OwogICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
TG9hZChDYWNoZWRSZXNvdXJjZSopOworCiAgICAgYm9vbCBoYXNTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hl
ZXRzOyB9CiAgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwog
CiAgICAgYm9vbCBpblNjcmlwdEV4ZWN1dGlvbigpIHsgcmV0dXJuICEhbV9zY3JpcHROZXN0aW5n
TGV2ZWw7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBBIGNvbnRhaW5lciBmb3IgYW4gZXh0ZXJuYWwg
c2NyaXB0IHdoaWNoIG1heSBiZSBsb2FkZWQgYW5kIGV4ZWN1dGVkLgotICAgIC8vCi0gICAgLy8g
QSBDYWNoZWRSZXNvdXJjZUhhbmRsZSBhbG9uZSBkb2VzIG5vdCBwcmV2ZW50IHRoZSB1bmRlcmx5
aW5nIENhY2hlZFJlc291cmNlCi0gICAgLy8gZnJvbSBwdXJnaW5nIGl0cyBkYXRhIGJ1ZmZlci4g
VGhpcyBjbGFzcyBob2xkcyBhIGR1bW15IGNsaWVudCBvcGVuIGZvciBpdHMKLSAgICAvLyBsaWZl
dGltZSBpbiBvcmRlciB0byBndWFyYW50ZWUgdGhhdCB0aGUgZGF0YSBidWZmZXIgd2lsbCBub3Qg
YmUgcHVyZ2VkLgotICAgIGNsYXNzIFBlbmRpbmdTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgewotICAgIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGVuZGluZ1NjcmlwdCB7CisgICAg
ICAgIC8vIFRoaXMgc3RhdGUgY29udHJvbHMgd2hldGhlciB3ZSBuZWVkIHRvIGRvIGFueXRoaW5n
IHdpdGggdGhpcyBzY3JpcHQKKyAgICAgICAgLy8gd2hlbiB3ZSBnZXQgYSBleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JMb2FkIGNhbGxiYWNrLgorICAgICAgICAvLyBXZSBpZ25vcmUgY2FsbGJhY2tz
IGR1cmluZyBSZWdpc3RlcmluZ0ZvcldhdGNoLgorICAgICAgICBlbnVtIFdhdGNoaW5nRm9yTG9h
ZFN0YXRlIHsKKyAgICAgICAgICAgIE5vdFdhdGNoaW5nRm9yTG9hZCwKKyAgICAgICAgICAgIFJl
Z2lzdGVyaW5nRm9yV2F0Y2gsCisgICAgICAgICAgICBXYXRjaGluZ0ZvckxvYWQsCisgICAgICAg
IH07CisKICAgICAgICAgUGVuZGluZ1NjcmlwdCgpCi0gICAgICAgICAgICA6IHN0YXJ0aW5nTGlu
ZU51bWJlcigwKQotICAgICAgICAgICAgLCBtX3dhdGNoaW5nRm9yTG9hZChmYWxzZSkKKyAgICAg
ICAgICAgIDogd2F0Y2hpbmdGb3JMb2FkU3RhdGUoTm90V2F0Y2hpbmdGb3JMb2FkKQorICAgICAg
ICAgICAgLCBzdGFydGluZ0xpbmVOdW1iZXIoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgflBlbmRpbmdTY3JpcHQoKTsKLQotICAgICAgICBib29sIHdhdGNoaW5nRm9yTG9hZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2F0Y2hpbmdGb3JMb2FkOyB9Ci0gICAgICAgIHZvaWQgc2V0V2F0
Y2hpbmdGb3JMb2FkKGJvb2wgYikgeyBtX3dhdGNoaW5nRm9yTG9hZCA9IGI7IH0KLQotICAgICAg
ICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldENh
Y2hlZFNjcmlwdChDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCk7Ci0KLSAgICAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKKyAgICAgICAgYm9vbCB3YXRj
aGluZ0ZvckxvYWQoKQogICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gd2F0Y2hpbmdGb3JM
b2FkU3RhdGUgIT0gTm90V2F0Y2hpbmdGb3JMb2FkOwogICAgICAgICB9CiAKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gY2FjaGVkU2NyaXB0OworICAgICAgICBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB3YXRj
aGluZ0ZvckxvYWRTdGF0ZTsKICAgICAgICAgaW50IHN0YXJ0aW5nTGluZU51bWJlcjsgLy8gT25s
eSB1c2VkIGZvciBpbmxpbmUgc2NyaXB0IHRhZ3MuCiAgICAgICAgIC8vIEhUTUw1IGhhcyBhbiBp
c1JlYWR5IHBhcmFtZXRlciwgaG93ZXZlciBpc1JlYWR5IGVuZHMgdXAgZXF1aXZhbGVudCB0bwog
ICAgICAgICAvLyBtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiBjYWNoZWRT
Y3JpcHQtPmlzTG9hZGVkKCkKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgbV93YXRjaGlu
Z0ZvckxvYWQ7IC8vIERpZCB3ZSBwYXNzIHRoZSBjYWNoZWRTY3JpcHQgdG8gdGhlIEhUTUw1U2Ny
aXB0UnVubmVySG9zdC4KLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBtX2NhY2hlZFNjcmlwdDsKICAgICB9OwogCiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmgKaW5kZXggYzc5NjhkODJlZDJhMzAzNzFmMDZl
NmU0NGNmMTRlYzRmMjQ0YjNlNy4uYjBlNWEwYmJhYWJmNTMzNjU0ZDBkZDAxMWM0ZmE1OTY3OWMw
YWViOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVySG9zdC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaApAQCAtMzgsNyArMzgsNyBA
QCBjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lckhvc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhU
TUw1U2NyaXB0UnVubmVySG9zdCgpIHsgfQogCi0gICAgLy8gSW1wbGVtZW50b3JzIHNob3VsZCBj
YWxsIGNhY2hlZFJlc291cmNlLT5hZGRDbGllbnQoKSBoZXJlIG9yIHNvb24gYWZ0ZXIuCisgICAg
Ly8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkgaW1t
ZWRpYXRlbHkuCiAgICAgdmlydHVhbCB2b2lkIHdhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSop
ID0gMDsKICAgICAvLyBJbXBsZW1lbnRvcnMgbXVzdCBjYWxsIGNhY2hlZFJlc291cmNlLT5yZW1v
dmVDbGllbnQoKSBpbW1lZGlhdGVseS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFdhdGNoaW5nRm9y
TG9hZChDYWNoZWRSZXNvdXJjZSopID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>