<?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>54313</bug_id>
          
          <creation_ts>2011-02-11 14:14:05 -0800</creation_ts>
          <short_desc>Need didReceiveCachedMetadata, and finishTime for didFinishLoading exposed in ThreadableLoaderClient.</short_desc>
          <delta_ts>2011-02-16 20:12:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>53925</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Bill Budge">bbudge</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>levin</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350018</commentid>
    <comment_count>0</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:14:05 -0800</bug_when>
    <thetext>Needs a public setDefersLoading(bool value) method to allow clients to implement WebURLLoader using this class.

Need a protected override to the inherited SubresourceLoaderClient::didReceiveCachedMetada method to allow derived classes to invoke the assertion logic when overriding.

Grouping these 2 changes into one issue to expedite the upcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350023</commentid>
    <comment_count>1</comment_count>
      <attachid>82174</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:16:27 -0800</bug_when>
    <thetext>Created attachment 82174
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350026</commentid>
    <comment_count>2</comment_count>
      <attachid>82174</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-11 14:18:39 -0800</bug_when>
    <thetext>Comment on attachment 82174
Proposed patch

Wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350030</commentid>
    <comment_count>3</comment_count>
      <attachid>82174</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:19:42 -0800</bug_when>
    <thetext>Comment on attachment 82174
Proposed patch

I need to fix the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350034</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-11 14:21:24 -0800</bug_when>
    <thetext>You may want to try using &quot;webkit-patch upload&quot; at some point (and consider setting the commit-queue flag to ? to indicate that you want your patch to be committed automatically).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350035</commentid>
    <comment_count>5</comment_count>
      <attachid>82178</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:23:00 -0800</bug_when>
    <thetext>Created attachment 82178
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350037</commentid>
    <comment_count>6</comment_count>
      <attachid>82178</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:27:49 -0800</bug_when>
    <thetext>Comment on attachment 82178
Proposed patch

This change also involves making the SubresourceLoaderClient callbacks protected, rather than private, and the addition of an isActive() method, which is needed to implement the static &apos;create&apos; method in derived classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350038</commentid>
    <comment_count>7</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:28:23 -0800</bug_when>
    <thetext>I definitely need to improve my workflow here David. Thanks for bearing with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350040</commentid>
    <comment_count>8</comment_count>
      <attachid>82178</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-11 14:33:32 -0800</bug_when>
    <thetext>Comment on attachment 82178
Proposed patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        (WebCore::DocumentThreadableLoader::didReceiveCachedMetadata):

A comment here would say:
  Make this method as protected instead of private.

I wonder why we just don&apos;t change the inheritance of SubresourceLoaderClient to be protected instead of private.

&gt; Source/WebCore/ChangeLog:16
&gt; +2011-02-11  Bill Budge  &lt;bbudge@chromium.org&gt;

This shouldn&apos;t be here.

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:58
&gt; +        virtual void setDefersLoading(bool value);

No need for &quot;value&quot; here. (It adds no information.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350052</commentid>
    <comment_count>9</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-11 14:43:05 -0800</bug_when>
    <thetext>I will try your idea of using protected inheritance. I won&apos;t be able to work on this until next Monday fyi. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351371</commentid>
    <comment_count>10</comment_count>
      <attachid>82479</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 10:02:05 -0800</bug_when>
    <thetext>Created attachment 82479
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351417</commentid>
    <comment_count>11</comment_count>
      <attachid>82479</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 11:10:58 -0800</bug_when>
    <thetext>Comment on attachment 82479
Proposed Patch

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

r- to remove unnecessary overload. (If it is needed, give some short explanation and I&apos;ll r+.)

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:240
&gt; +void DocumentThreadableLoader::didReceiveCachedMetadata(SubresourceLoader* loader, const char* data, int lengthReceived)

Ditto (with my comment below).

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:80
&gt; +        virtual void didReceiveCachedMetadata(SubresourceLoader*, const char*, int lengthReceived);

Do you need this overload? (I though it was only here because SubresourceLoaderClient was private but that is no longer true.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351482</commentid>
    <comment_count>12</comment_count>
      <attachid>82479</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 12:25:03 -0800</bug_when>
    <thetext>Comment on attachment 82479
Proposed Patch

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

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:240
&gt;&gt; +void DocumentThreadableLoader::didReceiveCachedMetadata(SubresourceLoader* loader, const char* data, int lengthReceived)
&gt; 
&gt; Ditto (with my comment below).

See my response, below.

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.h:80
&gt;&gt; +        virtual void didReceiveCachedMetadata(SubresourceLoader*, const char*, int lengthReceived);
&gt; 
&gt; Do you need this overload? (I though it was only here because SubresourceLoaderClient was private but that is no longer true.)

I added it so that we could include the assertion logic of the other methods, which verify that it&apos;s not called improperly. The method doesn&apos;t do anything, but can then be called by any derived classes. In case we ever want to put some logic into this method in DocumentThreadableLoader, we wouldn&apos;t have to go change all the derived classes. But I will defer to you on this; if you feel it&apos;s better to leave it unimplemented, I will remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351486</commentid>
    <comment_count>13</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 12:27:09 -0800</bug_when>
    <thetext>Another question: In didReceiveData, we check if it&apos;s a preflight request, why don&apos;t we do the same test for didReceiveCachedMetadata?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351487</commentid>
    <comment_count>14</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 12:28:01 -0800</bug_when>
    <thetext>Let me rephrase that: Do I need to worry about that before calling the client in a derived implementation of didReceiveCachedMetadata?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351500</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 12:50:30 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Let me rephrase that: Do I need to worry about that before calling the client in a derived implementation of didReceiveCachedMetadata?

Good point! I would.

When a request is done that is cross origin, it may trigger a preflight request which is a request to get info from the site to see if the cross origin request is allowed.

This preflight request is a basically protocol detail that shouldn&apos;t be exposed to the clients so it is nice to check to see if this is happening and not forward along the info to the client.


(In reply to comment #12)
&gt; (From update of attachment 82479 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82479&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.h:80
&gt; &gt;&gt; +        virtual void didReceiveCachedMetadata(SubresourceLoader*, const char*, int lengthReceived);
&gt; &gt; 
&gt; &gt; Do you need this overload? (I though it was only here because SubresourceLoaderClient was private but that is no longer true.)
&gt; 
&gt; I added it so that we could include the assertion logic of the other methods, which verify that it&apos;s not called improperly. 

Good point. Feel free to leave it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351562</commentid>
    <comment_count>16</comment_count>
      <attachid>82518</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 14:04:28 -0800</bug_when>
    <thetext>Created attachment 82518
Proposed Patch

I added a protected isPreflight() method, so derived classes can filter out events related to the preflight request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351573</commentid>
    <comment_count>17</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 14:31:27 -0800</bug_when>
    <thetext>Now I finally get to higher level questions (for which I&apos;m sorry... it took my mind a while to get there.)

Why are we doing derivation as opposed to just using the client interface (DocumentThreadableLoaderClient)?

I&apos;m concerned about the derivation being fragile (and the client interface seems to support everything you need -- well, you&apos;ll need to add in didReceiveCacheMetadata and expose the finishTime to one api, but that seems ok). Also this will hide the preflight request from your callbacks which seems desirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351583</commentid>
    <comment_count>18</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 14:36:56 -0800</bug_when>
    <thetext>So you raise an excellent point. If I could modify ThreadableLoaderClient, I could probably do without all of the API changes to DocumentThreadableLoader. I&apos;ve been operating on the assumption that we shouldn&apos;t change interfaces, but if this isn&apos;t the case, modifying ThreadableLoaderClient is the way to go. Can I?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351594</commentid>
    <comment_count>19</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 14:42:56 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; So you raise an excellent point. If I could modify ThreadableLoaderClient, I could probably do without all of the API changes to DocumentThreadableLoader. I&apos;ve been operating on the assumption that we shouldn&apos;t change interfaces, but if this isn&apos;t the case, modifying ThreadableLoaderClient is the way to go. Can I?

Yes, sorry for not mentioning/noticing this sooner.  These interfaces are only used within WebKit (not some external api) so they aren&apos;t set in stone. It just happens that there is more than one implementation.


Just make sure to fix up those implementations: http://www.google.com/codesearch?as_q=ThreadableLoaderClient&amp;btnG=Search+Code&amp;hl=en&amp;vert=chromium&amp;filesuggest=&amp;as_lang=&amp;as_filename=&amp;as_class=&amp;as_function=&amp;as_case=</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351596</commentid>
    <comment_count>20</comment_count>
      <attachid>82518</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 14:43:20 -0800</bug_when>
    <thetext>Comment on attachment 82518
Proposed Patch

r- per discussion in bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351671</commentid>
    <comment_count>21</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 15:46:19 -0800</bug_when>
    <thetext>I will be adding didReceiveCachedMetadata and didDownloadData methods, and modify the signature of didFinishLoading. I&apos;m unclear about how clients want to handle didReceiveCachedMetadata - for example EventSource has the following code:


    append(m_receiveBuf, m_decoder-&gt;decode(data, length));
    parseEventStream();

What should happen in the didReceiveCachedMetadata method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351678</commentid>
    <comment_count>22</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 15:52:43 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; I will be adding didReceiveCachedMetadata and didDownloadData methods, and modify the signature of didFinishLoading. I&apos;m unclear about how clients want to handle didReceiveCachedMetadata - for example EventSource has the following code:
&gt; 
&gt; 
&gt;     append(m_receiveBuf, m_decoder-&gt;decode(data, length));
&gt;     parseEventStream();
&gt; 
&gt; What should happen in the didReceiveCachedMetadata method?

Why should they implement it at all?  (Just modify the appropriate signatures but don&apos;t add the new method. They don&apos;t care about this information now so let them continue not to care about it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351702</commentid>
    <comment_count>23</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 16:11:11 -0800</bug_when>
    <thetext>That makes sense. How about didDownloadData? Couldn&apos;t this be implemented at the top level, by AssociatedURLLoader, which could check for this case on didFinishLoading?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351712</commentid>
    <comment_count>24</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 16:26:20 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; That makes sense. How about didDownloadData? Couldn&apos;t this be implemented at the top level, by AssociatedURLLoader, which could check for this case on didFinishLoading?

I see that method here:
http://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/Source/WebKit/chromium/public/WebURLLoaderClient.h&amp;q=WebURLLoaderClient&amp;exact_package=chromium

but I didn&apos;t understand when that method is called. (I suspect that you can get all the information you need from ThreadableLoaderClient to call this at the right time but since I don&apos;t know the contract for the method, it is only a guess.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351760</commentid>
    <comment_count>25</comment_count>
      <attachid>82553</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 17:30:24 -0800</bug_when>
    <thetext>Created attachment 82553
Proposed Patch

Changed the name of the bug to reflect the fact that ThreadableLoaderClient is being changed.

The patch also adds setDefersLoading(bool value) to DocumentThreadableLoader. That could be a separate patch, but doesn&apos;t simplify things much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351773</commentid>
    <comment_count>26</comment_count>
      <attachid>82553</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 17:44:49 -0800</bug_when>
    <thetext>Comment on attachment 82553
Proposed Patch

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

Just a few things to clean up.

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:243
&gt; +    ASSERT_UNUSED(loader, loader == m_loader);

I think this is missing the following:

if (!m_actualRequest)
    m_client-&gt;didReceiveCachedMetadata(data, lengthReceived)

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:49
&gt; +    class DocumentThreadableLoader : public RefCounted&lt;DocumentThreadableLoader&gt;, public ThreadableLoader, protected SubresourceLoaderClient  {

&quot;protected SubresourceLoaderClient&quot; should be &quot;private SubresourceLoaderClient&quot; again.

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:57
&gt; +        virtual void setDefersLoading(bool);

I suspect that you&apos;ll need to make this method public.

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:78
&gt; +        virtual void didDownloadData(SubresourceLoader*, int dataLength);

This isn&apos;t implemented in DocumentThreadableLoader.cpp (and I doubt that it should be here).

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:990
&gt; +void XMLHttpRequest::didFinishLoading(unsigned long identifier, double finishTime)

This will likely result in a compile error since &quot;finishTime&quot; isn&apos;t used in this function (just omit the parameter name).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351777</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-15 17:47:32 -0800</bug_when>
    <thetext>Attachment 82553 did not build on chromium:
Build output: http://queues.webkit.org/results/7911997</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351794</commentid>
    <comment_count>28</comment_count>
      <attachid>82553</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 18:07:48 -0800</bug_when>
    <thetext>Comment on attachment 82553
Proposed Patch

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

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:243
&gt;&gt; +    ASSERT_UNUSED(loader, loader == m_loader);
&gt; 
&gt; I think this is missing the following:
&gt; 
&gt; if (!m_actualRequest)
&gt;     m_client-&gt;didReceiveCachedMetadata(data, lengthReceived)

Good catch!

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.h:49
&gt;&gt; +    class DocumentThreadableLoader : public RefCounted&lt;DocumentThreadableLoader&gt;, public ThreadableLoader, protected SubresourceLoaderClient  {
&gt; 
&gt; &quot;protected SubresourceLoaderClient&quot; should be &quot;private SubresourceLoaderClient&quot; again.

Done.

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.h:57
&gt;&gt; +        virtual void setDefersLoading(bool);
&gt; 
&gt; I suspect that you&apos;ll need to make this method public.

It is.

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.h:78
&gt;&gt; +        virtual void didDownloadData(SubresourceLoader*, int dataLength);
&gt; 
&gt; This isn&apos;t implemented in DocumentThreadableLoader.cpp (and I doubt that it should be here).

Right, and it breaks the build on Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351796</commentid>
    <comment_count>29</comment_count>
      <attachid>82567</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 18:08:43 -0800</bug_when>
    <thetext>Created attachment 82567
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351797</commentid>
    <comment_count>30</comment_count>
      <attachid>82568</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 18:09:30 -0800</bug_when>
    <thetext>Created attachment 82568
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351802</commentid>
    <comment_count>31</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-15 18:16:07 -0800</bug_when>
    <thetext>Attachment 82553 did not build on win:
Build output: http://queues.webkit.org/results/7926004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351804</commentid>
    <comment_count>32</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-15 18:20:50 -0800</bug_when>
    <thetext>Attachment 82553 did not build on qt:
Build output: http://queues.webkit.org/results/7917132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351818</commentid>
    <comment_count>33</comment_count>
      <attachid>82568</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-15 19:11:57 -0800</bug_when>
    <thetext>Comment on attachment 82568
Proposed Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:990
&gt; +void XMLHttpRequest::didFinishLoading(unsigned long identifier, double finishTime)

This will likely result in a compile error since &quot;finishTime&quot; isn&apos;t used in this function (just omit the parameter name).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351858</commentid>
    <comment_count>34</comment_count>
      <attachid>82568</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 20:51:58 -0800</bug_when>
    <thetext>Comment on attachment 82568
Proposed Patch

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

&gt;&gt; Source/WebCore/xml/XMLHttpRequest.cpp:990
&gt;&gt; +void XMLHttpRequest::didFinishLoading(unsigned long identifier, double finishTime)
&gt; 
&gt; This will likely result in a compile error since &quot;finishTime&quot; isn&apos;t used in this function (just omit the parameter name).

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351859</commentid>
    <comment_count>35</comment_count>
      <attachid>82584</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-15 20:52:27 -0800</bug_when>
    <thetext>Created attachment 82584
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351908</commentid>
    <comment_count>36</comment_count>
      <attachid>82584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-15 23:50:01 -0800</bug_when>
    <thetext>Comment on attachment 82584
Proposed Patch

Rejecting attachment 82584 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;build-...&quot; exit_code: 2

Last 500 characters of output:
 .................................................
fast/text/whitespace ..........................................
fast/tokenizer ........................................
fast/transforms .........................
fast/url ....................
fast/workers .
fast/workers/dedicated-worker-lifecycle.html -&gt; failed

Exiting early after 1 failures. 11091 tests run.
302.89s total testing time

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

Full output: http://queues.webkit.org/results/7917231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352051</commentid>
    <comment_count>37</comment_count>
      <attachid>82584</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-16 07:21:27 -0800</bug_when>
    <thetext>Comment on attachment 82584
Proposed Patch

Looks like this breaks a layout test. (If you need to run that test in chromium, it is in ui_tests.)

Please consider changing the ChangeLog &quot;ThreadableLoaderClient doesn&apos;t support WebURLLoader usage&quot; to what I made the bug title.

Of course, your formulation is the answer to &quot;Why?&quot; which is nice but I think &quot;What?&quot; would be better for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352056</commentid>
    <comment_count>38</comment_count>
      <attachid>82633</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-16 07:31:20 -0800</bug_when>
    <thetext>Created attachment 82633
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352063</commentid>
    <comment_count>39</comment_count>
      <attachid>82633</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-16 07:43:48 -0800</bug_when>
    <thetext>Comment on attachment 82633
Proposed Patch

The important thing is that it &quot;looks like this breaks a layout test.&quot; Since this lastest patch has no difference from the last patch (except the ChangeLog), that issue could not have been addressed.

(The ChangeLog comment was just an aside.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352080</commentid>
    <comment_count>40</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-16 08:12:48 -0800</bug_when>
    <thetext>I was hoping it was a flaky test. I&apos;ll check it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352085</commentid>
    <comment_count>41</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-16 08:19:22 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; I was hoping it was a flaky test. I&apos;ll check it out.

The commit queue is pretty good about noting that a test was flaky. I think it only does this if the test fails twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352467</commentid>
    <comment_count>42</comment_count>
      <attachid>82724</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-16 17:01:57 -0800</bug_when>
    <thetext>Created attachment 82724
Proposed Patch

There were 2 pages to your code search. I missed WorkerScriptLoader, which implements ThreadableLoaderClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352481</commentid>
    <comment_count>43</comment_count>
      <attachid>82724</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-16 17:13:05 -0800</bug_when>
    <thetext>Comment on attachment 82724
Proposed Patch

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

&gt; Source/WebCore/workers/WorkerScriptLoader.cpp:137
&gt; +void WorkerScriptLoader::didFinishLoading(unsigned long identifier, double finishTime)

omit &quot;finishTime&quot; since it isn&apos;t used. (As is, this will fail the compile stage on OSX.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352486</commentid>
    <comment_count>44</comment_count>
      <attachid>82728</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-02-16 17:22:34 -0800</bug_when>
    <thetext>Created attachment 82728
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352562</commentid>
    <comment_count>45</comment_count>
      <attachid>82728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-16 20:11:53 -0800</bug_when>
    <thetext>Comment on attachment 82728
Proposed Patch

Clearing flags on attachment: 82728

Committed r78782: &lt;http://trac.webkit.org/changeset/78782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352563</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-16 20:12:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82174</attachid>
            <date>2011-02-11 14:16:27 -0800</date>
            <delta_ts>2011-02-11 14:19:42 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>2365</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MzM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDItMTEgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN1YnJlc291cmNlTG9hZGVyIHNob3VsZCBleHBvc2UgZmluaXNo
IHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
Mjg3CisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkLCBleHBvc2VzIHRyaXZpYWwgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisKIDIwMTEtMDItMTAgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBT
ZW1pa2hhdHNreS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gNzgzMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyBX
VEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBzdWJyZXMKIFN1YnJlc291cmNlTG9hZGVyOjpTdWJy
ZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cywgc2hvdWxkQ29udGVudFNuaWZmKQogICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9m
aW5pc2hUaW1lKDAuMCkKICAgICAsIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFsc2UpCiB7
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTc3LDYgKzE3OCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcKICAgICAvLyBDYWxsaW5nIHJlbW92ZVN1YnJlc291cmNlTG9h
ZGVyIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwgdG8gZGVyZWYsIHNvIHdlIG11c3QgcHJv
dGVjdCBvdXJzZWx2ZXMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRo
aXMpOwogCisgICAgbV9maW5pc2hUaW1lID0gZmluaXNoVGltZTsKICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKHRoaXMpOwogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDc4MzM4
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZv
aWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQogCisgICAgICAgIGRvdWJsZSBmaW5p
c2hUaW1lKCkgeyByZXR1cm4gbV9maW5pc2hUaW1lOyB9CisKICAgICBwcml2YXRlOgogICAgICAg
ICBTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAg
ICAgICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyKCk7CkBAIC02MCw2ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKICAgICAgICAgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIG1fY2xp
ZW50OworICAgICAgICBkb3VibGUgbV9maW5pc2hUaW1lOwogICAgICAgICBib29sIG1fbG9hZGlu
Z011bHRpcGFydENvbnRlbnQ7CiAgICAgfTsKIA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82178</attachid>
            <date>2011-02-11 14:23:00 -0800</date>
            <delta_ts>2011-02-15 10:02:05 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>3843</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MzQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDItMTEgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCAyIG1ldGhvZHMgdG8gRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyIHRvIHN1cHBvcnQgY2xpZW50cyBpbXBsZW1lbnRpbmcgV2ViVVJMTG9hZGVyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTMKKworICAgICAg
ICBObyB0ZXN0cyBuZWVkZWQsIGV4cG9zZXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRh
ZGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc0FjdGl2ZSk6CisKKzIw
MTEtMDItMTEgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1YnJlc291cmNlTG9hZGVyIHNo
b3VsZCBleHBvc2UgZmluaXNoIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0Mjg3CisKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorCiAyMDExLTAy
LTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gNzgzMzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y2FuY2VsKCkKICAgICBtX2NsaWVudCA9IDA7CiB9CiAKK3ZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1f
bG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+c2V0RGVmZXJzTG9hZGluZyh2YWx1ZSk7Cit9CisK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMjMxLDYgKzIzNywxMiBA
QCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKIH0KIAordm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7Cisg
ICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09
IG1fbG9hZGVyKTsKK30KKwogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKICAgICBBU1NFUlQobG9hZGVy
ID09IG1fbG9hZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDc4MzM4KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2
ICs1NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsKCk7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCB2YWx1
ZSk7CisKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+
OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Pjo6ZGVyZWY7CiAKQEAgLTYyLDcgKzY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVmVGhyZWFkYWJsZUxvYWRlcigpIHsgcmVmKCk7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZUxvYWRlcigpIHsgZGVyZWYoKTsgfQogCi0gICAg
cHJpdmF0ZToKICAgICAgICAgZW51bSBCbG9ja2luZ0JlaGF2aW9yIHsKICAgICAgICAgICAgIExv
YWRTeW5jaHJvbm91c2x5LAogICAgICAgICAgICAgTG9hZEFzeW5jaHJvbm91c2x5CkBAIC03NSw5
ICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9h
ZGVyKiwgY29uc3QgY2hhciosIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKKyAgICAgICAg
Ym9vbCBpc0FjdGl2ZSgpIHsgcmV0dXJuIG1fbG9hZGVyOyB9CisKKyAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3Vy
Y2VMb2FkZXIqLCBib29sJiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpOyAK
</data>
<flag name="review"
          id="73823"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82479</attachid>
            <date>2011-02-15 10:02:05 -0800</date>
            <delta_ts>2011-02-15 14:04:28 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>4741</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTc5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBkb2Vzbid0IHN1cHBv
cnQgV2ViVVJMTG9hZGVyIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDMxMworCisgICAgICAgIE5vIHRlc3RzIG5lZWRlZCwgZXhwb3NlcyBu
byBuZXcgZnVuY3Rpb25hbGl0eQorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6aXNMb2FkaW5nKToKKwogMjAxMS0wMi0xNSAgTGVvIFlhbmcgIDxsZW8ueWFu
Z0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAkocmV2aXNpb24gNzg1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niwx
MiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAgICBtX2NsaWVu
dCA9IDA7CiB9CiAKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpzZXREZWZlcnNMb2Fk
aW5nKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+
c2V0RGVmZXJzTG9hZGluZyh2YWx1ZSk7Cit9CisKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICBBU1NFUlQo
bV9jbGllbnQpOwpAQCAtMjMxLDYgKzIzNywxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0
aFJlY2VpdmVkKTsKIH0KIAordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2Vp
dmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBB
U1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVyKTsKK30KKwogdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgZG91YmxlKQogewogICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2FkZXIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aAkocmV2aXNpb24gNzg1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50OwogCi0gICAgY2xhc3MgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiwgcHVibGljIFRocmVh
ZGFibGVMb2FkZXIsIHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgIHsKKyAgICBjbGFz
cyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlciwgcHJvdGVjdGVkIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShEb2N1bWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwpAQCAtNTQsNiArNTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICAgICAgdXNpbmcgUmVmQ291bnRl
ZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50
ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPjo6ZGVyZWY7CkBAIC02Miw3ICs2Myw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFibGVMb2Fk
ZXIoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlRocmVhZGFibGVMb2Fk
ZXIoKSB7IGRlcmVmKCk7IH0KIAotICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gQmxvY2tpbmdC
ZWhhdmlvciB7CiAgICAgICAgICAgICBMb2FkU3luY2hyb25vdXNseSwKICAgICAgICAgICAgIExv
YWRBc3luY2hyb25vdXNseQpAQCAtNzAsMTEgKzcwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQqLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiwgQmxvY2tpbmdCZWhhdmlvciBibG9ja2luZ0JlaGF2aW9yLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucyk7
CiAKKyAgICAgICAgYm9vbCBpc0xvYWRpbmcoKSB7IHJldHVybiBtX2xvYWRlcjsgfQorCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVk
TWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGxlbmd0aFJlY2Vp
dmVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VM
b2FkZXIqLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtODIsNiArODUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU3Vi
cmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCisgICAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CiAgICAgICAgIHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIG1ha2VDcm9z
c09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCk7Cg==
</data>
<flag name="review"
          id="74157"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82518</attachid>
            <date>2011-02-15 14:04:28 -0800</date>
            <delta_ts>2011-02-15 17:30:48 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>4854</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjExKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBkb2Vzbid0IHN1cHBv
cnQgV2ViVVJMTG9hZGVyIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDMxMworCisgICAgICAgIE5vIHRlc3RzIG5lZWRlZCwgZXhwb3NlcyBu
byBuZXcgZnVuY3Rpb25hbGl0eQorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6aXNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6aXNQcmVmbGlnaHQpOgorCiAyMDExLTAyLTE1ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAkocmV2aXNpb24gNzg1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niwx
MiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAgICBtX2NsaWVu
dCA9IDA7CiB9CiAKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpzZXREZWZlcnNMb2Fk
aW5nKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+
c2V0RGVmZXJzTG9hZGluZyh2YWx1ZSk7Cit9CisKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICBBU1NFUlQo
bV9jbGllbnQpOwpAQCAtMjMxLDYgKzIzNywxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0
aFJlY2VpdmVkKTsKIH0KIAordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2Vp
dmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBB
U1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVyKTsKK30KKwogdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgZG91YmxlKQogewogICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2FkZXIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aAkocmV2aXNpb24gNzg1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50OwogCi0gICAgY2xhc3MgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiwgcHVibGljIFRocmVh
ZGFibGVMb2FkZXIsIHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgIHsKKyAgICBjbGFz
cyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlciwgcHJvdGVjdGVkIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShEb2N1bWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwpAQCAtNTQsNiArNTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICAgICAgdXNpbmcgUmVmQ291bnRl
ZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50
ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPjo6ZGVyZWY7CkBAIC02Miw3ICs2Myw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFibGVMb2Fk
ZXIoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlRocmVhZGFibGVMb2Fk
ZXIoKSB7IGRlcmVmKCk7IH0KIAotICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gQmxvY2tpbmdC
ZWhhdmlvciB7CiAgICAgICAgICAgICBMb2FkU3luY2hyb25vdXNseSwKICAgICAgICAgICAgIExv
YWRBc3luY2hyb25vdXNseQpAQCAtNzAsMTEgKzcwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQqLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiwgQmxvY2tpbmdCZWhhdmlvciBibG9ja2luZ0JlaGF2aW9yLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucyk7
CiAKKyAgICAgICAgYm9vbCBpc0xvYWRpbmcoKSB7IHJldHVybiBtX2xvYWRlcjsgfQorICAgICAg
ICBib29sIGlzUHJlZmxpZ2h0KCkgeyByZXR1cm4gbV9hY3R1YWxSZXF1ZXN0OyB9CisKICAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50
IGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRN
ZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2
ZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxv
YWRlciosIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC04Miw2ICs4Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKKyAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKICAgICAgICAgdm9pZCBtYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQgbWFrZUNyb3Nz
T3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KTsK
</data>
<flag name="review"
          id="74192"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82553</attachid>
            <date>2011-02-15 17:30:24 -0800</date>
            <delta_ts>2011-02-15 18:09:30 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>17745</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnQgZG9lc24ndCBzdXBwb3J0
IFdlYlVSTExvYWRlciB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQzMTMKKworICAgICAgICBObyB0ZXN0cyBuZWVkZWQsIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IGV4cG9zZWQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6
OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29u
dGV4dERpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTEtMDItMTAgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TmF0ZSBDaGFwaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY28KICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCk7CiB9CiAKLXZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBjbGVhbnVwKCk7CiAgICAgaWYgKG1f
Y2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgJ
KHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDEyIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogICAgIG1fY2xpZW50ID0gMDsK
IH0KIAordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCB2YWx1ZSkKK3sKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5zZXREZWZl
cnNMb2FkaW5nKHZhbHVlKTsKK30KKwogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CkBAIC0yMzEsMjEgKzIzNywyNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2Vp
dmVkKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9h
ZGVyKTsKK30KKwordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAg
QVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBk
aWRGaW5pc2hMb2FkaW5nKGxvYWRlci0+aWRlbnRpZmllcigpKTsKKyAgICBkaWRGaW5pc2hMb2Fk
aW5nKGxvYWRlci0+aWRlbnRpZmllcigpLCBmaW5pc2hUaW1lKTsKIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICAgICBpZiAobV9h
Y3R1YWxSZXF1ZXN0KSB7CiAgICAgICAgIEFTU0VSVCghbV9zYW1lT3JpZ2luUmVxdWVzdCk7CiAg
ICAgICAgIEFTU0VSVChtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IFVzZUFj
Y2Vzc0NvbnRyb2wpOwogICAgICAgICBwcmVmbGlnaHRTdWNjZXNzKCk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgICAgICBt
X2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIH0KIAog
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zNTksNyArMzcxLDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogICAgIGludCBsZW4gPSBz
dGF0aWNfY2FzdDxpbnQ+KGRhdGEuc2l6ZSgpKTsKICAgICBkaWRSZWNlaXZlRGF0YSgwLCBieXRl
cywgbGVuKTsKIAotICAgIGRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CisgICAgZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyLCAwLjApOwogfQogCiBib29sIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkocmV2aXNp
b24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50OwogCi0gICAgY2xhc3MgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVMb2Fk
ZXIsIHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgIHsKKyAgICBjbGFzcyBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlciwgcHJvdGVjdGVkIFN1YnJlc291cmNlTG9h
ZGVyQ2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1bWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwpAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNl
dERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyPjo6ZGVyZWY7CkBAIC03NCw3ICs3NSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZERvd25sb2FkRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGludCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291
cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBjaGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqLCBkb3VibGUpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIApAQCAtODIsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwogCi0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpOworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZvaWQg
bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRo
UHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQg
cHJlZmxpZ2h0U3VjY2VzcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDgg
KzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypsZW5ndGhSZWNlaXZl
ZCovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyAvKmlkZW50aWZpZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxl
bmd0aCovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgZG91YmxlIC8qZmluaXNoVGltZSovKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSB7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
LmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE3ICs2OCwyMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCkKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgICAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1fZG9uZSA9IHRydWU7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGlt
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDE1ICsx
OTgsMjggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQgogICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNr
VGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIs
IHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tNb2RlKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2Vy
Q29udGV4dERpZEZpbmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlk
UmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwg
UGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3JEYXRhKQogewogICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNsaWVu
dFdyYXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CisgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKHZlY3RvckRhdGEtPmRhdGEoKSwgdmVj
dG9yRGF0YS0+c2l6ZSgpKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikK
K3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2
ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCkKIHsK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nLCBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIGlkZW50aWZpZXIpLCBtX3Rhc2tNb2RlKTsKKyAgICBPd25QdHI8VmVjdG9yPGNo
YXI+ID4gdmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihsZW5ndGhSZWNlaXZlZCkp
OyAvLyBuZWVkcyB0byBiZSBhbiBPd25QdHIgZm9yIHVzYWdlIHdpdGggY3JlYXRlQ2FsbGJhY2tU
YXNrLgorICAgIG1lbWNweSh2ZWN0b3ItPmRhdGEoKSwgZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSwgbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCB2ZWN0b3IucmVsZWFzZSgpKSwgbV90YXNrTW9kZSk7Cit9CisKK3N0
YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29y
a2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNo
VGltZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29u
dGV4dCgpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50
aWZpZXIsIGZpbmlzaFRpbWUpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBkb3VibGUgZmluaXNoVGltZSkKK3sKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRGaW5p
c2hMb2FkaW5nLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWUp
LCBtX3Rhc2tNb2RlKTsKIH0KIAogc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZEZhaWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgbGVu
Z3RoUmVjZWl2ZWQpOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRE
b3dubG9hZERhdGEoaW50IGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0
YUxlbmd0aCk7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZv
aWQgTm90aWZpY2F0aW9uOjpkaWRSZWNlaXZlRGF0YShjb25zdCAKICAgICBtX2ljb25EYXRhLT5h
cHBlbmQoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOwogfQogCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBOb3RpZmljYXRpb246OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKQogewogICAgIGZpbmlzaExvYWRpbmcoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAko
cmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3Vi
bGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRp
b24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEV2ZW50U291
cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjCiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQog
Ci12b2lkIEV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCit2b2lk
IEV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsK
ICAgICBpZiAobV9yZWNlaXZlQnVmLnNpemUoKSA+IDAgfHwgbV9kYXRhLnNpemUoKSA+IDApIHsK
ICAgICAgICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZiwgIlxuXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkRmFpbFJlZGlyZWN0Q2hlYwogICAgIG5ldHdvcmtFcnJvcigpOwogfQogCi12
b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICAgICBpZiAobV9lcnJvcikKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlz
aW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsK
</data>
<flag name="review"
          id="74228"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82567</attachid>
            <date>2011-02-15 18:08:43 -0800</date>
            <delta_ts>2011-02-15 18:09:30 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>17056</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnQgZG9lc24ndCBzdXBwb3J0
IFdlYlVSTExvYWRlciB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQzMTMKKworICAgICAgICBObyB0ZXN0cyBuZWVkZWQsIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IGV4cG9zZWQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6
OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29u
dGV4dERpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTEtMDItMTAgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TmF0ZSBDaGFwaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY28KICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCk7CiB9CiAKLXZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBjbGVhbnVwKCk7CiAgICAgaWYgKG1f
Y2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgJ
KHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDEyIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogICAgIG1fY2xpZW50ID0gMDsK
IH0KIAordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCB2YWx1ZSkKK3sKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5zZXREZWZl
cnNMb2FkaW5nKHZhbHVlKTsKK30KKwogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CkBAIC0yMzEsMjEgKzIzNywzMSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2Vp
dmVkKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9h
ZGVyKTsKKworICAgIC8vIElnbm9yZSByZXNwb25zZSBib2R5IG9mIHByZWZsaWdodCByZXF1ZXN0
cy4KKyAgICBpZiAoIW1fYWN0dWFsUmVxdWVzdCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVDYWNoZWRNZXRhZGF0YShkYXRhLCBsZW5ndGhSZWNlaXZlZCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2Fk
ZXIpOwogICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgZGlkRmluaXNoTG9hZGluZyhsb2FkZXIt
PmlkZW50aWZpZXIoKSk7CisgICAgZGlkRmluaXNoTG9hZGluZyhsb2FkZXItPmlkZW50aWZpZXIo
KSwgZmluaXNoVGltZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkgewogICAgICAg
ICBBU1NFUlQoIW1fc2FtZU9yaWdpblJlcXVlc3QpOwogICAgICAgICBBU1NFUlQobV9vcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKTsKICAgICAgICAg
cHJlZmxpZ2h0U3VjY2VzcygpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQpAQCAtMzU5LDcgKzM3NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWUKICAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihkYXRhLnNp
emUoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGEoMCwgYnl0ZXMsIGxlbik7CiAKLSAgICBkaWRGaW5p
c2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgIGRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwg
MC4wKTsKIH0KIAogYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmlzQWxsb3dlZFJlZGly
ZWN0KGNvbnN0IEtVUkwmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogICAgICAg
ICB1c2luZyBSZWZDb3VudGVkPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj46OnJlZjsKICAgICAg
ICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpkZXJlZjsKQEAg
LTc1LDYgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgY2hhciosIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTgyLDcgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKIAotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1h
a2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KTsKICAgICAgICAgdm9pZCBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFBy
ZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIHBy
ZWZsaWdodFN1Y2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcg
Lyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQq
LykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgLyppZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5n
dGgqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgLyppZGVudGlmaWVyKi8sIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5o
CShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNyArNjgsMjMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxNSArMTk4
LDI4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEIKICAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB2
ZWN0b3IucmVsZWFzZSgpKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNv
bnRleHREaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFJl
Y2VpdmVDYWNoZWRNZXRhZGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBh
c3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gdmVjdG9yRGF0YSkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3Rv
ckRhdGEtPnNpemUoKSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZywgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBpZGVudGlmaWVyKSwgbV90YXNrTW9kZSk7CisgICAgT3duUHRyPFZlY3RvcjxjaGFy
PiA+IHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4obGVuZ3RoUmVjZWl2ZWQpKTsg
Ly8gbmVlZHMgdG8gYmUgYW4gT3duUHRyIGZvciB1c2FnZSB3aXRoIGNyZWF0ZUNhbGxiYWNrVGFz
ay4KKyAgICBtZW1jcHkodmVjdG9yLT5kYXRhKCksIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgdmVjdG9yLnJlbGVhc2UoKSksIG1fdGFza01vZGUpOworfQorCitzdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRp
bWUpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRl
eHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCit7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNo
TG9hZGluZywgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKSwg
bV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRGYWlsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3Ro
UmVjZWl2ZWQpOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5n
dGgpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgCiAgICAgbV9pY29uRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb246OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBmaW5pc2hMb2FkaW5nKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlz
aW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgYwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIAotdm9p
ZCBFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAg
aWYgKG1fcmVjZWl2ZUJ1Zi5zaXplKCkgPiAwIHx8IG1fZGF0YS5zaXplKCkgPiAwKSB7CiAgICAg
ICAgIGFwcGVuZChtX3JlY2VpdmVCdWYsICJcblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
UmVkaXJlY3RDaGVjaygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZEZhaWxSZWRpcmVjdENoZWMKICAgICBuZXR3b3JrRXJyb3IoKTsKIH0KIAotdm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiA3
ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBm
aW5pc2hUaW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82568</attachid>
            <date>2011-02-15 18:09:30 -0800</date>
            <delta_ts>2011-02-15 20:52:27 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>17056</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnQgZG9lc24ndCBzdXBwb3J0
IFdlYlVSTExvYWRlciB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQzMTMKKworICAgICAgICBObyB0ZXN0cyBuZWVkZWQsIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IGV4cG9zZWQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6
OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29u
dGV4dERpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTEtMDItMTAgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TmF0ZSBDaGFwaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY28KICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCk7CiB9CiAKLXZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBjbGVhbnVwKCk7CiAgICAgaWYgKG1f
Y2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgJ
KHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDEyIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogICAgIG1fY2xpZW50ID0gMDsK
IH0KIAordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCB2YWx1ZSkKK3sKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5zZXREZWZl
cnNMb2FkaW5nKHZhbHVlKTsKK30KKwogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CkBAIC0yMzEsMjEgKzIzNywzMSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2Vp
dmVkKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9h
ZGVyKTsKKworICAgIC8vIElnbm9yZSByZXNwb25zZSBib2R5IG9mIHByZWZsaWdodCByZXF1ZXN0
cy4KKyAgICBpZiAoIW1fYWN0dWFsUmVxdWVzdCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVDYWNoZWRNZXRhZGF0YShkYXRhLCBsZW5ndGhSZWNlaXZlZCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2Fk
ZXIpOwogICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgZGlkRmluaXNoTG9hZGluZyhsb2FkZXIt
PmlkZW50aWZpZXIoKSk7CisgICAgZGlkRmluaXNoTG9hZGluZyhsb2FkZXItPmlkZW50aWZpZXIo
KSwgZmluaXNoVGltZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkgewogICAgICAg
ICBBU1NFUlQoIW1fc2FtZU9yaWdpblJlcXVlc3QpOwogICAgICAgICBBU1NFUlQobV9vcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKTsKICAgICAgICAg
cHJlZmxpZ2h0U3VjY2VzcygpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQpAQCAtMzU5LDcgKzM3NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWUKICAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihkYXRhLnNp
emUoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGEoMCwgYnl0ZXMsIGxlbik7CiAKLSAgICBkaWRGaW5p
c2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgIGRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwg
MC4wKTsKIH0KIAogYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmlzQWxsb3dlZFJlZGly
ZWN0KGNvbnN0IEtVUkwmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogICAgICAg
ICB1c2luZyBSZWZDb3VudGVkPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj46OnJlZjsKICAgICAg
ICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpkZXJlZjsKQEAg
LTc1LDYgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgY2hhciosIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTgyLDcgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKIAotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1h
a2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KTsKICAgICAgICAgdm9pZCBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFBy
ZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIHBy
ZWZsaWdodFN1Y2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcg
Lyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQq
LykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgLyppZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5n
dGgqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgLyppZGVudGlmaWVyKi8sIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5o
CShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNyArNjgsMjMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxNSArMTk4
LDI4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEIKICAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB2
ZWN0b3IucmVsZWFzZSgpKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNv
bnRleHREaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFJl
Y2VpdmVDYWNoZWRNZXRhZGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBh
c3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gdmVjdG9yRGF0YSkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3Rv
ckRhdGEtPnNpemUoKSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZywgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBpZGVudGlmaWVyKSwgbV90YXNrTW9kZSk7CisgICAgT3duUHRyPFZlY3RvcjxjaGFy
PiA+IHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4obGVuZ3RoUmVjZWl2ZWQpKTsg
Ly8gbmVlZHMgdG8gYmUgYW4gT3duUHRyIGZvciB1c2FnZSB3aXRoIGNyZWF0ZUNhbGxiYWNrVGFz
ay4KKyAgICBtZW1jcHkodmVjdG9yLT5kYXRhKCksIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgdmVjdG9yLnJlbGVhc2UoKSksIG1fdGFza01vZGUpOworfQorCitzdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRp
bWUpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRl
eHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCit7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNo
TG9hZGluZywgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKSwg
bV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRGYWlsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3Ro
UmVjZWl2ZWQpOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5n
dGgpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgCiAgICAgbV9pY29uRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb246OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBmaW5pc2hMb2FkaW5nKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlz
aW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgYwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIAotdm9p
ZCBFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAg
aWYgKG1fcmVjZWl2ZUJ1Zi5zaXplKCkgPiAwIHx8IG1fZGF0YS5zaXplKCkgPiAwKSB7CiAgICAg
ICAgIGFwcGVuZChtX3JlY2VpdmVCdWYsICJcblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
UmVkaXJlY3RDaGVjaygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZEZhaWxSZWRpcmVjdENoZWMKICAgICBuZXR3b3JrRXJyb3IoKTsKIH0KIAotdm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiA3
ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBm
aW5pc2hUaW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Cg==
</data>
<flag name="review"
          id="74242"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82584</attachid>
            <date>2011-02-15 20:52:27 -0800</date>
            <delta_ts>2011-02-16 07:31:20 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>17330</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnQgZG9lc24ndCBzdXBwb3J0
IFdlYlVSTExvYWRlciB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQzMTMKKworICAgICAgICBObyB0ZXN0cyBuZWVkZWQsIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IGV4cG9zZWQKKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6
OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29u
dGV4dERpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaDoKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTEtMDItMTAgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TmF0ZSBDaGFwaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY28KICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCk7CiB9CiAKLXZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBjbGVhbnVwKCk7CiAgICAgaWYgKG1f
Y2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgJ
KHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDEyIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogICAgIG1fY2xpZW50ID0gMDsK
IH0KIAordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCB2YWx1ZSkKK3sKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5zZXREZWZl
cnNMb2FkaW5nKHZhbHVlKTsKK30KKwogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIEFTU0VSVChtX2NsaWVu
dCk7CkBAIC0yMzEsMjEgKzIzNywzMSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2Vp
dmVkKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgZG91YmxlKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9h
ZGVyKTsKKworICAgIC8vIElnbm9yZSByZXNwb25zZSBib2R5IG9mIHByZWZsaWdodCByZXF1ZXN0
cy4KKyAgICBpZiAoIW1fYWN0dWFsUmVxdWVzdCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVDYWNoZWRNZXRhZGF0YShkYXRhLCBsZW5ndGhSZWNlaXZlZCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2Fk
ZXIpOwogICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgZGlkRmluaXNoTG9hZGluZyhsb2FkZXIt
PmlkZW50aWZpZXIoKSk7CisgICAgZGlkRmluaXNoTG9hZGluZyhsb2FkZXItPmlkZW50aWZpZXIo
KSwgZmluaXNoVGltZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkgewogICAgICAg
ICBBU1NFUlQoIW1fc2FtZU9yaWdpblJlcXVlc3QpOwogICAgICAgICBBU1NFUlQobV9vcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKTsKICAgICAgICAg
cHJlZmxpZ2h0U3VjY2VzcygpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQpAQCAtMzU5LDcgKzM3NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWUKICAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihkYXRhLnNp
emUoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGEoMCwgYnl0ZXMsIGxlbik7CiAKLSAgICBkaWRGaW5p
c2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgIGRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwg
MC4wKTsKIH0KIAogYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmlzQWxsb3dlZFJlZGly
ZWN0KGNvbnN0IEtVUkwmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogICAgICAg
ICB1c2luZyBSZWZDb3VudGVkPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj46OnJlZjsKICAgICAg
ICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpkZXJlZjsKQEAg
LTc1LDYgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgY2hhciosIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTgyLDcgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKIAotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1h
a2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KTsKICAgICAgICAgdm9pZCBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFBy
ZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIHBy
ZWZsaWdodFN1Y2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcg
Lyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQq
LykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgLyppZGVudGlmaWVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5n
dGgqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgLyppZGVudGlmaWVyKi8sIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5o
CShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNyArNjgsMjMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxNSArMTk4
LDI4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEIKICAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB2
ZWN0b3IucmVsZWFzZSgpKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNv
bnRleHREaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFJl
Y2VpdmVDYWNoZWRNZXRhZGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBh
c3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gdmVjdG9yRGF0YSkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3Rv
ckRhdGEtPnNpemUoKSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZywgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBpZGVudGlmaWVyKSwgbV90YXNrTW9kZSk7CisgICAgT3duUHRyPFZlY3RvcjxjaGFy
PiA+IHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4obGVuZ3RoUmVjZWl2ZWQpKTsg
Ly8gbmVlZHMgdG8gYmUgYW4gT3duUHRyIGZvciB1c2FnZSB3aXRoIGNyZWF0ZUNhbGxiYWNrVGFz
ay4KKyAgICBtZW1jcHkodmVjdG9yLT5kYXRhKCksIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgdmVjdG9yLnJlbGVhc2UoKSksIG1fdGFza01vZGUpOworfQorCitzdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRp
bWUpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRl
eHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCit7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNo
TG9hZGluZywgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKSwg
bV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRGYWlsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3Ro
UmVjZWl2ZWQpOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5n
dGgpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcAkocmV2aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgCiAgICAgbV9pY29uRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb246OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKICAgICBmaW5pc2hMb2FkaW5nKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlz
aW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgYwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIAotdm9p
ZCBFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQordm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAg
aWYgKG1fcmVjZWl2ZUJ1Zi5zaXplKCkgPiAwIHx8IG1fZGF0YS5zaXplKCkgPiAwKSB7CiAgICAg
ICAgIGFwcGVuZChtX3JlY2VpdmVCdWYsICJcblxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
UmVkaXJlY3RDaGVjaygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZEZhaWxSZWRpcmVjdENoZWMKICAgICBuZXR3b3JrRXJyb3IoKTsKIH0KIAotdm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47CkBA
IC05OTksNyArOTk5LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1
bgogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsK
IAogICAgIG1fcmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7Ci0gICAgCisKICNpZiBFTkFC
TEUoWEhSX1JFU1BPTlNFX0JMT0IpCiAgICAgLy8gRklYTUU6IFNldCBtX3Jlc3BvbnNlQmxvYiB0
byBzb21ldGhpbmcgaGVyZSBpbiB0aGUgUmVzcG9uc2VUeXBlQmxvYiBjYXNlLgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkocmV2aXNpb24gNzg2NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
Owo=
</data>
<flag name="review"
          id="74263"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="74264"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82633</attachid>
            <date>2011-02-16 07:31:20 -0800</date>
            <delta_ts>2011-02-16 17:01:57 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>17373</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDItMTUgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5lZWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhLCBhbmQgZmlu
aXNoVGltZSBmb3IgZGlkRmluaXNoTG9hZGluZyBleHBvc2VkIGluIFRocmVhZGFibGVMb2FkZXJD
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
MzEzCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkLCBubyBuZXcgZnVuY3Rpb25hbGl0eSBleHBv
c2VkCisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQ2Fj
aGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRSZWNlaXZl
Q2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRTb3VyY2UuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDExLTAyLTEwICBKZXJlbXkgT3Jsb3cgIDxq
b3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCShyZXZp
c2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgp
OwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZykKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nLCBkb3VibGUpCiB7CiAgICAgY2xlYW51cCgpOwogICAgIGlmIChtX2NsaWVudCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCShyZXZpc2lvbiA3ODY1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCBpbnQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZywgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24g
Nzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxMiBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAgICBtX2NsaWVudCA9IDA7CiB9CiAKK3ZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgdmFsdWUpCit7Cisg
ICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+c2V0RGVmZXJzTG9hZGluZyh2YWx1
ZSk7Cit9CisKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qo
U3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMjMxLDIx
ICsyMzcsMzEgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdgogICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7
CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRlciA9PSBtX2xvYWRlcik7CisKKyAgICAv
LyBJZ25vcmUgcmVzcG9uc2UgYm9keSBvZiBwcmVmbGlnaHQgcmVxdWVzdHMuCisgICAgaWYgKCFt
X2FjdHVhbFJlcXVlc3QpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOworfQorCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUg
ZmluaXNoVGltZSkKIHsKICAgICBBU1NFUlQobG9hZGVyID09IG1fbG9hZGVyKTsKICAgICBBU1NF
UlQobV9jbGllbnQpOwotICAgIGRpZEZpbmlzaExvYWRpbmcobG9hZGVyLT5pZGVudGlmaWVyKCkp
OworICAgIGRpZEZpbmlzaExvYWRpbmcobG9hZGVyLT5pZGVudGlmaWVyKCksIGZpbmlzaFRpbWUp
OwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hU
aW1lKQogewogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpIHsKICAgICAgICAgQVNTRVJUKCFtX3Nh
bWVPcmlnaW5SZXF1ZXN0KTsKICAgICAgICAgQVNTRVJUKG1fb3B0aW9ucy5jcm9zc09yaWdpblJl
cXVlc3RQb2xpY3kgPT0gVXNlQWNjZXNzQ29udHJvbCk7CiAgICAgICAgIHByZWZsaWdodFN1Y2Nl
c3MoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRl
bnRpZmllcik7CisgICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIs
IGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFp
bChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
QEAgLTM1OSw3ICszNzUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlCiAgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oZGF0YS5zaXplKCkpOwogICAgIGRp
ZFJlY2VpdmVEYXRhKDAsIGJ5dGVzLCBsZW4pOwogCi0gICAgZGlkRmluaXNoTG9hZGluZyhpZGVu
dGlmaWVyKTsKKyAgICBkaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIDAuMCk7CiB9CiAKIGJv
b2wgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJM
JiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCShyZXZpc2lvbiA3ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPjo6ZGVyZWY7CkBAIC03NSw2ICs3Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhT
dWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC04Miw3ICs4
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNl
bGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CiAKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
Zmllcik7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAgdm9pZCBtYWtlU2ltcGxlQ3Jvc3NP
cmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAg
ICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KTsKICAgICAgICAgdm9pZCBwcmVmbGlnaHRTdWNjZXNz
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1Rv
QmVTZW50Ki8pIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVkKi8pIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmll
ciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRp
ZmllciovLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsUmVkaXJlY3RDaGVjaygpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAkocmV2aXNpb24gNzg2
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTcgKzY4LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRh
dGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBkb3VibGUgZmluaXNoVGltZSkKICAgICAgICAgewogICAgICAgICAgICAgbV9kb25lID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMTUgKzE5OCwyOCBAQCB2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250
ZXh0RGlkUmVjZWl2ZURhdGEsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9yLnJlbGVhc2Uo
KSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNo
TG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRSZWNlaXZlQ2FjaGVkTWV0
YWRhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzT3duUHRyPFZlY3Rv
cjxjaGFyPiA+IHZlY3RvckRhdGEpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNl
aXZlQ2FjaGVkTWV0YWRhdGEodmVjdG9yRGF0YS0+ZGF0YSgpLCB2ZWN0b3JEYXRhLT5zaXplKCkp
OwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQogewotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29y
a2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRp
ZmllciksIG1fdGFza01vZGUpOworICAgIE93blB0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3IgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGxlbmd0aFJlY2VpdmVkKSk7IC8vIG5lZWRzIHRvIGJl
IGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBjcmVhdGVDYWxsYmFja1Rhc2suCisgICAgbWVtY3B5
KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CisgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3Jr
ZXJDb250ZXh0RGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIs
IHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tNb2RlKTsKK30KKworc3RhdGljIHZvaWQgd29ya2Vy
Q29udGV4dERpZEZpbmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgIHdv
cmtlckNsaWVudFdyYXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGlt
ZSk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hU
aW1lKQoreworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0
KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcsIG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmllciwgZmluaXNoVGltZSksIG1fdGFza01vZGUpOwog
fQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA3
ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExNCw4ICsxMTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2FuY2VsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAg
ICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
Y2hhciosIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciosIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxS
ZWRpcmVjdENoZWNrKCk7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9u
IDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IAogICAgIG1faWNvbkRhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGhS
ZWNlaXZlZCk7CiB9CiAKLXZvaWQgTm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcpCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nLCBkb3VibGUpCiB7CiAgICAgZmluaXNoTG9hZGluZygpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiA3ODY1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkocmV2aXNpb24g
Nzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IGMKICAgICBwYXJzZUV2ZW50U3RyZWFtKCk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6
OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKK3ZvaWQgRXZlbnRTb3VyY2U6OmRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKQogewogICAgIGlmIChtX3JlY2VpdmVC
dWYuc2l6ZSgpID4gMCB8fCBtX2RhdGEuc2l6ZSgpID4gMCkgewogICAgICAgICBhcHBlbmQobV9y
ZWNlaXZlQnVmLCAiXG5cbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkocmV2
aXNpb24gNzg2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZywgZG91YmxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2so
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA3
ODY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGYWlsUmVk
aXJlY3RDaGVjCiAgICAgbmV0d29ya0Vycm9yKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSkKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuOwpAQCAtOTk5LDcgKzk5OSw3
IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW4KICAgICAgICAgbV9y
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+Zmx1c2goKSk7CiAKICAgICBtX3Jlc3Bv
bnNlQnVpbGRlci5zaHJpbmtUb0ZpdCgpOwotICAgIAorCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05T
RV9CTE9CKQogICAgIC8vIEZJWE1FOiBTZXQgbV9yZXNwb25zZUJsb2IgdG8gc29tZXRoaW5nIGhl
cmUgaW4gdGhlIFJlc3BvbnNlVHlwZUJsb2IgY2FzZS4KICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlzaW9uIDc4NjU0KQorKysgU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aFJlY2VpdmVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
</data>
<flag name="review"
          id="74308"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82724</attachid>
            <date>2011-02-16 17:01:57 -0800</date>
            <delta_ts>2011-02-16 17:22:34 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>18844</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NzUyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDItMTYgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5lZWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhLCBhbmQgZmlu
aXNoVGltZSBmb3IgZGlkRmluaXNoTG9hZGluZyBleHBvc2VkIGluIFRocmVhZGFibGVMb2FkZXJD
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
MzEzCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkLCBleHBvc2VzIG5vIG5ldyBmdW5jdGlvbmFs
aXR5CisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQ2Fj
aGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRSZWNlaXZl
Q2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRTb3VyY2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwog
MjAxMS0wMi0xNiAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvCiAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKK3ZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAgY2xlYW51
cCgpOwogICAgIGlmIChtX2NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBTdHJpbmcgc3RyaW5n
UmVzdWx0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDYgKzE2NiwxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAg
ICBtX2NsaWVudCA9IDA7CiB9CiAKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpzZXRE
ZWZlcnNMb2FkaW5nKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBt
X2xvYWRlci0+c2V0RGVmZXJzTG9hZGluZyh2YWx1ZSk7Cit9CisKIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAg
ICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMjMxLDIxICsyMzcsMzEgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdgogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShk
YXRhLCBsZW5ndGhSZWNlaXZlZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSkKK3Zv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3Vi
cmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2Vp
dmVkKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIs
IGxvYWRlciA9PSBtX2xvYWRlcik7CisKKyAgICAvLyBJZ25vcmUgcmVzcG9uc2UgYm9keSBvZiBw
cmVmbGlnaHQgcmVxdWVzdHMuCisgICAgaWYgKCFtX2FjdHVhbFJlcXVlc3QpCisgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOwor
fQorCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJy
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICAgICBBU1NFUlQo
bG9hZGVyID09IG1fbG9hZGVyKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIGRpZEZpbmlz
aExvYWRpbmcobG9hZGVyLT5pZGVudGlmaWVyKCkpOworICAgIGRpZEZpbmlzaExvYWRpbmcobG9h
ZGVyLT5pZGVudGlmaWVyKCksIGZpbmlzaFRpbWUpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIGlmIChtX2FjdHVhbFJl
cXVlc3QpIHsKICAgICAgICAgQVNTRVJUKCFtX3NhbWVPcmlnaW5SZXF1ZXN0KTsKICAgICAgICAg
QVNTRVJUKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gVXNlQWNjZXNzQ29u
dHJvbCk7CiAgICAgICAgIHByZWZsaWdodFN1Y2Nlc3MoKTsKICAgICB9IGVsc2UKLSAgICAgICAg
bV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CisgICAgICAgIG1fY2xpZW50
LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTM1OSw3ICszNzUsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAgICAgaW50IGxlbiA9IHN0YXRpY19j
YXN0PGludD4oZGF0YS5zaXplKCkpOwogICAgIGRpZFJlY2VpdmVEYXRhKDAsIGJ5dGVzLCBsZW4p
OwogCi0gICAgZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICBkaWRGaW5pc2hMb2Fk
aW5nKGlkZW50aWZpZXIsIDAuMCk7CiB9CiAKIGJvb2wgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA3ODc1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmco
Ym9vbCk7CiAKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyPjo6ZGVyZWY7CkBAIC03NSw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGxlbmd0aFJlY2VpdmVk
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNv
dXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCkBAIC04Miw3ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKLSAgICAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsK
ICAgICAgICAgdm9pZCBtYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNj
ZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KTsK
ICAgICAgICAgdm9pZCBwcmVmbGlnaHRTdWNjZXNzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc4NzUxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCAv
Kmxlbmd0aFJlY2VpdmVkKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIq
LCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBkb3VibGUgLypmaW5pc2hUaW1l
Ki8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpIHsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXIuaAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTcgKzY4LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQor
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKICAg
ICAgICAgewogICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDc4NzUxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTgsMTUgKzE5OCwyOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZURhdGEsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgdmVjdG9yLnJlbGVhc2UoKSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIHdv
cmtlckNvbnRleHREaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IHZlY3RvckRhdGEpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0g
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEodmVjdG9yRGF0
YS0+ZGF0YSgpLCB2ZWN0b3JEYXRhLT5zaXplKCkpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aFJlY2VpdmVkKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJD
b250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcs
IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmllciksIG1fdGFza01vZGUpOworICAgIE93
blB0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGxl
bmd0aFJlY2VpdmVkKSk7IC8vIG5lZWRzIHRvIGJlIGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBj
cmVhdGVDYWxsYmFja1Rhc2suCisgICAgbWVtY3B5KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBsZW5n
dGhSZWNlaXZlZCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZUNhY2hlZE1l
dGFkYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tN
b2RlKTsKK30KKworc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZpbmlz
aExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2Vy
Q29udGV4dERpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmll
ciwgZmluaXNoVGltZSksIG1fdGFza01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250
ZXh0RGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw4ICsx
MTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWlu
VGhyZWFkQ2FuY2VsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7
CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hh
ciosIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAg
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDc4NzUxKQorKysgU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyAr
MTk1LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpZFJlY2VpdmVEYXRhKGNvbnN0IAogICAgIG1f
aWNvbkRhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CiB9CiAKLXZvaWQgTm90aWZp
Y2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCit2b2lkIE5vdGlmaWNhdGlv
bjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAgZmluaXNo
TG9hZGluZygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGMKICAgICBwYXJzZUV2ZW50U3Ry
ZWFtKCk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZykKK3ZvaWQgRXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywg
ZG91YmxlKQogewogICAgIGlmIChtX3JlY2VpdmVCdWYuc2l6ZSgpID4gMCB8fCBtX2RhdGEuc2l6
ZSgpID4gMCkgewogICAgICAgICBhcHBlbmQobV9yZWNlaXZlQnVmLCAiXG5cbiIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoCiAgICAgbV9zY3JpcHQgKz0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKIH0K
IAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICAgICBpZiAo
bV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
ODcsNyArOTg3LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbFJlZGlyZWN0Q2hlYwog
ICAgIG5ldHdvcmtFcnJvcigpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUpCiB7CiAgICAg
aWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuCiAgICAgICAgIG1fcmVzcG9uc2VCdWls
ZGVyLmFwcGVuZChtX2RlY29kZXItPmZsdXNoKCkpOwogCiAgICAgbV9yZXNwb25zZUJ1aWxkZXIu
c2hyaW5rVG9GaXQoKTsKLSAgICAKKwogI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKICAg
ICAvLyBGSVhNRTogU2V0IG1fcmVzcG9uc2VCbG9iIHRvIHNvbWV0aGluZyBoZXJlIGluIHRoZSBS
ZXNwb25zZVR5cGVCbG9iIGNhc2UuCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZl
ZCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVj
dENoZWNrKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNl
bGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cg==
</data>
<flag name="review"
          id="74417"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82728</attachid>
            <date>2011-02-16 17:22:34 -0800</date>
            <delta_ts>2011-02-16 20:11:53 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>18822</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NzUyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDItMTYgIEJpbGwgQnVk
Z2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5lZWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhLCBhbmQgZmlu
aXNoVGltZSBmb3IgZGlkRmluaXNoTG9hZGluZyBleHBvc2VkIGluIFRocmVhZGFibGVMb2FkZXJD
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
MzEzCisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkLCBleHBvc2VzIG5vIG5ldyBmdW5jdGlvbmFs
aXR5CisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQ2Fj
aGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRSZWNlaXZl
Q2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRTb3VyY2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwog
MjAxMS0wMi0xNiAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvCiAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKK3ZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAgY2xlYW51
cCgpOwogICAgIGlmIChtX2NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBTdHJpbmcgc3RyaW5n
UmVzdWx0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDYgKzE2NiwxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAg
ICBtX2NsaWVudCA9IDA7CiB9CiAKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpzZXRE
ZWZlcnNMb2FkaW5nKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBt
X2xvYWRlci0+c2V0RGVmZXJzTG9hZGluZyh2YWx1ZSk7Cit9CisKIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAg
ICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMjMxLDIxICsyMzcsMzEgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdgogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShk
YXRhLCBsZW5ndGhSZWNlaXZlZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSkKK3Zv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3Vi
cmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2Vp
dmVkKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIs
IGxvYWRlciA9PSBtX2xvYWRlcik7CisKKyAgICAvLyBJZ25vcmUgcmVzcG9uc2UgYm9keSBvZiBw
cmVmbGlnaHQgcmVxdWVzdHMuCisgICAgaWYgKCFtX2FjdHVhbFJlcXVlc3QpCisgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOwor
fQorCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJy
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICAgICBBU1NFUlQo
bG9hZGVyID09IG1fbG9hZGVyKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIGRpZEZpbmlz
aExvYWRpbmcobG9hZGVyLT5pZGVudGlmaWVyKCkpOworICAgIGRpZEZpbmlzaExvYWRpbmcobG9h
ZGVyLT5pZGVudGlmaWVyKCksIGZpbmlzaFRpbWUpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIGlmIChtX2FjdHVhbFJl
cXVlc3QpIHsKICAgICAgICAgQVNTRVJUKCFtX3NhbWVPcmlnaW5SZXF1ZXN0KTsKICAgICAgICAg
QVNTRVJUKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gVXNlQWNjZXNzQ29u
dHJvbCk7CiAgICAgICAgIHByZWZsaWdodFN1Y2Nlc3MoKTsKICAgICB9IGVsc2UKLSAgICAgICAg
bV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CisgICAgICAgIG1fY2xpZW50
LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTM1OSw3ICszNzUsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAgICAgaW50IGxlbiA9IHN0YXRpY19j
YXN0PGludD4oZGF0YS5zaXplKCkpOwogICAgIGRpZFJlY2VpdmVEYXRhKDAsIGJ5dGVzLCBsZW4p
OwogCi0gICAgZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAgICBkaWRGaW5pc2hMb2Fk
aW5nKGlkZW50aWZpZXIsIDAuMCk7CiB9CiAKIGJvb2wgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA3ODc1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmco
Ym9vbCk7CiAKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyPjo6ZGVyZWY7CkBAIC03NSw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGxlbmd0aFJlY2VpdmVk
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNv
dXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCkBAIC04Miw3ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKLSAgICAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsK
ICAgICAgICAgdm9pZCBtYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNj
ZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KTsK
ICAgICAgICAgdm9pZCBwcmVmbGlnaHRTdWNjZXNzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc4NzUxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCAv
Kmxlbmd0aFJlY2VpdmVkKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIq
LCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBkb3VibGUgLypmaW5pc2hUaW1l
Ki8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpIHsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXIuaAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTcgKzY4LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQor
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKICAg
ICAgICAgewogICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDc4NzUxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTgsMTUgKzE5OCwyOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZURhdGEsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgdmVjdG9yLnJlbGVhc2UoKSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIHdv
cmtlckNvbnRleHREaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IHZlY3RvckRhdGEpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0g
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKKyAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEodmVjdG9yRGF0
YS0+ZGF0YSgpLCB2ZWN0b3JEYXRhLT5zaXplKCkpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aFJlY2VpdmVkKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJD
b250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcs
IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmllciksIG1fdGFza01vZGUpOworICAgIE93
blB0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGxl
bmd0aFJlY2VpdmVkKSk7IC8vIG5lZWRzIHRvIGJlIGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBj
cmVhdGVDYWxsYmFja1Rhc2suCisgICAgbWVtY3B5KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBsZW5n
dGhSZWNlaXZlZCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZUNhY2hlZE1l
dGFkYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tN
b2RlKTsKK30KKworc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZEZpbmlzaExvYWRpbmcoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZpbmlz
aExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2Vy
Q29udGV4dERpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmll
ciwgZmluaXNoVGltZSksIG1fdGFza01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250
ZXh0RGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw4ICsx
MTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWlu
VGhyZWFkQ2FuY2VsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7
CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hh
ciosIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAg
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDc4NzUxKQorKysgU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyAr
MTk1LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpZFJlY2VpdmVEYXRhKGNvbnN0IAogICAgIG1f
aWNvbkRhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGhSZWNlaXZlZCk7CiB9CiAKLXZvaWQgTm90aWZp
Y2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCit2b2lkIE5vdGlmaWNhdGlv
bjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CiAgICAgZmluaXNo
TG9hZGluZygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGMKICAgICBwYXJzZUV2ZW50U3Ry
ZWFtKCk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZykKK3ZvaWQgRXZlbnRTb3VyY2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywg
ZG91YmxlKQogewogICAgIGlmIChtX3JlY2VpdmVCdWYuc2l6ZSgpID4gMCB8fCBtX2RhdGEuc2l6
ZSgpID4gMCkgewogICAgICAgICBhcHBlbmQobV9yZWNlaXZlQnVmLCAiXG5cbiIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkocmV2aXNpb24gNzg3NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAkocmV2aXNpb24gNzg3NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoCiAgICAgbV9zY3JpcHQgKz0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKIH0K
IAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUpCiB7CiAgICAgaWYgKG1fZmFpbGVkKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmgJKHJldmlzaW9uIDc4NzUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRp
b24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA3ODc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRGYWlsUmVkaXJlY3RDaGVjCiAgICAgbmV0d29ya0Vycm9yKCk7CiB9
CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSkKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAg
cmV0dXJuOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlz
aExvYWRpbmcodW4KICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+
Zmx1c2goKSk7CiAKICAgICBtX3Jlc3BvbnNlQnVpbGRlci5zaHJpbmtUb0ZpdCgpOwotICAgIAor
CiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQogICAgIC8vIEZJWE1FOiBTZXQgbV9yZXNw
b25zZUJsb2IgdG8gc29tZXRoaW5nIGhlcmUgaW4gdGhlIFJlc3BvbnNlVHlwZUJsb2IgY2FzZS4K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlzaW9uIDc4
NzUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>