<?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>36472</bug_id>
          
          <creation_ts>2010-03-22 18:04:39 -0700</creation_ts>
          <short_desc>Add support to create UUID string.</short_desc>
          <delta_ts>2010-05-05 06:59:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>
          <dependson>36929</dependson>
    
    <dependson>38581</dependson>
          <blocked>36678</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>abarth</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>ismail</cc>
    
    <cc>levin</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202857</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-22 18:04:39 -0700</bug_when>
    <thetext>We need to add support to create UUID string. This is needed to create UUID-based URN for File.urn and other scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202858</commentid>
    <comment_count>1</comment_count>
      <attachid>51374</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-22 18:06:13 -0700</bug_when>
    <thetext>Created attachment 51374
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202860</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-22 18:12:03 -0700</bug_when>
    <thetext>Attachment 51374 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/text/String.cpp:965:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/platform/text/String.cpp:975:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/text/String.cpp:976:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/text/String.cpp:984:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 4 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202863</commentid>
    <comment_count>3</comment_count>
      <attachid>51374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-22 18:15:09 -0700</bug_when>
    <thetext>Comment on attachment 51374
Proposed Patch

This does not belong in the String class&apos;s header file. You should give it its own header file unless you can find some other functions it belongs with.

The code to make the strings seems OK. but the opening function brace should be on its own line. Also, we normally put separate functions per platform into separate source files instead of adding them all to one file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202869</commentid>
    <comment_count>4</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-22 18:26:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 51374 [details])
&gt; This does not belong in the String class&apos;s header file. You should give it its
&gt; own header file unless you can find some other functions it belongs with.
&gt; 
&gt; The code to make the strings seems OK. but the opening function brace should be
&gt; on its own line. Also, we normally put separate functions per platform into
&gt; separate source files instead of adding them all to one file.

I will put this in a separate header file, say UUID.h.

Since the implementation is more OS-specific, instead of platform-specific, how could we put separate implementations per OS? If this is not likely, I will go with per-platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204702</commentid>
    <comment_count>5</comment_count>
      <attachid>51768</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-26 11:51:09 -0700</bug_when>
    <thetext>Created attachment 51768
Proposed Patch

Introduced separate files UUID.* and placed them in JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204716</commentid>
    <comment_count>6</comment_count>
      <attachid>51768</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-26 12:39:07 -0700</bug_when>
    <thetext>Comment on attachment 51768
Proposed Patch

What inspired you to choose JavaScriptCore/wtf rather than WebCore/platform for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204739</commentid>
    <comment_count>7</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-26 13:03:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 51768 [details])
&gt; What inspired you to choose JavaScriptCore/wtf rather than WebCore/platform for
&gt; this?

I think it provides basic support to create a UUID string that can be used for different platforms. In addition, the implementation is more OS dependent. How do you think? Correct me if I get what could be put under wtf wrong. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206316</commentid>
    <comment_count>8</comment_count>
      <attachid>52115</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-30 18:35:42 -0700</bug_when>
    <thetext>Created attachment 52115
Revised Patch

Moved UUID.* from JavaScriptCore/wtf to Webore/platform.

Since the implementation is very simple and OS-specific, I&apos;d rather keep all the implementation in one cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206318</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-30 18:39:30 -0700</bug_when>
    <thetext>Attachment 52115 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.pro&quot;
WebCore/platform/UUID.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.vcproj/WebCore.vcproj&quot;
File not a recognized type to check. Skipping: &quot;WebCore/GNUmakefile.am&quot;
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.gypi&quot;
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.xcodeproj/project.pbxproj&quot;
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206598</commentid>
    <comment_count>10</comment_count>
      <attachid>52189</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 11:12:04 -0700</bug_when>
    <thetext>Created attachment 52189
Fix style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206653</commentid>
    <comment_count>11</comment_count>
      <attachid>52189</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-31 12:41:04 -0700</bug_when>
    <thetext>Comment on attachment 52189
Fix style error

I think you left the implementation in a single file because it&apos;s just a few lines for each, and it&apos;s unclear which platform subdir of the WebCore/platform would be the right place for split files... It looks ok in this case, there are precedents (CurrentTime.cpp), so if others won&apos;t object, I think it&apos;s fine here.

Few notes:

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        Need a short description and bug URL (OOPS!)

oops.

&gt; diff --git a/WebCore/platform/UUID.cpp b/WebCore/platform/UUID.cpp
&gt; +String createCanonicalUUIDString()
&gt; +{
&gt; +#if OS(WINDOWS)
&gt; +    GUID uuid = { 0 };
&gt; +    HRESULT hr = CoCreateGuid(&amp;uuid);
&gt; +    ASSERT(SUCCEEDED(hr));
&gt; +    if (FAILED(hr))
&gt; +        return String();

Either ASSERT or if (or both) can be removed here. It&apos;s either ASSERT or something that can actually happen and we have a code path for that.

&gt; +#elif OS(LINUX)
&gt; +    FILE* fptr = fopen(&quot;/proc/sys/kernel/random/uuid&quot;, &quot;r&quot;);
&gt; +    ASSERT(fptr);
&gt; +    if (!fptr)
&gt; +        return String();

Same here.

&gt; +    char uuidStr[37] = {0};
&gt; +    fgets(uuidStr, sizeof(uuidStr) - 1, fptr);
&gt; +    fclose(fptr);
&gt; +    return String(uuidStr);

Here there is no lower(), while in other cases there is. BTW, why do we need to lowercase it? It&apos;s not like we are going to produce 2 GUID strings and then try to compare them, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206673</commentid>
    <comment_count>12</comment_count>
      <attachid>52200</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 13:09:31 -0700</bug_when>
    <thetext>Created attachment 52200
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206678</commentid>
    <comment_count>13</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 13:11:57 -0700</bug_when>
    <thetext>&gt; &gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; &gt; +        Need a short description and bug URL (OOPS!)
&gt; 
&gt; oops.
Removed.
&gt; 
&gt; &gt; diff --git a/WebCore/platform/UUID.cpp b/WebCore/platform/UUID.cpp
&gt; &gt; +String createCanonicalUUIDString()
&gt; &gt; +{
&gt; &gt; +#if OS(WINDOWS)
&gt; &gt; +    GUID uuid = { 0 };
&gt; &gt; +    HRESULT hr = CoCreateGuid(&amp;uuid);
&gt; &gt; +    ASSERT(SUCCEEDED(hr));
&gt; &gt; +    if (FAILED(hr))
&gt; &gt; +        return String();
&gt; 
&gt; Either ASSERT or if (or both) can be removed here. It&apos;s either ASSERT or
&gt; something that can actually happen and we have a code path for that.
Removed ASSERT.
&gt; 
&gt; &gt; +#elif OS(LINUX)
&gt; &gt; +    FILE* fptr = fopen(&quot;/proc/sys/kernel/random/uuid&quot;, &quot;r&quot;);
&gt; &gt; +    ASSERT(fptr);
&gt; &gt; +    if (!fptr)
&gt; &gt; +        return String();
&gt; 
&gt; Same here.
Removed ASSERT.
&gt; 
&gt; &gt; +    char uuidStr[37] = {0};
&gt; &gt; +    fgets(uuidStr, sizeof(uuidStr) - 1, fptr);
&gt; &gt; +    fclose(fptr);
&gt; &gt; +    return String(uuidStr);
&gt; 
&gt; Here there is no lower(), while in other cases there is. BTW, why do we need to
&gt; lowercase it? It&apos;s not like we are going to produce 2 GUID strings and then try
&gt; to compare them, right?
In Linux, what we get is the lower-case UUID string so we do not need to do the conversion.
The File.urn requires the UUID to be in canonical format, lower case. So I enforce lower case output for this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206713</commentid>
    <comment_count>14</comment_count>
      <attachid>52200</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-31 14:08:12 -0700</bug_when>
    <thetext>Comment on attachment 52200
Proposed Patch

r=me

One note, please consider while landing:

&gt; +#elif OS(LINUX)
&gt; +    FILE* fptr = fopen(&quot;/proc/sys/kernel/random/uuid&quot;, &quot;r&quot;);
&gt; +    if (!fptr)
&gt; +        return String();
&gt; +    char uuidStr[37] = {0};
&gt; +    fgets(uuidStr, sizeof(uuidStr) - 1, fptr);
&gt; +    fclose(fptr);
&gt; +    return String(uuidStr);

If we do want the lowercase only, it probably makes sense to return .lower() here as well. Unless we have a guarantee that all Linux flavors return lowercase already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206718</commentid>
    <comment_count>15</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 14:24:08 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/56869.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206719</commentid>
    <comment_count>16</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 14:24:54 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 52200 [details])
&gt; r=me
&gt; 
&gt; One note, please consider while landing:
&gt; 
&gt; &gt; +#elif OS(LINUX)
&gt; &gt; +    FILE* fptr = fopen(&quot;/proc/sys/kernel/random/uuid&quot;, &quot;r&quot;);
&gt; &gt; +    if (!fptr)
&gt; &gt; +        return String();
&gt; &gt; +    char uuidStr[37] = {0};
&gt; &gt; +    fgets(uuidStr, sizeof(uuidStr) - 1, fptr);
&gt; &gt; +    fclose(fptr);
&gt; &gt; +    return String(uuidStr);
&gt; 
&gt; If we do want the lowercase only, it probably makes sense to return .lower()
&gt; here as well. Unless we have a guarantee that all Linux flavors return
&gt; lowercase already.

This has been fixed and landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206725</commentid>
    <comment_count>17</comment_count>
      <attachid>52200</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 14:37:09 -0700</bug_when>
    <thetext>Comment on attachment 52200
Proposed Patch

I believe this code is wrong and should be rolled out.

+    HRESULT hr = CoCreateGuid(&amp;uuid);

This method incorporates private data from the operating system in the guid.  If we expose this to web content (e.g., in a file URN), then we&apos;ll leak information like the user&apos;s MAC address, which is bad news bears.

It&apos;s probably better to use a purely random number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206727</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 14:40:30 -0700</bug_when>
    <thetext>From http://msdn.microsoft.com/en-us/library/aa379205(v=VS.85).aspx

[[
For security reasons, it is often desirable to keep ethernet addresses on
networks from becoming available outside a company or organization. The
UuidCreate function generates a UUID that cannot be traced to the ethernet
address of the computer on which it was generated. It also cannot be associated
with other UUIDs created on the same computer. If you do not need this level of
security, your application can use the UuidCreateSequential function, which
behaves exactly as the UuidCreate function does on all other versions of the
operating system.
]]

I&apos;m not sure what threat model they&apos;re considering, but the MAC is used in the
computation.  This level of uniqueness isn&apos;t required here and is dangerous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206735</commentid>
    <comment_count>19</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 14:49:39 -0700</bug_when>
    <thetext>Per MSDN, the CoCreateGuid function calls the RPC function UuidCreate. And for security reasons, UuidCreate was modified so that it no longer uses a machine&apos;s MAC address to generate UUIDs.

So I think we&apos;re fine here since we do not expose MAC address in the UUID string we create on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206742</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 14:55:14 -0700</bug_when>
    <thetext>What&apos;s the advantage of calling these APIs versus using a random number?  These APIs can leak a lot of information if not done carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206749</commentid>
    <comment_count>21</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 15:09:15 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; What&apos;s the advantage of calling these APIs versus using a random number?  These
&gt; APIs can leak a lot of information if not done carefully.

The UUID is needed in implementing File.urn as defined in File API spec: http://www.w3.org/TR/FileAPI/#dfn-urn. If there is a security concern on this, we need to talk with the spec writer and people in the working group to get it tuned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206756</commentid>
    <comment_count>22</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-31 15:17:44 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; What&apos;s the advantage of calling these APIs versus using a random number?  These
&gt; APIs can leak a lot of information if not done carefully.

Interesting. Do you suggest using random number generator to form a string that
looks like UUID? (because File.urn asks for it).

I suspect not every random number generator is ok to use here, but I&apos;m not sure
I know what kind of information leaks we are trying to prevent. 

Also, the sequential calls to generate UUID to OS-provided functions
practically guarantee to get a different numbers each time, for random numbers
we probably need some code to make sure we don&apos;t repeat.

Reopening the bug until this discussion has a resolution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206793</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 16:21:29 -0700</bug_when>
    <thetext>&gt; Interesting. Do you suggest using random number generator to form a string that
&gt; looks like UUID? (because File.urn asks for it).

Yes.

&gt; I suspect not every random number generator is ok to use here, but I&apos;m not sure
&gt; I know what kind of information leaks we are trying to prevent. 

We&apos;ve had trouble with even our random number generating leaking too much information.  We want to use the platform&apos;s cryptographic random number generator here.

&gt; Also, the sequential calls to generate UUID to OS-provided functions
&gt; practically guarantee to get a different numbers each time, for random numbers
&gt; we probably need some code to make sure we don&apos;t repeat.

If we use enough bits, that won&apos;t be an issue.  It will be more likely that the atoms in your body spontaneously explode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208418</commentid>
    <comment_count>24</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-04-05 02:04:01 -0700</bug_when>
    <thetext>This broke Qt/WinCE compilation:


UUID.obj : error LNK2019: unresolved external symbol StringFromGUID2 referenced in function &quot;class WebCore::String __cdecl WebCore::createCanonicalUUIDString(void)&quot; (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
UUID.obj : error LNK2019: unresolved external symbol CoCreateGuid referenced in function &quot;class WebCore::String __cdecl WebCore::createCanonicalUUIDString(void)&quot; (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
..\lib\QtWebKit4.dll : fatal error LNK1120: 2 unresolved externals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209861</commentid>
    <comment_count>25</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 15:01:40 -0700</bug_when>
    <thetext>This has already been fixed by ossi.

(In reply to comment #24)
&gt; This broke Qt/WinCE compilation:
&gt; 
&gt; 
&gt; UUID.obj : error LNK2019: unresolved external symbol StringFromGUID2 referenced
&gt; in function &quot;class WebCore::String __cdecl
&gt; WebCore::createCanonicalUUIDString(void)&quot;
&gt; (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
&gt; UUID.obj : error LNK2019: unresolved external symbol CoCreateGuid referenced in
&gt; function &quot;class WebCore::String __cdecl
&gt; WebCore::createCanonicalUUIDString(void)&quot;
&gt; (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
&gt; ..\lib\QtWebKit4.dll : fatal error LNK1120: 2 unresolved externals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209862</commentid>
    <comment_count>26</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 15:03:42 -0700</bug_when>
    <thetext>Per wikipedia (http://en.wikipedia.org/wiki/Universally_Unique_Identifier), there&apos;re 5 different versions for generating UUID. The version 4 is to use random number only.

Version 4 (random)
Version 4 UUIDs use a scheme relying only on random numbers. This algorithm sets the version number as well as two reserved bits. All other bits are set using a random or pseudorandom data source. Version 4 UUIDs have the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx with hexadecimal digits for x and one of 8, 9, A, or B for y. e.g. f47ac10b-58cc-4372-a567-0e02b2c3d479.

On Windows, version 4 UUIDs are used since Windows 2000 (http://msdn.microsoft.com/en-us/library/aa446557.aspx).

On MacOSX, version 4 UUIDs are used since Tiger (http://developer.apple.com/mac/library/technotes/tn/tn1103.html#TNTAG8).

On Linux, the kernel offers the procfs pseudo-file /proc/sys/kernel/random/uuid that yields versiob 4 UUIDs (http://hbfs.wordpress.com/2008/09/30/ueid-unique-enough-ids/).

I will add the comment to the function and put up an assert to check for version 4.

(In reply to comment #18)
&gt; From http://msdn.microsoft.com/en-us/library/aa379205(v=VS.85).aspx
&gt; 
&gt; [[
&gt; For security reasons, it is often desirable to keep ethernet addresses on
&gt; networks from becoming available outside a company or organization. The
&gt; UuidCreate function generates a UUID that cannot be traced to the ethernet
&gt; address of the computer on which it was generated. It also cannot be associated
&gt; with other UUIDs created on the same computer. If you do not need this level of
&gt; security, your application can use the UuidCreateSequential function, which
&gt; behaves exactly as the UuidCreate function does on all other versions of the
&gt; operating system.
&gt; ]]
&gt; 
&gt; I&apos;m not sure what threat model they&apos;re considering, but the MAC is used in the
&gt; computation.  This level of uniqueness isn&apos;t required here and is dangerous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209865</commentid>
    <comment_count>27</comment_count>
      <attachid>52787</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 15:16:05 -0700</bug_when>
    <thetext>Created attachment 52787
Patch to add comment and assert for version 4 UUID</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209873</commentid>
    <comment_count>28</comment_count>
      <attachid>52787</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-07 15:32:01 -0700</bug_when>
    <thetext>Comment on attachment 52787
Patch to add comment and assert for version 4 UUID

Excellent.  Thanks for digging into this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209877</commentid>
    <comment_count>29</comment_count>
      <attachid>52787</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-07 15:38:43 -0700</bug_when>
    <thetext>Comment on attachment 52787
Patch to add comment and assert for version 4 UUID

Couple of nits, could be cleaned up on landing:

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog

&gt; +        Add the comment and assert to illustrate that we&apos;re generating version 4
&quot;to illustrate&quot; can be omitted.

&gt; diff --git a/WebCore/platform/UUID.h b/WebCore/platform/UUID.h

&gt; +// Note: for security reason, we should always generate version 4 UUID that use a scheme relying only on random numbers.
&gt; +// This algorithm sets the version number as well as two reserved bits. All other bits are set using a random or pseudorandom
&gt; +// data source. Version 4 UUIDs have the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx with hexadecimal digits for x and one of 8,
&gt; +// 9, A, or B for y.

Perhaps it was intended to be &quot;... with hexadecimal digit 4 for x and...&quot;

&gt; +//
&gt; +// On Windows, version 4 UUIDs are used since Windows 2000 (http://msdn.microsoft.com/en-us/library/aa446557.aspx).
&gt; +// On MacOSX, version 4 UUIDs are used since Tiger (http://developer.apple.com/mac/library/technotes/tn/tn1103.html#TNTAG8).
&gt; +// On Linux, the kernel offers the procfs pseudo-file /proc/sys/kernel/random/uuid that yields versiob 4 UUIDs (http://hbfs.wordpress.com/2008/09/30/ueid-unique-enough-ids/).

s/versiob/version/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209894</commentid>
    <comment_count>30</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-07 16:06:09 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/57239.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210001</commentid>
    <comment_count>31</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-04-07 22:52:27 -0700</bug_when>
    <thetext>Which revision? I can&apos;t see the fix in SVN.

(In reply to comment #25)
&gt; This has already been fixed by ossi.
&gt; 
&gt; (In reply to comment #24)
&gt; &gt; This broke Qt/WinCE compilation:
&gt; &gt; 
&gt; &gt; 
&gt; &gt; UUID.obj : error LNK2019: unresolved external symbol StringFromGUID2 referenced
&gt; &gt; in function &quot;class WebCore::String __cdecl
&gt; &gt; WebCore::createCanonicalUUIDString(void)&quot;
&gt; &gt; (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
&gt; &gt; UUID.obj : error LNK2019: unresolved external symbol CoCreateGuid referenced in
&gt; &gt; function &quot;class WebCore::String __cdecl
&gt; &gt; WebCore::createCanonicalUUIDString(void)&quot;
&gt; &gt; (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
&gt; &gt; ..\lib\QtWebKit4.dll : fatal error LNK1120: 2 unresolved externals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210030</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-07 23:48:16 -0700</bug_when>
    <thetext>This looks to have broken the Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210036</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-07 23:52:29 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; This looks to have broken the Qt build.
Thx, but it isn&apos;t the culprit. :)
(But http://trac.webkit.org/changeset/57240 is it, I&apos;m working on it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221001</commentid>
    <comment_count>34</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-05-05 01:04:04 -0700</bug_when>
    <thetext>This patch broke the Qt/WinCE build, the toplevel if should be like

#if OS(WINDOWS) &amp;&amp; !OS(WINCE)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221006</commentid>
    <comment_count>35</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-05-05 01:26:02 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; This patch broke the Qt/WinCE build, the toplevel if should be like
&gt; #if OS(WINDOWS) &amp;&amp; !OS(WINCE)

I fixed it for win32: http://trac.webkit.org/changeset/56922 
(bug: https://bugs.webkit.org/show_bug.cgi?id=36929 ) ,
but not for wince. I think the correct solution is
adding Ole32 library instead of disable this feature.

Proposed fix uploaded into bug: https://bugs.webkit.org/show_bug.cgi?id=36929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221008</commentid>
    <comment_count>36</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-05-05 01:31:22 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; This patch broke the Qt/WinCE build, the toplevel if should be like
&gt; &gt; #if OS(WINDOWS) &amp;&amp; !OS(WINCE)
&gt; 
&gt; I fixed it for win32: http://trac.webkit.org/changeset/56922 
&gt; (bug: https://bugs.webkit.org/show_bug.cgi?id=36929 ) ,
&gt; but not for wince. I think the correct solution is
&gt; adding Ole32 library instead of disable this feature.
&gt; 
&gt; Proposed fix uploaded into bug: https://bugs.webkit.org/show_bug.cgi?id=36929

I am not sure about DCOM support in WinCE but I&apos;ll take your word for it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221012</commentid>
    <comment_count>37</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-05-05 01:44:23 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; I am not sure about DCOM support in WinCE but I&apos;ll take your word for it.
&gt; Thanks!

CoCreateGuid: http://msdn.microsoft.com/en-us/library/ms863892.aspx
StringFromGUID2: http://msdn.microsoft.com/en-us/library/ms891281.aspx

Determining Supported COM APIs: http://msdn.microsoft.com/en-us/library/ms885910.aspx

StringFromGUID2 is supported by all API (Minimal COM Supported APIs, COM Supported APIs, and DCOM Supported APIs), but CoCreateGuid is supported by DCOM only. Should we support lesser API? (I&apos;m not a WinCE expert, not at all.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221013</commentid>
    <comment_count>38</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-05-05 01:48:56 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #36)
&gt; &gt; I am not sure about DCOM support in WinCE but I&apos;ll take your word for it.
&gt; &gt; Thanks!
&gt; 
&gt; CoCreateGuid: http://msdn.microsoft.com/en-us/library/ms863892.aspx
&gt; StringFromGUID2: http://msdn.microsoft.com/en-us/library/ms891281.aspx
&gt; 
&gt; Determining Supported COM APIs:
&gt; http://msdn.microsoft.com/en-us/library/ms885910.aspx
&gt; 
&gt; StringFromGUID2 is supported by all API (Minimal COM Supported APIs, COM
&gt; Supported APIs, and DCOM Supported APIs), but CoCreateGuid is supported by DCOM
&gt; only. Should we support lesser API? (I&apos;m not a WinCE expert, not at all.)

CoCreateGuid support seems to be implementation dependent. Using StringFromGUID2 might be a better idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221020</commentid>
    <comment_count>39</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-05-05 02:10:45 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; CoCreateGuid support seems to be implementation dependent. Using
&gt; StringFromGUID2 might be a better idea.
It seems CoCreateGuid is necessary, but we can create GUID from MAC address and timestamp with a new function. :) 

I don&apos;t think DCOM is too big expectation from a WebKit user. Or is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221022</commentid>
    <comment_count>40</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-05-05 02:14:36 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; CoCreateGuid support seems to be implementation dependent. Using
&gt; &gt; StringFromGUID2 might be a better idea.
&gt; It seems CoCreateGuid is necessary, but we can create GUID from MAC address and
&gt; timestamp with a new function. :) 
&gt; 
&gt; I don&apos;t think DCOM is too big expectation from a WebKit user. Or is it?

Its a big expectation, Qt has its own implementation called qt_CoCreateGuid just because Windows CE fails to implement this right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221024</commentid>
    <comment_count>41</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 02:14:59 -0700</bug_when>
    <thetext>&gt; It seems CoCreateGuid is necessary, but we can create GUID from MAC address and
&gt; timestamp with a new function. :) 

We specifically do not want to use the user&apos;s MAC address!

I continue to think we should just generate this string using a secure random
number generator instead of screwing around with these APIs.  They invite too
many security mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221030</commentid>
    <comment_count>42</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-05-05 02:32:17 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; Its a big expectation, Qt has its own implementation called qt_CoCreateGuid
&gt; just because Windows CE fails to implement this right.
OK, I respect it. My proposed patch in the another bug is necessary, it is unrelated to DCOM.

I can&apos;t find qt_CoCreateGuid, but QUuid class ( http://doc.trolltech.com/4.6/quuid.html ) It would be great an other patch to use it for Qt port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221032</commentid>
    <comment_count>43</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-05-05 02:34:06 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #40)
&gt; &gt; Its a big expectation, Qt has its own implementation called qt_CoCreateGuid
&gt; &gt; just because Windows CE fails to implement this right.
&gt; OK, I respect it. My proposed patch in the another bug is necessary, it is
&gt; unrelated to DCOM.
&gt; 
&gt; I can&apos;t find qt_CoCreateGuid, but QUuid class (
&gt; http://doc.trolltech.com/4.6/quuid.html ) It would be great an other patch to
&gt; use it for Qt port.

Yeah Qt port should use its own QUuid class, nice find. qt_CoCreateGuid is in qapplication.cpp not a public symbol.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51374</attachid>
            <date>2010-03-22 18:06:13 -0700</date>
            <delta_ts>2010-03-26 11:51:09 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>36472</filename>
            <type>text/plain</type>
            <size>2910</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmYzM2Y2MC4uNDNhOWRlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMy0yMiAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gY3JlYXRlIFVVSUQgc3RyaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NzIKKworICAgICAgICAq
IHBsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVVVUlEU3RyaW5nKToKKwogMjAx
MC0wMy0yMiAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybVN0cmluZy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5n
LmgKaW5kZXggYzg5NDZlMi4uYzhhMjRlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtU3RyaW5nLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
U3RyaW5nLmgKQEAgLTMyNCw2ICszMjQsOCBAQCBpbmxpbmUgdm9pZCBzd2FwKFN0cmluZyYgYSwg
U3RyaW5nJiBiKSB7IGEuc3dhcChiKTsgfQogCiAvLyBEZWZpbml0aW9ucyBvZiBzdHJpbmcgb3Bl
cmF0aW9ucwogCitTdHJpbmcgY3JlYXRlVVVJRFN0cmluZygpOworCiAjaWZkZWYgX19PQkpDX18K
IC8vIFRoaXMgaXMgZm9yIHNpdHVhdGlvbnMgaW4gV2ViS2l0IHdoZXJlIHRoZSBsb25nIHN0YW5k
aW5nIGJlaGF2aW9yIGhhcyBiZWVuCiAvLyAibmlsIGlmIGVtcHR5Iiwgc28gd2UgdHJ5IHRvIG1h
aW50YWluIGxvbmdzdGFuZGluZyBiZWhhdmlvciBmb3IgdGhlIHNha2Ugb2YKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1N0cmluZy5jcHAKaW5kZXggNGY0ZTM4NS4uNWQwNmU2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Zy5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0zNyw2ICszOCwxNCBAQAogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL1VURjguaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKKyNpZiBP
UyhXSU5ET1dTKQorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNlbGlmIE9TKERBUldJTikKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2VsaWYgT1MoTElOVVgpCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCiAjaWYgVVNFKEpTQykKICNpbmNsdWRlIDxydW50
aW1lL0lkZW50aWZpZXIuaD4KIApAQCAtOTUzLDYgKzk2MiwzOCBAQCB1bnNpZ25lZCBTdHJpbmc6
Om51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnModW5zaWduZWQgbnVtR3JhcGhlbWVDbHVz
dGVycykgYwogICAgIHJldHVybiB0ZXh0QnJlYWtDdXJyZW50KGl0KTsKIH0KIAorU3RyaW5nIGNy
ZWF0ZVVVSURTdHJpbmcoKSB7CisjaWYgT1MoV0lORE9XUykKKyAgICBHVUlEIGd1aWQgPSB7MH07
CisgICAgSFJFU1VMVCBociA9IENvQ3JlYXRlR3VpZCgmZ3VpZCk7CisgICAgQVNTRVJUKFNVQ0NF
RURFRChocikpOworICAgIFVDaGFyIGd1aWRTdHJbNDBdID0gezB9OworICAgIGludCBudW0gPSBT
dHJpbmdGcm9tR1VJRDIoZ3VpZCwgcmVpbnRlcnByZXRfY2FzdDxMUE9MRVNUUj4oZ3VpZFN0ciks
IEFSUkFZU0laRShndWlkU3RyKSk7CisgICAgQVNTRVJUKG51bSk7CisgICAgcmV0dXJuIFN0cmlu
ZyhndWlkU3RyICsgMSwgbnVtIC0gMykubG93ZXIoKTsgLy8gcmVtb3ZlIG9wZW5pbmcgYW5kIGNs
b3NpbmcgYnJhY2tldCBhbmQgbWFrZSBpdCBsb3dlci4KKyNlbGlmIE9TKERBUldJTikKKyAgICBD
RlVVSURSZWYgZ3VpZCA9IENGVVVJRENyZWF0ZShOVUxMKTsKKyAgICBDRlN0cmluZ1JlZiBndWlk
Q2ZTdHIgPSBDRlVVSURDcmVhdGVTdHJpbmcoTlVMTCwgZ3VpZCk7CisgICAgU3RyaW5nIGd1aWRT
dHIoZ3VpZENmU3RyKTsKKyAgICBDRlJlbGVhc2UoZ3VpZCk7CisgICAgQ0ZSZWxlYXNlKGd1aWRD
ZlN0cik7CisgICAgcmV0dXJuIGd1aWRTdHIubG93ZXIoKTsgLy8gbWFrZSBpdCBsb3dlci4KKyNl
bGlmIE9TKExJTlVYKQorICAgIEZJTEUqIGZwdHIgPSBmb3BlbigiL3Byb2Mvc3lzL2tlcm5lbC9y
YW5kb20vdXVpZCIsICJyIik7CisgICAgQVNTRVJUKGZwdHIpOworICAgIGlmIChmcHRyKSB7Cisg
ICAgICAgIGNoYXIgZ3VpZFN0clszN10gPSB7MH07CisgICAgICAgIGZnZXRzKGd1aWRTdHIsIHNp
emVvZihndWlkU3RyKSAtIDEsIGZwdHIpOworICAgICAgICBmY2xvc2UoZnB0cik7CisgICAgICAg
IHJldHVybiBTdHJpbmcoZ3VpZFN0cik7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
CisjZW5kaWYgICAgCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVC
VUcK
</data>
<flag name="review"
          id="34612"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="34613"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51768</attachid>
            <date>2010-03-26 11:51:09 -0700</date>
            <delta_ts>2010-03-30 18:35:42 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>36472_2</filename>
            <type>text/plain</type>
            <size>15749</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjZWEyOTc3Li5kNTQ4M2NjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTAtMDMtMjYgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIGNy
ZWF0ZSBVVUlEIHN0cmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2NDcyCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5leHA6IGFkZGVkIGV4cG9ydCBmb3IgV1RGOjpjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5wcmk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjogYWRkZWQgZXhwb3J0IGZvciBXVEY6OmNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dU
Ri52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKToKKyAgICAgICAgKiB3dGYvVVVJRC5oOiBBZGRlZC4KKwog
MjAxMC0wMy0yMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtIGIvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggODRiN2Q4My4u
NjkwZTEyZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI4MCw2ICsyODAsOCBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5jcHAg
XAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0
Zi9VbnVzZWRQYXJhbS5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvVVVJRC5jcHAgXAorCUphdmFT
Y3JpcHRDb3JlL3d0Zi9VVUlELmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9WYWx1ZUNoZWNrLmgg
XAogCUphdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1Zl
Y3RvclRyYWl0cy5oIFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBmODhjOTNjLi44
NDEyYjdjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zNDQsNiArMzQ0LDcgQEAg
X19aTjNXVEYyMVJlZkNvdW50ZWRMZWFrQ291bnRlckQxRXYKIF9fWk4zV1RGMjNjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdEVQRnZQdkVTMF8KIF9fWk4zV1RGMjNkYXlJbk1vbnRoRnJvbURheUluWWVh
ckVpYgogX19aTjNXVEYyM3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uRWpQUHYKK19fWk4zV1RGMjVj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nRVBjaQogX19aTjNXVEYyN3JlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeUV2CiBfX1pOM1dURjI4c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZEViCiBf
X1pOM1dURjMyZG91YmxlVG9TdHJpbmdJbkphdmFTY3JpcHRGb3JtYXRFZFBjUGoKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IGU1ZjM0MDguLmY4OTE2NmMgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQpAQCAtNDI4LDYgKzQyOCw4IEBACiAgICAgICAgICAgICAnd3RmL3Vu
aWNvZGUvVVRGOC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL1VURjguaCcsCiAgICAg
ICAgICAgICAnd3RmL1VudXNlZFBhcmFtLmgnLAorICAgICAgICAgICAgJ3d0Zi9VVUlELmNwcCcs
CisgICAgICAgICAgICAnd3RmL1VVSUQuaCcsCiAgICAgICAgICAgICAnd3RmL1ZhbHVlQ2hlY2su
aCcsCiAgICAgICAgICAgICAnd3RmL1ZlY3Rvci5oJywKICAgICAgICAgICAgICd3dGYvVmVjdG9y
VHJhaXRzLmgnLApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJp
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCmluZGV4IGUyNTJlYmUuLjEyYjIw
YTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQorKysgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKQEAgLTIyMSw2ICsyMjEsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICB3dGYvdW5pY29kZS9Db2xsYXRvckRlZmF1bHQuY3BwIFwKICAgICB3dGYv
dW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIFwKICAgICB3dGYvdW5pY29kZS9VVEY4LmNwcCBc
CisgICAgd3RmL1VVSUQuY3BwIFwKICAgICB5YXJyL1JlZ2V4Q29tcGlsZXIuY3BwIFwKICAgICB5
YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwIFwKICAgICB5YXJyL1JlZ2V4SklULmNwcApkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmRlZiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggMjk5ZTkzYi4uYzdiNWJk
ZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC03MSw2
ICs3MSw3IEBAIEVYUE9SVFMKICAgICA/Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBYWgogICAgID9jcmVhdGVAT3BhcXVl
SlNTdHJpbmdAQFNBP0FWPyRQYXNzUmVmUHRyQFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0
cmluZ0BKU0NAQEBaCiAgICAgP2NyZWF0ZUBVU3RyaW5nSW1wbEBKU0NAQFNBP0FWPyRQYXNzUmVm
UHRyQFZVU3RyaW5nSW1wbEBKU0NAQEBXVEZAQFY/JFBhc3NSZWZQdHJAVj8kQ3Jvc3NUaHJlYWRS
ZWZDb3VudGVkQFY/JE93bkZhc3RNYWxsb2NQdHJAJCRDQl9XQFdURkBAQFdURkBAQDRAUEJfV0lA
WgorICAgID9jcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nQFdURkBAWUFIUEFESEBaCiAgICAgP2Ny
ZWF0ZUVtcHR5U3RyaW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBA
WgogICAgID9jcmVhdGVJbmhlcml0b3JJREBKU09iamVjdEBKU0NAQEFBRVBBVlN0cnVjdHVyZUAy
QFhaCiAgICAgP2NyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uQEpTQ0BAWUE/QVZK
U1ZhbHVlQDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvaiBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCBjNWI4MjZjLi45Y2I0ZWI5
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dU
Ri52Y3Byb2oKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9X
VEYudmNwcm9qCkBAIC01NDUsNiArNTQ1LDE0IEBACiAJCQk+DQogCQk8L0ZpbGU+DQogCQk8Rmls
ZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFVVSUQuY3BwIg0KKwkJCT4NCisJCTwvRmls
ZT4NCisJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVVVJRC5oIg0KKwkJCT4N
CisJCTwvRmlsZT4NCisJCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVmFsdWVD
aGVjay5oIg0KIAkJCT4NCiAJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NGM1MjBjLi41
MmE0ZDk1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3MCw2ICs0NzAsOCBAQAogCQlFMUVGNzlBQTBD
RTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUVGNzlBODBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgKi87
IH07CiAJCUU0OEUwRjJEMEY4MjE1MTcwMEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDhFMEYyQzBGODIxNTE3
MDBBOENBMzcgLyogRmFzdEFsbG9jQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFMUI0NDdBMEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJF
eHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MUI0NDc5MEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRTRFMDcwMDExNTkzOUIzMDA0RkFC
NkMgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTRFMDY3NTExNTkzOUIzMDA0RkFCNkMgLyogVVVJRC5jcHAgKi87IH07CisJCTJFNEUw
NzAxMTE1OTM5QjMwMDRGQUI2QyAvKiBVVUlELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTRFMDY3NjExNTkzOUIzMDA0RkFCNkMgLyogVVVJRC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KQEAgLTY0Niw2ICs2NDgsOCBAQAogCQkxQzkwNTE0NTBCQTlFOEE3MDA4MUU5RDAg
LyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FBOEI0QTBEMzJDMzlBMDA0
MUJDRkYgLyogSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
YXZhU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUE4QjRCMEQzMkMz
OUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
RTRFMDY3NTExNTkzOUIzMDA0RkFCNkMgLyogVVVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkU0RTA2NzYxMTU5MzlCMzAwNEZBQjZDIC8qIFVVSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNG
NDBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTM1OUNGNTBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDQwQjdBRUQwRkFGN0ZDQjAwNzMzMjNFIC8qIE93blB0ckNvbW1vbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPd25QdHJDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNjQsNiArMTM2OCw4IEBACiAJCQkJMEIzMzBDMjYwRjM4QzYyMzAwNjky
REUzIC8qIFR5cGVUcmFpdHMuY3BwICovLAogCQkJCTBCNEQ3RTYyMEYzMTlBQzgwMEFEN0U1OCAv
KiBUeXBlVHJhaXRzLmggKi8sCiAJCQkJOTM1QUY0NkIwOUU5RDlEQjAwQUNEMUQ4IC8qIFVudXNl
ZFBhcmFtLmggKi8sCisJCQkJMkU0RTA2NzUxMTU5MzlCMzAwNEZBQjZDIC8qIFVVSUQuY3BwICov
LAorCQkJCTJFNEUwNjc2MTE1OTM5QjMwMDRGQUI2QyAvKiBVVUlELmggKi8sCiAJCQkJRTE3RkY3
NzAxMTIxMzFEMjAwMDc2QTE5IC8qIFZhbHVlQ2hlY2suaCAqLywKIAkJCQk2NTkyQzMxNjA5OEI3
REUxMDAwM0Q0RjYgLyogVmVjdG9yLmggKi8sCiAJCQkJNjU5MkMzMTcwOThCN0RFMTAwMDNENEY2
IC8qIFZlY3RvclRyYWl0cy5oICovLApAQCAtMTk5NSw2ICsyMDAxLDcgQEAKIAkJCQlCQzE4QzQ3
NjBFMTZGNUNEMDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY5OEJC
MzkxMEQ4NkJBRjAwRDhEMDFCIC8qIFVTdHJpbmdJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ3NzBFMTZGNUNEMDBCMzQ0NjAgLyogVVRGOC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkU0
RTA3MDExMTU5MzlCMzAwNEZBQjZDIC8qIFVVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxN0ZG
NzcxMTEyMTMxRDIwMDA3NkExOSAvKiBWYWx1ZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ3ODBFMTZGNUNEMDBCMzQ0NjAgLyogVmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ3OTBFMTZGNUNEMDBCMzQ0NjAgLyogVmVjdG9yVHJhaXRzLmggaW4gSGVhZGVycyAqLywK
QEAgLTI0NDYsNiArMjQ1Myw3IEBACiAJCQkJMTQ0NjlERUUxMDdFQzdFNzAwNjUwNDQ2IC8qIFVT
dHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY5OEJCM0ExMEQ4NkJBRjAwRDhEMDFCIC8q
IFVTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUY3OUFBMENFOTdCQTYwMDg4
RDUwMCAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFNEUwNzAwMTE1OTM5QjMwMDRG
QUI2QyAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL1VVSUQuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL1VVSUQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YjEzODIKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZh
U2NyaXB0Q29yZS93dGYvVVVJRC5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJVVUlELmgiCisKKyNpbmNsdWRlICJBU0NJSUNUeXBlLmgiCisKKyNpZiBP
UyhXSU5ET1dTKQorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNlbGlmIE9TKERBUldJTikKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2VsaWYgT1MoTElOVVgpCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworaW50IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoY2hhciogYnVmZmVyLCBpbnQgc2l6ZSkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IHV1aWRTdHJpbmdMZW5ndGggPSAzNzsKKyAgICBpZiAoIWJ1ZmZlciB8fCBz
aXplIDwgdXVpZFN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbWVtc2V0KGJ1
ZmZlciwgMCwgc2l6ZSk7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIEdVSUQgdXVpZCA9IHsgMCB9
OworICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUd1aWQoJnV1aWQpOworICAgIEFTU0VSVChTVUND
RUVERUQoaHIpKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
d2NoYXJfdCB1dWlkU3RyWzQwXTsKKyAgICBpbnQgbnVtID0gU3RyaW5nRnJvbUdVSUQyKHV1aWQs
IHJlaW50ZXJwcmV0X2Nhc3Q8TFBPTEVTVFI+KHV1aWRTdHIpLCBBUlJBWVNJWkUodXVpZFN0cikp
OworICAgIEFTU0VSVChudW0gJiYgbnVtID09IHV1aWRTdHJpbmdMZW5ndGggKyAyKTsKKyAgICAv
LyBSZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0cyBhbmQgY29udmVydCB0byBsb3dl
ciBjYXNlcy4KKyAgICBmb3IgKGludCBpID0gMTsgaSA8IG51bSAtIDE7IGkrKykgeworICAgICAg
ICBjaGFyIGNoID0gc3RhdGljX2Nhc3Q8Y2hhcj4odXVpZFN0cltpXSk7IC8vIENhc3QgZnJvbSB3
Y2hhcl90IHRvIGNoYXIgYmVjYXVzZSBvbmx5IEFTQ0lJIGNoYXJhY3RlciBpcyBpbnZvbHZlZC4K
KyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjaCkpCisgICAgICAgICAgICBjaCA9IHRvQVNDSUlM
b3dlcihjaCk7CisgICAgICAgIGJ1ZmZlcltpIC0gMV0gPSBjaDsKKyAgICB9CisgICAgcmV0dXJu
IHV1aWRTdHJpbmdMZW5ndGg7CisjZWxpZiBPUyhEQVJXSU4pCisgICAgQ0ZVVUlEUmVmIHV1aWQg
PSBDRlVVSURDcmVhdGUoMCk7CisgICAgQ0ZTdHJpbmdSZWYgdXVpZFN0ciA9IENGVVVJRENyZWF0
ZVN0cmluZygwLCB1dWlkKTsKKyAgICBCb29sZWFuIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJp
bmcodXVpZFN0ciwgYnVmZmVyLCB1dWlkU3RyaW5nTGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgpOworICAgIENGUmVsZWFzZSh1dWlkU3RyKTsKKyAgICBDRlJlbGVhc2UodXVpZCk7CisgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gMDsKKyAgICAvLyBDb252ZXJ0IHRvIGxvd2Vy
IGNhc2VzLgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXVpZFN0cmluZ0xlbmd0aCAmJiBidWZm
ZXJbaV07IGkrKykgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGJ1ZmZlcltpXSkpCisgICAg
ICAgICAgICBidWZmZXJbaV0gPSB0b0FTQ0lJTG93ZXIoYnVmZmVyW2ldKTsKKyAgICB9CisgICAg
cmV0dXJuIHV1aWRTdHJpbmdMZW5ndGg7CisjZWxpZiBPUyhMSU5VWCkKKyAgICBGSUxFKiBmcHRy
ID0gZm9wZW4oIi9wcm9jL3N5cy9rZXJuZWwvcmFuZG9tL3V1aWQiLCAiciIpOworICAgIEFTU0VS
VChmcHRyKTsKKyAgICBpZiAoIWZwdHIpCisgICAgICAgIHJldHVybiAwOworICAgIGNoYXIqIHN0
ciA9IGZnZXRzKGJ1ZmZlciwgdXVpZFN0cmluZ0xlbmd0aCAtIDEsIGZwdHIpOworICAgIGZjbG9z
ZShmcHRyKTsKKyAgICByZXR1cm4gc3RyID8gdXVpZFN0cmluZ0xlbmd0aCA6IDA7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmICAgIAorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9VVUlELmggYi9KYXZhU2NyaXB0Q29yZS93dGYvVVVJ
RC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNzM1ZmYKLS0tIC9kZXYv
bnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVVVJRC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFVVSURfaAorI2RlZmluZSBVVUlEX2gKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICAvLyBD
cmVhdGVzIGEgVVVJRCB0aGF0IGNvbnNpc3RzIG9mIDMyIGhleGFkZWNpbWFsIGRpZ2l0cyBhbmQg
d3JpdGVzIGl0cyBjYW5vbmljYWwgZm9ybSB0byB0aGUgcHJvdmlkZWQgYnVmZmVyLgorICAgIC8v
IFRoZSBjYW5vbmljYWwgZm9ybSBpcyBkaXNwbGF5ZWQgaW4gNSBncm91cHMgc2VwYXJhdGVkIGJ5
IGh5cGhlbnMsIGluIHRoZSBmb3JtIDgtNC00LTQtMTIgZm9yIGEgdG90YWwgb2YgMzYgY2hhcmFj
dGVycy4KKyAgICAvLyBUaGUgaGV4YWRlY2ltYWwgdmFsdWVzICJhIiB0aHJvdWdoICJmIiBhcmUg
b3V0cHV0IGFzIGxvd2VyIGNhc2UgY2hhcmFjdGVycy4KKyAgICAvLyBJZiB0aGUgYnVmZmVyIGlz
IHRvbyBzbWFsbCBmb3IgdGhlIFVVSUQgc3RyaW5nLCB0aGUgcmV0dXJuIHZhbHVlIGlzIDAuCisg
ICAgaW50IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoY2hhciogYnVmZmVyLCBpbnQgc2l6ZSk7
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OmNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmc7CisKKyNlbmRpZiAvLyBVVUlEX2gKKwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nIGIvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IDIyZDJhZWQuLmIxMTU0
OWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0yNiAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gY3JlYXRlIFVVSUQgc3RyaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NzIKKworICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9VVUlELmg6IEFkZGVkLgorCiAyMDEwLTAzLTExICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2ls
emVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1VV
SUQuaCBiL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9VVUlELmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmY2I5OQotLS0gL2Rldi9udWxsCisrKyBi
L0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9VVUlELmgKQEAgLTAsMCArMSBA
QAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VVSUQuaD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkwNDY4MC4uMDk0NjE0ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMC0wMy0yNiAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgdG8gY3JlYXRlIFVVSUQgc3RyaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NzIKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9VVUlELmg6IEFkZGVkLgorCiAyMDEwLTAzLTIzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9VVUlELmggYi9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9VVUlELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTZkOWVlYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1VVSUQuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVVVJ
RF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VVSURfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1VVSUQuaD4KKyNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="35108"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52115</attachid>
            <date>2010-03-30 18:35:42 -0700</date>
            <delta_ts>2010-03-31 11:12:04 -0700</delta_ts>
            <desc>Revised Patch</desc>
            <filename>36472_3</filename>
            <type>text/plain</type>
            <size>11745</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTU0YzA0ZC4uMzczOWM2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0zMCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkK
KworICAgICAgICBBZGQgc3VwcG9ydCB0byBjcmVhdGUgVVVJRCBzdHJpbmcuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ3MgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9VVUlELmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VVUlELmg6IEFkZGVkLgorCiAyMDEwLTAzLTMw
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOWVlMmE3Ni4uNjlkZGE0MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNTU0
LDYgKzE1NTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vVGlt
ZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
VHJlZVNoYXJlZC5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwIFwKKwlXZWJDb3JlL3Bs
YXRmb3JtL1VVSUQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1dpbmRvd3NLZXlib2FyZENv
ZGVzLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA1MDllZDgxLi4xM2UwMjNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjg5OSw2ICsyODk5LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RyZWVTaGFyZWQuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vVVVJRC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1VVSUQuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vV2lkZ2V0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vV2lkZ2V0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpbmRvd3NLZXlib2FyZENvZGVz
LmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggNzIzMDEyNS4uZjgyYmJlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC04OTUsNiArODk1LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBcCiAgICAgcGxhdGZvcm0vVGltZXIu
Y3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVSYW5nZS5jcHAgXAorICAgIHBsYXRmb3Jt
L1VVSUQuY3BwIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EZWJ1Zy5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOTQ5NjdkNS4uY2YzM2VkNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMjE0MSw2ICsyMjE0MSwxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxVVUlELmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXFVVSUQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFdpZGdldC5jcHAiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBlODBhNmZiLi5kNjFjOGY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjA1LDYgKzYwNSw4IEBACiAJCTJFMkQ5OUVBMTBFMkJDMzgwMDQ5NjMzNyAv
KiBET01CbG9iSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMkQ5OUU5MTBFMkJDMzgwMDQ5NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCAq
LzsgfTsKIAkJMkUyRDk5RUIxMEUyQkQzOTAwNDk2MzM3IC8qIERPTUJsb2IuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMkQ5
OUU1MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9iLmggKi87IH07CiAJCTJFMkQ5OUVDMTBFMkJE
MzkwMDQ5NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMkQ5OUU5MTBFMkJDMzgwMDQ5
NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCAqLzsgfTsKKwkJMkUzQkJGMDcxMTYyREExMTAwQjk0
MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUzQkJGMDUxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3BwICovOyB9OworCQkyRTNC
QkYwODExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAq
LzsgfTsKIAkJMkU0MzQ2NDQwRjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMjBG
NTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLzsgfTsKIAkJMkU0MzQ2NDUw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNw
cCAqLzsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlci5oICovOyB9OwpAQCAtNTk5Niw2ICs1OTk4LDggQEAKIAkJMkUyRDk5
RTUxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTJEOTlF
NjEwRTJCQzFDMDA0OTYzMzcgLyogRE9NQmxvYi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTUJsb2IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFMkQ5OUU5MTBFMkJDMzgwMDQ5NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQmxvYkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFM0JCRjA1MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRTNCQkYwNjExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFNDM0NjMyMEY1NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29ya2VyVGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW5lcmljV29ya2VyVGFzay5oOyBw
YXRoID0gd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlci5jcHA7IHBhdGggPSB3b3JrZXJzL1dv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29y
a2VyLmg7IHBhdGggPSB3b3JrZXJzL1dvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTU0MjIsNiArMTU0MjYsOCBAQAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAv
KiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmgg
Ki8sCiAJCQkJMTQxOUQyQzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKKwkJ
CQkyRTNCQkYwNTExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgKi8sCisJCQkJMkUzQkJGMDYx
MTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLywKIAkJCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRC
MzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyogV2lk
Z2V0LmggKi8sCiAJCQkJRTFFMUJFRkYxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2Fy
ZENvZGVzLmggKi8sCkBAIC0xODc2OCw2ICsxODc3NCw3IEBACiAJCQkJRTQ3NzhCODAxMTVBNTgx
QTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAw
MTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8qIFJlbmRlclNWR1Jlc291cmNlTWFya2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNCQkYwODExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMDk4Miw2ICsyMDk4OSw3IEBACiAJCQkJNjJDRDMyNTkxMTU3
RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0Nzc4
QjdGMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg0OTlBNTE0MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyRTNCQkYwNzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRiYzY1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQu
Y3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
KiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPG9i
amJhc2UuaD4KKyNlbGlmIE9TKERBUldJTikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorI2VsaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIEdVSUQgdXVpZCA9IHsgMCB9OworICAgIEhS
RVNVTFQgaHIgPSBDb0NyZWF0ZUd1aWQoJnV1aWQpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIp
KTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHdj
aGFyX3QgdXVpZFN0cls0MF07CisgICAgaW50IG51bSA9IFN0cmluZ0Zyb21HVUlEMih1dWlkLCBy
ZWludGVycHJldF9jYXN0PExQT0xFU1RSPih1dWlkU3RyKSwgQVJSQVlTSVpFKHV1aWRTdHIpKTsK
KyAgICBBU1NFUlQobnVtID09IDM5KTsKKyAgICByZXR1cm4gU3RyaW5nKHV1aWRTdHIgKyAxLCBu
dW0gLSAzKS5sb3dlcigpOyAvLyByZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0IGFu
ZCBtYWtlIGl0IGxvd2VyLgorI2VsaWYgT1MoREFSV0lOKQorICAgIENGVVVJRFJlZiB1dWlkID0g
Q0ZVVUlEQ3JlYXRlKDApOworICAgIENGU3RyaW5nUmVmIHV1aWRTdHJSZWYgPSBDRlVVSURDcmVh
dGVTdHJpbmcoMCwgdXVpZCk7CisgICAgU3RyaW5nIHV1aWRTdHIodXVpZFN0clJlZik7CisgICAg
Q0ZSZWxlYXNlKHV1aWRTdHJSZWYpOworICAgIENGUmVsZWFzZSh1dWlkKTsKKyAgICByZXR1cm4g
dXVpZFN0ci5sb3dlcigpOyAvLyBtYWtlIGl0IGxvd2VyLgorI2VsaWYgT1MoTElOVVgpCisgICAg
RklMRSogZnB0ciA9IGZvcGVuKCIvcHJvYy9zeXMva2VybmVsL3JhbmRvbS91dWlkIiwgInIiKTsK
KyAgICBBU1NFUlQoZnB0cik7CisgICAgaWYgKCFmcHRyKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgY2hhciB1dWlkU3RyWzM3XSA9IHswfTsKKyAgICBmZ2V0cyh1dWlkU3RyLCBzaXpl
b2YodXVpZFN0cikgLSAxLCBmcHRyKTsKKyAgICBmY2xvc2UoZnB0cik7CisgICAgcmV0dXJuIFN0
cmluZyh1dWlkU3RyKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKKyNlbmRpZiAgICAKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9VVUlE
LmggYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hODVhYmVjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9VVUlE
LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisq
IG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFVVSURfaAorI2RlZmluZSBVVUlEX2gKKworI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIC8vIENyZWF0ZXMg
YSBVVUlEIHRoYXQgY29uc2lzdHMgb2YgMzIgaGV4YWRlY2ltYWwgZGlnaXRzIGFuZCByZXR1cm5z
IGl0cyBjYW5vbmljYWwgZm9ybS4KKyAgICAvLyBUaGUgY2Fub25pY2FsIGZvcm0gaXMgZGlzcGxh
eWVkIGluIDUgZ3JvdXBzIHNlcGFyYXRlZCBieSBoeXBoZW5zLCBpbiB0aGUgZm9ybSA4LTQtNC00
LTEyIGZvciBhIHRvdGFsIG9mIDM2IGNoYXJhY3RlcnMuCisgICAgLy8gVGhlIGhleGFkZWNpbWFs
IHZhbHVlcyAiYSIgdGhyb3VnaCAiZiIgYXJlIG91dHB1dCBhcyBsb3dlciBjYXNlIGNoYXJhY3Rl
cnMuCisgICAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKworfQorCisjZW5k
aWYK
</data>
<flag name="commit-queue"
          id="35520"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52189</attachid>
            <date>2010-03-31 11:12:04 -0700</date>
            <delta_ts>2010-03-31 13:09:31 -0700</delta_ts>
            <desc>Fix style error</desc>
            <filename>36472_4</filename>
            <type>text/plain</type>
            <size>11729</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTU0YzA0ZC4uMzczOWM2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0zMCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkK
KworICAgICAgICBBZGQgc3VwcG9ydCB0byBjcmVhdGUgVVVJRCBzdHJpbmcuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ3MgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9VVUlELmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VVUlELmg6IEFkZGVkLgorCiAyMDEwLTAzLTMw
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOWVlMmE3Ni4uNjlkZGE0MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNTU0
LDYgKzE1NTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vVGlt
ZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
VHJlZVNoYXJlZC5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwIFwKKwlXZWJDb3JlL3Bs
YXRmb3JtL1VVSUQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1dpbmRvd3NLZXlib2FyZENv
ZGVzLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA1MDllZDgxLi4xM2UwMjNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjg5OSw2ICsyODk5LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1RyZWVTaGFyZWQuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vVVVJRC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1VVSUQuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vV2lkZ2V0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vV2lkZ2V0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpbmRvd3NLZXlib2FyZENvZGVz
LmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggNzIzMDEyNS4uZjgyYmJlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC04OTUsNiArODk1LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBcCiAgICAgcGxhdGZvcm0vVGltZXIu
Y3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVSYW5nZS5jcHAgXAorICAgIHBsYXRmb3Jt
L1VVSUQuY3BwIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EZWJ1Zy5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOTQ5NjdkNS4uY2YzM2VkNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMjE0MSw2ICsyMjE0MSwxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxVVUlELmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXFVVSUQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFdpZGdldC5jcHAiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBlODBhNmZiLi5kNjFjOGY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjA1LDYgKzYwNSw4IEBACiAJCTJFMkQ5OUVBMTBFMkJDMzgwMDQ5NjMzNyAv
KiBET01CbG9iSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMkQ5OUU5MTBFMkJDMzgwMDQ5NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCAq
LzsgfTsKIAkJMkUyRDk5RUIxMEUyQkQzOTAwNDk2MzM3IC8qIERPTUJsb2IuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMkQ5
OUU1MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9iLmggKi87IH07CiAJCTJFMkQ5OUVDMTBFMkJE
MzkwMDQ5NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMkQ5OUU5MTBFMkJDMzgwMDQ5
NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCAqLzsgfTsKKwkJMkUzQkJGMDcxMTYyREExMTAwQjk0
MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUzQkJGMDUxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3BwICovOyB9OworCQkyRTNC
QkYwODExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAq
LzsgfTsKIAkJMkU0MzQ2NDQwRjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMjBG
NTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLzsgfTsKIAkJMkU0MzQ2NDUw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNw
cCAqLzsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlci5oICovOyB9OwpAQCAtNTk5Niw2ICs1OTk4LDggQEAKIAkJMkUyRDk5
RTUxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTJEOTlF
NjEwRTJCQzFDMDA0OTYzMzcgLyogRE9NQmxvYi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTUJsb2IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFMkQ5OUU5MTBFMkJDMzgwMDQ5NjMzNyAvKiBET01CbG9iSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQmxvYkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFM0JCRjA1MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRTNCQkYwNjExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFNDM0NjMyMEY1NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29ya2VyVGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW5lcmljV29ya2VyVGFzay5oOyBw
YXRoID0gd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlci5jcHA7IHBhdGggPSB3b3JrZXJzL1dv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29y
a2VyLmg7IHBhdGggPSB3b3JrZXJzL1dvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTU0MjIsNiArMTU0MjYsOCBAQAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAv
KiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmgg
Ki8sCiAJCQkJMTQxOUQyQzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKKwkJ
CQkyRTNCQkYwNTExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgKi8sCisJCQkJMkUzQkJGMDYx
MTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLywKIAkJCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRC
MzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyogV2lk
Z2V0LmggKi8sCiAJCQkJRTFFMUJFRkYxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2Fy
ZENvZGVzLmggKi8sCkBAIC0xODc2OCw2ICsxODc3NCw3IEBACiAJCQkJRTQ3NzhCODAxMTVBNTgx
QTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTFCRjAw
MTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8qIFJlbmRlclNWR1Jlc291cmNlTWFya2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNCQkYwODExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMDk4Miw2ICsyMDk4OSw3IEBACiAJCQkJNjJDRDMyNTkxMTU3
RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0Nzc4
QjdGMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg0OTlBNTE0MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyRTNCQkYwNzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRiYzY1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQu
Y3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
KiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPG9i
amJhc2UuaD4KKyNlbGlmIE9TKERBUldJTikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorI2VsaWYgT1MoTElOVVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIEdVSUQgdXVpZCA9IHsgMCB9OworICAgIEhS
RVNVTFQgaHIgPSBDb0NyZWF0ZUd1aWQoJnV1aWQpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIp
KTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHdj
aGFyX3QgdXVpZFN0cls0MF07CisgICAgaW50IG51bSA9IFN0cmluZ0Zyb21HVUlEMih1dWlkLCBy
ZWludGVycHJldF9jYXN0PExQT0xFU1RSPih1dWlkU3RyKSwgQVJSQVlTSVpFKHV1aWRTdHIpKTsK
KyAgICBBU1NFUlQobnVtID09IDM5KTsKKyAgICByZXR1cm4gU3RyaW5nKHV1aWRTdHIgKyAxLCBu
dW0gLSAzKS5sb3dlcigpOyAvLyByZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0IGFu
ZCBtYWtlIGl0IGxvd2VyLgorI2VsaWYgT1MoREFSV0lOKQorICAgIENGVVVJRFJlZiB1dWlkID0g
Q0ZVVUlEQ3JlYXRlKDApOworICAgIENGU3RyaW5nUmVmIHV1aWRTdHJSZWYgPSBDRlVVSURDcmVh
dGVTdHJpbmcoMCwgdXVpZCk7CisgICAgU3RyaW5nIHV1aWRTdHIodXVpZFN0clJlZik7CisgICAg
Q0ZSZWxlYXNlKHV1aWRTdHJSZWYpOworICAgIENGUmVsZWFzZSh1dWlkKTsKKyAgICByZXR1cm4g
dXVpZFN0ci5sb3dlcigpOyAvLyBtYWtlIGl0IGxvd2VyLgorI2VsaWYgT1MoTElOVVgpCisgICAg
RklMRSogZnB0ciA9IGZvcGVuKCIvcHJvYy9zeXMva2VybmVsL3JhbmRvbS91dWlkIiwgInIiKTsK
KyAgICBBU1NFUlQoZnB0cik7CisgICAgaWYgKCFmcHRyKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgY2hhciB1dWlkU3RyWzM3XSA9IHswfTsKKyAgICBmZ2V0cyh1dWlkU3RyLCBzaXpl
b2YodXVpZFN0cikgLSAxLCBmcHRyKTsKKyAgICBmY2xvc2UoZnB0cik7CisgICAgcmV0dXJuIFN0
cmluZyh1dWlkU3RyKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKKyNlbmRpZiAgICAKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9VVUlE
LmggYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43Y2MyNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9VVUlE
LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisq
IG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFVVSURfaAorI2RlZmluZSBVVUlEX2gKKworI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQ3JlYXRlcyBhIFVV
SUQgdGhhdCBjb25zaXN0cyBvZiAzMiBoZXhhZGVjaW1hbCBkaWdpdHMgYW5kIHJldHVybnMgaXRz
IGNhbm9uaWNhbCBmb3JtLgorLy8gVGhlIGNhbm9uaWNhbCBmb3JtIGlzIGRpc3BsYXllZCBpbiA1
IGdyb3VwcyBzZXBhcmF0ZWQgYnkgaHlwaGVucywgaW4gdGhlIGZvcm0gOC00LTQtNC0xMiBmb3Ig
YSB0b3RhbCBvZiAzNiBjaGFyYWN0ZXJzLgorLy8gVGhlIGhleGFkZWNpbWFsIHZhbHVlcyAiYSIg
dGhyb3VnaCAiZiIgYXJlIG91dHB1dCBhcyBsb3dlciBjYXNlIGNoYXJhY3RlcnMuCitTdHJpbmcg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="35598"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="35599"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52200</attachid>
            <date>2010-03-31 13:09:31 -0700</date>
            <delta_ts>2010-03-31 14:37:09 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>36472_5</filename>
            <type>text/plain</type>
            <size>11633</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTU0YzA0ZC4uMTVlNDZhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMy0zMCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gY3JlYXRlIFVVSUQgc3RyaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NzIKKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vVVVJRC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vVVVJRC5oOiBBZGRlZC4KKwogMjAxMC0wMy0z
MCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDllZTJhNzYuLjY5ZGRhNDAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTU1
NCw2ICsxNTU0LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oIFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L1RyZWVTaGFyZWQuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9VVUlELmggXAogCVdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNTA5ZWQ4MS4uMTNlMDIzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4OTksNiArMjg5OSw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vVGltZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9UaW1lci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9UcmVlU2hhcmVkLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL1VVSUQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9VVUlELmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1dpZGdldC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1dpZGdldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9XaW5kb3dzS2V5Ym9hcmRDb2Rl
cy5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IDcyMzAxMjUuLmY4MmJiZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODk1LDYgKzg5NSw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAgXAogICAgIHBsYXRmb3JtL1RpbWVy
LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9Vbmljb2RlUmFuZ2UuY3BwIFwKKyAgICBwbGF0Zm9y
bS9VVUlELmNwcCBcCiAgICAgcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAgICAgcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luRGVidWcuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDk0OTY3ZDUuLmNmMzNlZDYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjIxNDEsNiArMjIxNDEsMTQgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cVVVJRC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxVVUlELmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxXaWRnZXQuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZTgwYTZmYi4uZDYxYzhmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYwNSw2ICs2MDUsOCBAQAogCQkyRTJEOTlFQTEwRTJCQzM4MDA0OTYzMzcg
LyogRE9NQmxvYkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRTJEOTlFOTEwRTJCQzM4MDA0OTYzMzcgLyogRE9NQmxvYkludGVybmFsLmgg
Ki87IH07CiAJCTJFMkQ5OUVCMTBFMkJEMzkwMDQ5NjMzNyAvKiBET01CbG9iLmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTJE
OTlFNTEwRTJCQzFDMDA0OTYzMzcgLyogRE9NQmxvYi5oICovOyB9OwogCQkyRTJEOTlFQzEwRTJC
RDM5MDA0OTYzMzcgLyogRE9NQmxvYkludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTJEOTlFOTEwRTJCQzM4MDA0
OTYzMzcgLyogRE9NQmxvYkludGVybmFsLmggKi87IH07CisJCTJFM0JCRjA3MTE2MkRBMTEwMEI5
NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFM0JCRjA1MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmNwcCAqLzsgfTsKKwkJMkUz
QkJGMDgxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0JCRjA2MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmgg
Ki87IH07CiAJCTJFNDM0NjQ0MEY1NDZBODIwMEIwRjFCQSAvKiBHZW5lcmljV29ya2VyVGFzay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzIw
RjU0NkE4MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi87IH07CiAJCTJFNDM0NjQ1
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5j
cHAgKi87IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKQEAgLTU5OTYsNiArNTk5OCw4IEBACiAJCTJFMkQ5
OUU1MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUyRDk5
RTYxMEUyQkMxQzAwNDk2MzM3IC8qIERPTUJsb2IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01CbG9iLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTJEOTlFOTEwRTJCQzM4MDA0OTYzMzcgLyogRE9NQmxvYkludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUJsb2JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRTNCQkYwNTExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVUlELmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2VuZXJpY1dvcmtlclRhc2suaDsg
cGF0aCA9IHdvcmtlcnMvR2VuZXJpY1dvcmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9X
b3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdv
cmtlci5oOyBwYXRoID0gd29ya2Vycy9Xb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NDIyLDYgKzE1NDI2LDggQEAKIAkJCQk5MzMwOUVBMTA5OUVCNzhDMDA1NkU1ODEg
LyogVGltZXIuY3BwICovLAogCQkJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5o
ICovLAogCQkJCTE0MTlEMkM0MENFQTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggKi8sCisJ
CQkJMkUzQkJGMDUxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuY3BwICovLAorCQkJCTJFM0JCRjA2
MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggKi8sCiAJCQkJOTM4MEY0NzEwOUExMUFCNDAwMUZE
QjM0IC8qIFdpZGdldC5jcHAgKi8sCiAJCQkJOTM4MEY0NzIwOUExMUFCNDAwMUZEQjM0IC8qIFdp
ZGdldC5oICovLAogCQkJCUUxRTFCRUZGMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oICovLApAQCAtMTg3NjgsNiArMTg3NzQsNyBAQAogCQkJCUU0Nzc4QjgwMTE1QTU4
MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYw
MDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0OTlBNTE1MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkUzQkJGMDgxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjA5ODIsNiArMjA5ODksNyBAQAogCQkJCTYyQ0QzMjU5MTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDc3
OEI3RjExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NDk5QTUxNDExNUZCMzMwMDBGNTY2RTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkUzQkJGMDcxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zMWE2OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9VVUlE
LmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVVUlELmgiCisKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDxv
YmpiYXNlLmg+CisjZWxpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KKyNlbGlmIE9TKExJTlVYKQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICBHVUlEIHV1aWQgPSB7IDAgfTsKKyAgICBI
UkVTVUxUIGhyID0gQ29DcmVhdGVHdWlkKCZ1dWlkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHdjaGFyX3QgdXVpZFN0cls0MF07CisgICAgaW50
IG51bSA9IFN0cmluZ0Zyb21HVUlEMih1dWlkLCByZWludGVycHJldF9jYXN0PExQT0xFU1RSPih1
dWlkU3RyKSwgQVJSQVlTSVpFKHV1aWRTdHIpKTsKKyAgICBBU1NFUlQobnVtID09IDM5KTsKKyAg
ICByZXR1cm4gU3RyaW5nKHV1aWRTdHIgKyAxLCBudW0gLSAzKS5sb3dlcigpOyAvLyByZW1vdmUg
b3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0IGFuZCBtYWtlIGl0IGxvd2VyLgorI2VsaWYgT1Mo
REFSV0lOKQorICAgIENGVVVJRFJlZiB1dWlkID0gQ0ZVVUlEQ3JlYXRlKDApOworICAgIENGU3Ry
aW5nUmVmIHV1aWRTdHJSZWYgPSBDRlVVSURDcmVhdGVTdHJpbmcoMCwgdXVpZCk7CisgICAgU3Ry
aW5nIHV1aWRTdHIodXVpZFN0clJlZik7CisgICAgQ0ZSZWxlYXNlKHV1aWRTdHJSZWYpOworICAg
IENGUmVsZWFzZSh1dWlkKTsKKyAgICByZXR1cm4gdXVpZFN0ci5sb3dlcigpOyAvLyBtYWtlIGl0
IGxvd2VyLgorI2VsaWYgT1MoTElOVVgpCisgICAgRklMRSogZnB0ciA9IGZvcGVuKCIvcHJvYy9z
eXMva2VybmVsL3JhbmRvbS91dWlkIiwgInIiKTsKKyAgICBpZiAoIWZwdHIpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICBjaGFyIHV1aWRTdHJbMzddID0gezB9OworICAgIGZnZXRzKHV1
aWRTdHIsIHNpemVvZih1dWlkU3RyKSAtIDEsIGZwdHIpOworICAgIGZjbG9zZShmcHRyKTsKKyAg
ICByZXR1cm4gU3RyaW5nKHV1aWRTdHIpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKKyNlbmRpZiAgICAKK30KKworfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9VVUlELmggYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2MyNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9VVUlELmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVVSURfaAorI2RlZmluZSBVVUlE
X2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gQ3JlYXRlcyBhIFVVSUQgdGhhdCBjb25zaXN0cyBvZiAzMiBoZXhhZGVjaW1hbCBkaWdp
dHMgYW5kIHJldHVybnMgaXRzIGNhbm9uaWNhbCBmb3JtLgorLy8gVGhlIGNhbm9uaWNhbCBmb3Jt
IGlzIGRpc3BsYXllZCBpbiA1IGdyb3VwcyBzZXBhcmF0ZWQgYnkgaHlwaGVucywgaW4gdGhlIGZv
cm0gOC00LTQtNC0xMiBmb3IgYSB0b3RhbCBvZiAzNiBjaGFyYWN0ZXJzLgorLy8gVGhlIGhleGFk
ZWNpbWFsIHZhbHVlcyAiYSIgdGhyb3VnaCAiZiIgYXJlIG91dHB1dCBhcyBsb3dlciBjYXNlIGNo
YXJhY3RlcnMuCitTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCit9CisKKyNl
bmRpZgo=
</data>
<flag name="review"
          id="35616"
          type_id="1"
          status="+"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="35617"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52787</attachid>
            <date>2010-04-07 15:16:05 -0700</date>
            <delta_ts>2010-04-07 15:38:43 -0700</delta_ts>
            <desc>Patch to add comment and assert for version 4 UUID</desc>
            <filename>36472_comment</filename>
            <type>text/plain</type>
            <size>3859</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVlNzJmNi4uYzk4NDVkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNC0wNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRoZSBjb21tZW50IGFuZCBhc3NlcnQgdG8gaWxsdXN0cmF0ZSB0aGF0
IHdlJ3JlIGdlbmVyYXRpbmcgdmVyc2lvbiA0CisgICAgICAgIHJhbmRvbSBudW1iZXIgYmFzZWQg
VVVJRHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjQ3MgorCisgICAgICAgICogcGxhdGZvcm0vVVVJRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VVUlELmg6CisK
IDIwMTAtMDQtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbTogRml4IGEgdHlw
byBpbiBjb21tZW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAKaW5kZXggZDJkNjhjMS4uZDhhYzc0OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQu
Y3BwCkBAIC00Niw2ICs0Niw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNv
bnN0IGNoYXIgdXVpZFZlcnNpb25SZXF1aXJlZCA9ICc0JzsKK3N0YXRpYyBjb25zdCBpbnQgdXVp
ZFZlcnNpb25JZGVudGlmaWVySW5kZXggPSAxNDsKKwogU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKQogewogI2lmIE9TKFdJTkRPV1MpCkBAIC01NiwxNCArNTksMTggQEAgU3RyaW5n
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQogICAgIHdjaGFyX3QgdXVpZFN0cls0MF07CiAg
ICAgaW50IG51bSA9IFN0cmluZ0Zyb21HVUlEMih1dWlkLCByZWludGVycHJldF9jYXN0PExQT0xF
U1RSPih1dWlkU3RyKSwgQVJSQVlTSVpFKHV1aWRTdHIpKTsKICAgICBBU1NFUlQobnVtID09IDM5
KTsKLSAgICByZXR1cm4gU3RyaW5nKHV1aWRTdHIgKyAxLCBudW0gLSAzKS5sb3dlcigpOyAvLyBy
ZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0IGFuZCBtYWtlIGl0IGxvd2VyLgorICAg
IFN0cmluZyBjYW5vbmljYWxVdWlkU3RyID0gU3RyaW5nKHV1aWRTdHIgKyAxLCBudW0gLSAzKS5s
b3dlcigpOyAvLyByZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0IGFuZCBtYWtlIGl0
IGxvd2VyLgorICAgIEFTU0VSVChjYW5vbmljYWxVdWlkU3RyW3V1aWRWZXJzaW9uSWRlbnRpZmll
ckluZGV4XSA9PSB1dWlkVmVyc2lvblJlcXVpcmVkKTsKKyAgICByZXR1cm4gY2Fub25pY2FsVXVp
ZFN0cjsKICNlbGlmIE9TKERBUldJTikKICAgICBDRlVVSURSZWYgdXVpZCA9IENGVVVJRENyZWF0
ZSgwKTsKICAgICBDRlN0cmluZ1JlZiB1dWlkU3RyUmVmID0gQ0ZVVUlEQ3JlYXRlU3RyaW5nKDAs
IHV1aWQpOwogICAgIFN0cmluZyB1dWlkU3RyKHV1aWRTdHJSZWYpOwogICAgIENGUmVsZWFzZSh1
dWlkU3RyUmVmKTsKICAgICBDRlJlbGVhc2UodXVpZCk7Ci0gICAgcmV0dXJuIHV1aWRTdHIubG93
ZXIoKTsgLy8gbWFrZSBpdCBsb3dlci4KKyAgICBTdHJpbmcgY2Fub25pY2FsVXVpZFN0ciA9IHV1
aWRTdHIubG93ZXIoKTsgLy8gbWFrZSBpdCBsb3dlci4KKyAgICBBU1NFUlQoY2Fub25pY2FsVXVp
ZFN0clt1dWlkVmVyc2lvbklkZW50aWZpZXJJbmRleF0gPT0gdXVpZFZlcnNpb25SZXF1aXJlZCk7
CisgICAgcmV0dXJuIGNhbm9uaWNhbFV1aWRTdHI7CiAjZWxpZiBPUyhMSU5VWCkKICAgICBGSUxF
KiBmcHRyID0gZm9wZW4oIi9wcm9jL3N5cy9rZXJuZWwvcmFuZG9tL3V1aWQiLCAiciIpOwogICAg
IGlmICghZnB0cikKQEAgLTcxLDcgKzc4LDkgQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKQogICAgIGNoYXIgdXVpZFN0clszN10gPSB7MH07CiAgICAgZmdldHModXVpZFN0ciwg
c2l6ZW9mKHV1aWRTdHIpIC0gMSwgZnB0cik7CiAgICAgZmNsb3NlKGZwdHIpOwotICAgIHJldHVy
biBTdHJpbmcodXVpZFN0cikubG93ZXIoKTsgLy8gbWFrZSBpdCBsb3dlci4KKyAgICBTdHJpbmcg
Y2Fub25pY2FsVXVpZFN0ciA9IFN0cmluZyh1dWlkU3RyKS5sb3dlcigpOyAvLyBtYWtlIGl0IGxv
d2VyLgorICAgIEFTU0VSVChjYW5vbmljYWxVdWlkU3RyW3V1aWRWZXJzaW9uSWRlbnRpZmllcklu
ZGV4XSA9PSB1dWlkVmVyc2lvblJlcXVpcmVkKTsKKyAgICByZXR1cm4gY2Fub25pY2FsVXVpZFN0
cjsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vVVVJ
RC5oCmluZGV4IDdjYzI0NTguLjJkM2E2MDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
VVVJRC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5oCkBAIC0zOCw2ICszOCwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBDcmVhdGVzIGEgVVVJRCB0aGF0IGNvbnNpc3RzIG9mIDMy
IGhleGFkZWNpbWFsIGRpZ2l0cyBhbmQgcmV0dXJucyBpdHMgY2Fub25pY2FsIGZvcm0uCiAvLyBU
aGUgY2Fub25pY2FsIGZvcm0gaXMgZGlzcGxheWVkIGluIDUgZ3JvdXBzIHNlcGFyYXRlZCBieSBo
eXBoZW5zLCBpbiB0aGUgZm9ybSA4LTQtNC00LTEyIGZvciBhIHRvdGFsIG9mIDM2IGNoYXJhY3Rl
cnMuCiAvLyBUaGUgaGV4YWRlY2ltYWwgdmFsdWVzICJhIiB0aHJvdWdoICJmIiBhcmUgb3V0cHV0
IGFzIGxvd2VyIGNhc2UgY2hhcmFjdGVycy4KKy8vCisvLyBOb3RlOiBmb3Igc2VjdXJpdHkgcmVh
c29uLCB3ZSBzaG91bGQgYWx3YXlzIGdlbmVyYXRlIHZlcnNpb24gNCBVVUlEIHRoYXQgdXNlIGEg
c2NoZW1lIHJlbHlpbmcgb25seSBvbiByYW5kb20gbnVtYmVycy4KKy8vIFRoaXMgYWxnb3JpdGht
IHNldHMgdGhlIHZlcnNpb24gbnVtYmVyIGFzIHdlbGwgYXMgdHdvIHJlc2VydmVkIGJpdHMuIEFs
bCBvdGhlciBiaXRzIGFyZSBzZXQgdXNpbmcgYSByYW5kb20gb3IgcHNldWRvcmFuZG9tCisvLyBk
YXRhIHNvdXJjZS4gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00
eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBv
bmUgb2YgOCwKKy8vIDksIEEsIG9yIEIgZm9yIHkuCisvLworLy8gT24gV2luZG93cywgdmVyc2lv
biA0IFVVSURzIGFyZSB1c2VkIHNpbmNlIFdpbmRvd3MgMjAwMCAoaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhNDQ2NTU3LmFzcHgpLgorLy8gT24gTWFjT1NYLCB2ZXJz
aW9uIDQgVVVJRHMgYXJlIHVzZWQgc2luY2UgVGlnZXIgKGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUu
Y29tL21hYy9saWJyYXJ5L3RlY2hub3Rlcy90bi90bjExMDMuaHRtbCNUTlRBRzgpLgorLy8gT24g
TGludXgsIHRoZSBrZXJuZWwgb2ZmZXJzIHRoZSBwcm9jZnMgcHNldWRvLWZpbGUgL3Byb2Mvc3lz
L2tlcm5lbC9yYW5kb20vdXVpZCB0aGF0IHlpZWxkcyB2ZXJzaW9iIDQgVVVJRHMgKGh0dHA6Ly9o
YmZzLndvcmRwcmVzcy5jb20vMjAwOC8wOS8zMC91ZWlkLXVuaXF1ZS1lbm91Z2gtaWRzLykuCiBT
dHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogCiB9Cg==
</data>
<flag name="review"
          id="36371"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="36372"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>