<?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>70127</bug_id>
          
          <creation_ts>2011-10-14 11:55:07 -0700</creation_ts>
          <short_desc>[WebKit2] Initialize threading in UI process</short_desc>
          <delta_ts>2011-12-08 10:07:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>70135</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nayan Kumar K">nayankk</reporter>
          <assigned_to name="Nayan Kumar K">nayankk</assigned_to>
          <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>kbalazs</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>484145</commentid>
    <comment_count>0</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-14 11:55:07 -0700</bug_when>
    <thetext>Currently creating WKPreference doesn&apos;t initialize the threading (JSC::initializeThreading() and WTF::initializeMainThread()). This needs to be fixed, as WKPreference might be called independently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484152</commentid>
    <comment_count>1</comment_count>
      <attachid>111043</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-14 12:04:43 -0700</bug_when>
    <thetext>Created attachment 111043
Skip TestWebKitSettings test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484184</commentid>
    <comment_count>2</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-14 12:36:04 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=111043) [details]
&gt; Skip TestWebKitSettings test

Sorry, by mistake attached a wrong patch to wrong bug!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484185</commentid>
    <comment_count>3</comment_count>
      <attachid>111053</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-14 12:36:52 -0700</bug_when>
    <thetext>Created attachment 111053
Initialize threading while creating WKPreference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484306</commentid>
    <comment_count>4</comment_count>
      <attachid>111053</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-14 14:34:59 -0700</bug_when>
    <thetext>Comment on attachment 111053
Initialize threading while creating WKPreference

I don’t think this is sufficient. What if the first thing I do is create some other kind of object, say by calling WKUserContentURLPatternCreate? I don’t think preferences stands out as the one entry point we missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484309</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-14 14:40:18 -0700</bug_when>
    <thetext>Not sure if this is useful information or not, but at some point we looked at doing this automatically in WebKit1 GTK+ using shared library constructors. Eventually we decided that the risks of running afoul of linker ordering were too great and we abandoned it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484963</commentid>
    <comment_count>6</comment_count>
      <attachid>111220</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-17 00:07:58 -0700</bug_when>
    <thetext>Created attachment 111220
Initialize threading.

This method uses shared library constructor logic to initialize threading (Thanks to Martin for the pointers). This will ensure that threading gets initialized in all code paths. As per the GCC documentation http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html, this constructor is guaranteed to get called prior to calling application main function.

Currently makefile changes are made only for GTK port. If we agree to proceed with this approach, I will make changes to other build system as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484964</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 00:09:33 -0700</bug_when>
    <thetext>Attachment 111220 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/InitializeWebKit.cpp:34:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/InitializeWebKit.cpp:34:  __attribute__ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 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>484965</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-17 00:15:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
 
&gt; This method uses shared library constructor logic to initialize threading (Thanks to Martin for the pointers). This will ensure that threading gets initialized in all code paths. As per the GCC documentation http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html, this constructor is guaranteed to get called prior to calling application main function.

What I meant by my comment was that we decided this approach was dangerous, so we didn&apos;t use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484968</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-17 00:25:22 -0700</bug_when>
    <thetext>I&apos;m not sure we need this, WebContext already initializes threading stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484971</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-17 00:30:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;m not sure we need this, WebContext already initializes threading stuff.

This issue is that WebPrerfences is independent of WebContext. If you use one before creating a WebContext, you&apos;ll see assertion failures, because threading is not initialized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484972</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-17 00:35:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; I&apos;m not sure we need this, WebContext already initializes threading stuff.
&gt; 
&gt; This issue is that WebPrerfences is independent of WebContext. If you use one before creating a WebContext, you&apos;ll see assertion failures, because threading is not initialized.

In that case we could initialize threading when creating WebPreferences object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484976</commentid>
    <comment_count>12</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-17 00:46:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; I&apos;m not sure we need this, WebContext already initializes threading stuff.
&gt; &gt; 
&gt; &gt; This issue is that WebPrerfences is independent of WebContext. If you use one before creating a WebContext, you&apos;ll see assertion failures, because threading is not initialized.
&gt; 
&gt; In that case we could initialize threading when creating WebPreferences object.

WKPreference may not be the only object which has this issue (https://bugs.webkit.org/show_bug.cgi?id=70127#c4). 

Shared library constructor would ensure that threading gets initialized in all code path. However, since this seem to be dangerous, I think right fix for this is to identify all such objects and initialize threading while creating those objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485242</commentid>
    <comment_count>13</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-10-17 10:10:57 -0700</bug_when>
    <thetext>Hi Darin,

There are 2 approaches to fix this bug,
a). Use shared library constructor approach (https://bugs.webkit.org/attachment.cgi?id=111220). This ensures that threading gets initialized in all code paths. However, as Martin pointed out, this seems to be somewhat risky (http://www.voyce.com/index.php/2009/12/03/dont-do-anything-in-dllmain-please/)

b). Identify and initialize threading in all the entry points in UI Process (Which in turn doesn&apos;t launch WebProcess). However, such API additions in future should also do the similar setup.

Which approach do you think is preferable? Please share your opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485250</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-17 10:21:02 -0700</bug_when>
    <thetext>I think approach (b) is the way to go.

Since this is new API we do have some flexibility in making rules about how they need to be called; we don’t have to allow every public function call as a potentially first one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494612</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-02 07:24:50 -0700</bug_when>
    <thetext>So, I guess we could apply second attachment for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495384</commentid>
    <comment_count>16</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-11-03 05:44:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; So, I guess we could apply second attachment for now.

Second patch has just the changes in WKPreference object. We may have to do similar changes in few other objects as well (https://bugs.webkit.org/show_bug.cgi?id=70127#c4). I am back from vacation, I should be able to submit the patch for this soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498036</commentid>
    <comment_count>17</comment_count>
      <attachid>114060</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-11-08 07:26:47 -0800</bug_when>
    <thetext>Created attachment 114060
InitializeThreading

Changes included in this patch are,
a). Initialization of threading as per the approach (b) mentioned in https://bugs.webkit.org/show_bug.cgi?id=70127#c13. All the entry points in UIProcess and Shared API&apos;s are verified and threading initialization is done in those API&apos;s, whose arguments are of types which do NOT initialize threading. 
b). Added new files for compilation in all webkit2 ports.
c). Rebase&apos;ed to latest WebKit trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498169</commentid>
    <comment_count>18</comment_count>
      <attachid>114060</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-08 09:55:10 -0800</bug_when>
    <thetext>Comment on attachment 114060
InitializeThreading

Attachment 114060 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10378121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498765</commentid>
    <comment_count>19</comment_count>
      <attachid>114232</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-11-09 03:15:56 -0800</bug_when>
    <thetext>Created attachment 114232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498767</commentid>
    <comment_count>20</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-11-09 03:17:57 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=114232) [details]
&gt; Patch

EWS need to run a full build to get rid of linker errors reported earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498819</commentid>
    <comment_count>21</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-09 04:32:02 -0800</bug_when>
    <thetext>As Darin suggested we have the flexibility to define how the API should be used (of course not too restrictively). So, why don&apos;t we just require the user to create a context before doing anything else? Could you mention a specific use case where this is an issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498844</commentid>
    <comment_count>22</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-11-09 05:08:35 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; As Darin suggested we have the flexibility to define how the API should be used (of course not too restrictively). So, why don&apos;t we just require the user to create a context before doing anything else? Could you mention a specific use case where this is an issue?

Creating context before doing anything else would work, but context created will be of no use in some use cases. For example, this use case might fail,

WKPreferenceRef pref = WKPreferencesCreate();
bool enabled = WKPreferencesGetJavaScriptEnabled(WKPreferencesRef preferences); // -- Might fail here!

To fix this, we may have to change the sequence of API usage to,

WKContextRef context = WKContextCreate();
WKPreferenceRef pref = WKPreferencesCreate();
bool enabled = WKPreferencesGetJavaScriptEnabled(WKPreferencesRef preferences); // context go un-used here!

Initializing threading in most of the entry paths would definitely makes the API usage a bit more friendly and less restrictive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498862</commentid>
    <comment_count>23</comment_count>
      <attachid>114232</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-09 05:49:53 -0800</bug_when>
    <thetext>Comment on attachment 114232
Patch

Attachment 114232 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10376408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500933</commentid>
    <comment_count>24</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-11-11 11:02:26 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 114232 [details])
&gt; Attachment 114232 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/10376408

As mentioned earlier, I think both gtk and win ews need to make a full build to get rid of these errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513043</commentid>
    <comment_count>25</comment_count>
      <attachid>114232</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-12-01 13:22:41 -0800</bug_when>
    <thetext>Comment on attachment 114232
Patch

Hmm, all this duplicated code makes me wonder if we could just do the initialization in the APIObject constructor instead. Would that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517404</commentid>
    <comment_count>26</comment_count>
      <attachid>118387</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-12-08 07:33:17 -0800</bug_when>
    <thetext>Created attachment 118387
Initialize threading

Incorporated review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517507</commentid>
    <comment_count>27</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-12-08 10:06:56 -0800</bug_when>
    <thetext>Manually committed r102346: http://trac.webkit.org/changeset/102346</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111043</attachid>
            <date>2011-10-14 12:04:43 -0700</date>
            <delta_ts>2011-10-14 12:06:45 -0700</delta_ts>
            <desc>Skip TestWebKitSettings test</desc>
            <filename>SkipTest.diff</filename>
            <type>text/plain</type>
            <size>1579</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5OTJkY2I2Li44MTY3M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMTAtMTQgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBbV2ViS2l0Ml1bZ3RrXSBTa2lwIFRlc3RXZWJLaXRTZXR0aW5ncyB0ZXN0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwIHJ1bm5pbmcg
VGVzdFdlYktpdFNldHRpbmdzIHRlc3QgdGlsbCBhIGJ1ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMjcgZ2V0cyBmaXhlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAg
ICh0ZXN0V2ViS2l0U2V0dGluZ3MpOiBTa2lwIFRlc3RXZWJLaXRTZXR0aW5ncyB0ZXN0LgorCiAy
MDExLTEwLTEzICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV0VCS0lUMl0gQWRkIFdlYktpdFNldHRpbmdzIEdUSysgQVBJLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRTZXR0aW5ncy5jcHAKaW5kZXggNGUxYTY4MC4uZWVmZWZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0
dGluZ3MuY3BwCkBAIC0zNiw2ICszNiw5IEBACiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0
aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKIHsKKyAgICAvKiBTa2lwIHJ1bm5pbmcgdGhpcyB0
ZXN0IGZvciBub3cgdGlsbCBhIGJ1ZyBpbiBXS1ByZWZlcmVuY2VzQ3JlYXRlCisgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMTI3IGdldHMgZml4ZWQuICov
CisjaWYgMAogICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF9zZXR0aW5nc19u
ZXcoKTsKIAogICAgIC8vIEphdmFTY3JpcHQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgpAQCAtOTks
NiArMTAyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rw
b2ludGVyKQogICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlu
a19hdWRpdGluZyhzZXR0aW5ncykpOwogCiAgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0
dGluZ3MpKTsKKyNlbmRpZgogfQogCiB2b2lkIGJlZm9yZUFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111053</attachid>
            <date>2011-10-14 12:36:52 -0700</date>
            <delta_ts>2011-10-17 00:07:58 -0700</delta_ts>
            <desc>Initialize threading while creating WKPreference</desc>
            <filename>ThreadingInitialize.diff</filename>
            <type>text/plain</type>
            <size>2546</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5OTJkY2I2Li5lYjRkOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMTAtMTQgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBbV2ViS2l0Ml0gSW5pdGlhbGl6ZSB0aHJlYWRpbmcgd2hpbGUgY3JlYXRpbmcgV0tQ
cmVmZXJlbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzAxMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDdXJyZW50bHkgY3JlYXRpbmcgV0tQcmVmZXJlbmNlIGRvZXNuJ3QgY2FsbCBKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcoKQorICAgICAgICBhbmQgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgp
LiBUaGlzIGlzIGZpeGVkIHNvIGFzIHRvIGFsbG93IHRoZSBjcmVhdGlvbgorICAgICAgICBvZiBX
S1ByZWZlcmVuY2UgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcmVm
ZXJlbmNlcy5jcHA6IEluaXRpYWxpemUgdGhyZWFkaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMu
aDogTW92ZSBkZWZpbmF0aW9uIG9mIGNyZWF0ZSBmdW5jdGlvbiB0byBjcHAgZmlsZS4KKwogMjAx
MS0xMC0xMyAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dFQktJVDJdIEFkZCBXZWJLaXRTZXR0aW5ncyBHVEsrIEFQSS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGVmZGE0Y2QuLjE3NzVlYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMjcs
OSArMjcsMjUgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCiAjaW5jbHVkZSAiV2Vi
UGFnZUdyb3VwLmgiCisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NS
ZWZQdHI8V2ViUHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoKQoreworICAgIEpT
Qzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQo
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKTsKK30KKworUGFzc1Jl
ZlB0cjxXZWJQcmVmZXJlbmNlcz4gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpCit7CisgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJl
ZmVyZW5jZXMoaWRlbnRpZmllcikpOworfQorCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5j
ZXMoKQogewogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IDBmNDk0M2EuLmQzMWYyNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCkBAIC00NSwxNSArNDUsOCBAQCBj
bGFzcyBXZWJQcmVmZXJlbmNlcyA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUHJlZmVyZW5jZXM7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJQcmVmZXJlbmNlcz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMpOwotICAgIH0KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJQcmVmZXJlbmNlcz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMoaWRlbnRpZmll
cikpOwotICAgIH0KLQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBjcmVh
dGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcmVmZXJlbmNlcz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViUHJlZmVyZW5jZXMoKTsKIAog
ICAgIHZvaWQgYWRkUGFnZUdyb3VwKFdlYlBhZ2VHcm91cCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111220</attachid>
            <date>2011-10-17 00:07:58 -0700</date>
            <delta_ts>2011-11-08 07:26:47 -0800</delta_ts>
            <desc>Initialize threading.</desc>
            <filename>InitializeThreading.diff</filename>
            <type>text/plain</type>
            <size>3484</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZGViN2RjLi4zMzg4MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTAtMTYgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBbV2ViS2l0Ml0gSW5pdGlhbGl6ZSB0aHJlYWRpbmcgd2hpbGUgbG9hZGluZyBXZWJL
aXQyIGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwMTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIHNoYXJlZCBjb250cnVjdG9yIG1ldGhvZCB0byBpbml0aWFsaXplIHRocmVhZGluZyB3
aGlsZQorICAgICAgICBsb2FkaW5nIFdlYktpdDIgbGlicmFyeS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9Jbml0aWFsaXplV2ViS2l0LmNwcDogQWRk
ZWQuCisgICAgICAgIChpbml0aWFsaXplV2ViS2l0KToKKwogMjAxMS0xMC0xNiAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBlbmFibGUgRU5BQkxFKERP
TV9TVE9SQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA3M2VjZjA2Li42NjM2MjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNTI1LDYgKzUyNSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFf
U09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAg
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Jbml0aWFsaXplV2ViS2l0LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1RocmVhZExhdW5jaGVy
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luaXRpYWxp
emVXZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luaXRpYWxpemVXZWJLaXQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOWI5YzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5pdGlhbGl6ZVdlYktpdC5jcHAK
QEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp
Y2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8cnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKwor
c3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKGNvbnN0cnVjdG9yKSkgaW5pdGlhbGl6ZVdlYktp
dCh2b2lkKTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdlYktpdCh2b2lkKSAKK3sKKyAgICBK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114060</attachid>
            <date>2011-11-08 07:26:47 -0800</date>
            <delta_ts>2011-11-09 03:15:42 -0800</delta_ts>
            <desc>InitializeThreading</desc>
            <filename>ThreadingInitialize.diff</filename>
            <type>text/plain</type>
            <size>34612</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00MDAsMTIgKzQwMCwxNCBAQAogICAgIFNoYXJlZC9X
ZWJFdmVudENvbnZlcnNpb24uY3BwIFwKICAgICBTaGFyZWQvV2ViR2VzdHVyZUV2ZW50LmNwcCBc
CiAgICAgU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIFwKKyAgICBTaGFyZWQvV2Vi
R2VvbWV0cnkuY3BwIFwKICAgICBTaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcCBcCiAgICAg
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgXAogICAgIFNoYXJlZC9XZWJJbWFnZS5jcHAgXAogICAgIFNoYXJlZC9XZWJMYXllclRy
ZWVJbmZvLmNwcCBcCiAgICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIFwKKyAgICBTaGFyZWQv
V2ViTnVtYmVyLmNwcCBcCiAgICAgU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIFwK
ICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogICAgIFNoYXJlZC9X
ZWJQYWdlR3JvdXBEYXRhLmNwcCBcCkBAIC00MTMsNyArNDE1LDkgQEAKICAgICBTaGFyZWQvV2Vi
UG9wdXBJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwKICAg
ICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAorICAgIFNoYXJlZC9X
ZWJTdHJpbmcuY3BwIFwKICAgICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAgXAorICAgIFNoYXJl
ZC9XZWJVUkwuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogICAgIFNoYXJl
ZC9XZWJVUkxSZXNwb25zZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSw3IEBACiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkZpbmRPcHRpb25zLmggXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdl
b21ldHJ5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb21ldHJ5LmggXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmggXApAQCAtMzg5LDYgKzM5MCw3IEBACiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOdW1i
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTnVtYmVyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCBcCkBAIC00MDUsOCArNDA3LDEwIEBA
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlNlY3VyaXR5T3JpZ2luLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBcCisJU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlN0cmluZy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTdHJp
bmcuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlVSTC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmggXApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDk5NTU2KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9s
YSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDUsMTQgKzQ2LDggQEAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgVHlwZSBBUElUeXBlID0gVHlwZVByZWZlcmVuY2VzOwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUHJlZmVyZW5jZXM+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlByZWZlcmVuY2VzKTsKLSAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
UHJlZmVyZW5jZXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKGlkZW50aWZpZXIpKTsKLSAg
ICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IGNyZWF0ZSgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgfldlYlByZWZlcmVuY2VzKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gOTk1
NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg
KGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDkgKzI4LDI1IEBACiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2Vz
PiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKCkKK3sKKyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJQcmVmZXJlbmNlcyk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAg
IEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKGlkZW50aWZpZXIp
KTsKK30KKwogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBwbGF0Zm9y
bUluaXRpYWxpemVTdG9yZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk5
NTU2KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSwxMSArMTYxLDEzIEBACiAgICAgU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKICAg
ICBTaGFyZWQvV2ViRXZlbnQuY3BwCiAgICAgU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCisgICAgU2hhcmVkL1dlYkdlb21ldHJ5LmNwcAogICAgIFNoYXJlZC9XZWJHcmFwaGljc0Nv
bnRleHQuY3BwCiAgICAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgU2hhcmVkL1dl
YkltYWdlLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAogICAgIFNoYXJlZC9X
ZWJNb3VzZUV2ZW50LmNwcAorICAgIFNoYXJlZC9XZWJOdW1iZXIuY3BwCiAgICAgU2hhcmVkL1dl
Yk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCiAgICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCiAgICAgU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC0xNzMsNyArMTc1
LDkgQEAKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAogICAgIFNoYXJlZC9XZWJQcmVmZXJl
bmNlc1N0b3JlLmNwcAogICAgIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAorICAgIFNoYXJlZC9XZWJTdHJpbmcuY3BwCiAgICAgU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3Bw
CisgICAgU2hhcmVkL1dlYlVSTC5jcHAKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAKICAg
ICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL1dlYldoZWVsRXZlbnQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTU2NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDExLTExLTA4ICBOYXlhbiBL
dW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIEluaXRp
YWxpemUgdGhyZWFkaW5nIGluIFVJIHByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWxpemUgdGhyZWFkaW5nIGluIGZldyBvZiB0aGUg
VUlQcm9jZXNzIGFuZAorICAgICAgICBTaGFyZWQgQVBJJ3MuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBTaGFyZWQvSW1t
dXRhYmxlQXJyYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFibGVBcnJheTo6Y3JlYXRl
KToKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaDoKKyAgICAgICAgKiBTaGFyZWQv
TXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TXV0YWJsZUFycmF5OjpjcmVhdGUp
OgorICAgICAgICAqIFNoYXJlZC9NdXRhYmxlQXJyYXkuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVt
OjpzZXBhcmF0b3JJdGVtKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRGF0YS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJHZW9tZXRyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaXplOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2Vv
bWV0cnkuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTnVtYmVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Ojo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTnVtYmVyLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYlN0cmluZy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJT
dHJpbmc6OmNyZWF0ZUZyb21VVEY4U3RyaW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViU3RyaW5n
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlVSTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkw6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYlVSTC5oOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMS0xMS0wOCAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1F0XSBJbXByb3ZlIHRoZSBhbmltYXRpb24gdGltZSBjb25zdGFudApJbmRleDogU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3MSw2ICs2NzEsMTAgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdl
Ykdlb21ldHJ5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXFdlYkdlb21ldHJ5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNzEx
LDYgKzcxNSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcV2ViTnVtYmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYk51bWJlci5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTc3NSw2ICs3ODMsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlN0cmluZy5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJTdHJpbmcuaCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC03ODMsNiArNzk1LDEwIEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJVUkwuY3BwIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2Vi
VVJMLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk1NTYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQyOCw2ICs0MjgsMTAgQEAKIAkJOTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVu
Y29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsK
IAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJFNzMwRjE0MzA0N0E2
MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJQjYyRTczMTIxNDMwNDdC
MDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVz
dFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUI2OTA0NUJBMTQ2OTdCMzAwMDRFMzdCRSAvKiBXZWJHZW9tZXRyeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjkwNDVCOTE0Njk3QjMwMDA0
RTM3QkUgLyogV2ViR2VvbWV0cnkuY3BwICovOyB9OworCQlCNjkwNDVCRTE0Njk3QjQ2MDA0RTM3
QkUgLyogV2ViTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI2OTA0NUJEMTQ2OTdCNDYwMDRFMzdCRSAvKiBXZWJOdW1iZXIuY3BwICovOyB9
OworCQlCNjkwNDVDMjE0Njk3QjU4MDA0RTM3QkUgLyogV2ViU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2OTA0NUMxMTQ2OTdCNTgwMDRF
MzdCRSAvKiBXZWJTdHJpbmcuY3BwICovOyB9OworCQlCNjkwNDVDNjE0Njk3QjY3MDA0RTM3QkUg
LyogV2ViVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI2OTA0NUM1MTQ2OTdCNjcwMDRFMzdCRSAvKiBXZWJVUkwuY3BwICovOyB9OwogCQlCODc4
QjYxNTEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkg
LyogQ29ycmVjdGlvblBhbmVsLmggKi87IH07CiAJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1t
ICovOyB9OwogCQlCQzAwOTJGNzExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9vcE1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDA5MkY1MTE1ODM3
QTMwMEUwQUUyQSAvKiBSdW5Mb29wTWFjLm1tICovOyB9OwpAQCAtMTM5NCw2ICsxMzk4LDEwIEBA
CiAJCUIzOTZFQTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI2MkU3MzBGMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjYyRTczMTExNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0
VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hpdFRlc3RS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjY5MDQ1QjkxNDY5N0IzMDAw
NEUzN0JFIC8qIFdlYkdlb21ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjY5
MDQ1QkQxNDY5N0I0NjAwNEUzN0JFIC8qIFdlYk51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNjkwNDVDMTE0Njk3QjU4MDA0RTM3QkUgLyogV2ViU3RyaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlN0cmluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUI2OTA0NUM1MTQ2OTdCNjcwMDRFMzdCRSAvKiBXZWJVUkwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVVJMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JyZWN0aW9u
UGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg3OEI2MTQxMzM0MjhEQzAw
Njg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMwMDkyRjUxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW5Mb29wTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE4Niw2ICsyMTk0LDEwIEBACiAJCTFBQURERjRCMTBEODJB
RjAwMEQzRDYzRCAvKiBTaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCUI2OTA0NUM1MTQ2OTdCNjcwMDRFMzdCRSAvKiBXZWJVUkwuY3BwICovLAor
CQkJCUI2OTA0NUMxMTQ2OTdCNTgwMDRFMzdCRSAvKiBXZWJTdHJpbmcuY3BwICovLAorCQkJCUI2
OTA0NUJEMTQ2OTdCNDYwMDRFMzdCRSAvKiBXZWJOdW1iZXIuY3BwICovLAorCQkJCUI2OTA0NUI5
MTQ2OTdCMzAwMDRFMzdCRSAvKiBXZWJHZW9tZXRyeS5jcHAgKi8sCiAJCQkJQkNEREIzMTQxMjRF
QkNFRjAwNDhEMTNDIC8qIEFQSSAqLywKIAkJCQkxQUFGMEM0NzEyQjE2MzI4MDA4RTQ5RTIgLyog
Y2YgKi8sCiAJCQkJQzAxQTI1RkYxMjY2MkYyMTAwQzlFRDU1IC8qIGNnICovLApAQCAtNDYzNSw2
ICs0NjQ3LDEwIEBACiAJCQkJRTFBRUEyMzAxNDY4N0JEQjAwODA0NTY5IC8qIFdLRnVsbEtleWJv
YXJkQWNjZXNzV2F0Y2hlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYyNjM4MTQ2ODdDMzkw
MDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBRjA1RDg2MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjY5MDQ1QkExNDY5N0IzMDAwNEUz
N0JFIC8qIFdlYkdlb21ldHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI2OTA0NUJFMTQ2OTdC
NDYwMDRFMzdCRSAvKiBXZWJOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjY5MDQ1QzIx
NDY5N0I1ODAwNEUzN0JFIC8qIFdlYlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNjkw
NDVDNjE0Njk3QjY3MDA0RTM3QkUgLyogV2ViVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlN0cmluZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9i
aWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1Jl
ZlB0cjxXZWJTdHJpbmc+IFdlYlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcoY29uc3QgY2hh
ciogc3RyaW5nKQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlN0cmlu
ZyhTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5jcHAJKHJldmlzaW9u
IDk5NTU2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNywxOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAKKyNpbmNsdWRlIDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW1tdXRhYmxl
QXJyYXk6OmNyZWF0ZShBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXpl
KSk7Cit9CisKIEltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheSgpCiB7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNwcAkocmV2aXNpb24gOTk1NTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw4ICsyNywxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk11dGFibGVBcnJheS5oIgogCisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK1Bhc3NSZWZQdHI8TXV0YWJsZUFycmF5PiBNdXRhYmxlQXJyYXk6OmNyZWF0ZSgpCit7Cisg
ICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTXV0YWJsZUFycmF5KTsKK30KKwogTXV0
YWJsZUFycmF5OjpNdXRhYmxlQXJyYXkoKQogewogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkdlb21ldHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViR2VvbWV0cnkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
Ykdlb21ldHJ5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2VvbWV0cnkuaCIK
KworI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlNp
emU+IFdlYlNpemU6OmNyZWF0ZShjb25zdCBXS1NpemUmIHNpemUpCit7CisgICAgSlNDOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2l6ZShzaXplKSk7Cit9CisKK1Bhc3NSZWZQdHI8V2Vi
UG9pbnQ+IFdlYlBvaW50OjpjcmVhdGUoY29uc3QgV0tQb2ludCYgcG9pbnQpCit7CisgICAgSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9pbnQocG9pbnQpKTsKK30KKyAgCitQYXNz
UmVmUHRyPFdlYlJlY3Q+IFdlYlJlY3Q6OmNyZWF0ZShjb25zdCBXS1JlY3QmIHJlY3QpCit7Cisg
ICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUmVjdChyZWN0KSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp
Y2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFzc1JlZlB0cjxXZWJVUkw+IFdlYlVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlVSTChzdHJp
bmcpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvSW1tdXRhYmxlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSW1tdXRhYmxlQXJyYXkuaAkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvSW1tdXRhYmxlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MywxMCArNDQsOSBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFi
bGVBcnJheSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBj
cmVhdGUoQVBJT2JqZWN0KiogZW50cmllcywgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEltbXV0YWJsZUFycmF5KGVudHJpZXMsIHNpemUpKTsKLSAgICB9
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gY3JlYXRlKEFQSU9iamVj
dCoqIGVudHJpZXMsIHNpemVfdCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gYWRvcHQoVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4mIGVudHJpZXMpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltbXV0YWJsZUFycmF5KGVudHJpZXMpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZp
c2lvbiA5OTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmln
aHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI5LDggQEAKIAogI2lu
Y2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0
ZW0uaD4KKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTQsNiArNTcs
OSBAQAogCiBXZWJDb250ZXh0TWVudUl0ZW0qIFdlYkNvbnRleHRNZW51SXRlbTo6c2VwYXJhdG9y
SXRlbSgpCiB7CisgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOworCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXZWJDb250ZXh0
TWVudUl0ZW0qLCBzZXBhcmF0b3JJdGVtLCAoYWRvcHRSZWYobmV3IFdlYkNvbnRleHRNZW51SXRl
bShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKFdlYkNvcmU6OlNlcGFyYXRvclR5cGUsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSwgdHJ1ZSwgZmFsc2UpKSkubGVh
a1JlZigpKSk7CiAgICAgcmV0dXJuIHNlcGFyYXRvckl0ZW07CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViR2VvbWV0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViR2VvbWV0cnkuaAkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViR2VvbWV0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miwx
MCArNDMsNyBAQAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBl
U2l6ZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNpemU+IGNyZWF0ZShjb25zdCBXS1Np
emUmIHNpemUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNpemUoc2l6
ZSkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTaXplPiBjcmVhdGUoY29uc3Qg
V0tTaXplJik7CiAKICAgICBjb25zdCBXS1NpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KIApAQCAtNjMsMTAgKzYxLDcgQEAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZVBvaW50OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnQ+
IGNyZWF0ZShjb25zdCBXS1BvaW50JiBwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViUG9pbnQocG9pbnQpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViUG9pbnQ+IGNyZWF0ZShjb25zdCBXS1BvaW50Jik7CiAKICAgICBjb25zdCBXS1BvaW50JiBw
b2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnQ7IH0KIApAQCAtODQsMTAgKzc5LDcgQEAKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVJlY3Q7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJSZWN0PiBjcmVhdGUoY29uc3QgV0tSZWN0JiByZWN0KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZWN0KHJlY3QpKTsKLSAgICB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVjdD4gY3JlYXRlKGNvbnN0IFdLUmVjdCYpOwogCiAg
ICAgY29uc3QgV0tSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkRhdGEuaAkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcg
KzI5LDkgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ4LDYgKzUxLDkgQEAKIAog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkRhdGE+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFy
KiBieXRlcywgc2l6ZV90IHNpemUpCiAgICAgeworICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKKyAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworCiAgICAgICAg
IHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5dGVzID0gMDsKIAogICAgICAgICBpZiAoc2l6ZSkgewpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViTnVtYmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAq
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAor
ICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAK
KyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViTnVtYmVyLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyVHlwZSwgQVBJT2JqZWN0OjpUeXBlIEFQSU9iamVjdFR5
cGU+IGlubGluZQorUGFzc1JlZlB0cjxXZWJOdW1iZXI8TnVtYmVyVHlwZSwgQVBJT2JqZWN0VHlw
ZT4gPiBXZWJOdW1iZXI8TnVtYmVyVHlwZSwgQVBJT2JqZWN0VHlwZT46OmNyZWF0ZShOdW1iZXJU
eXBlIHZhbHVlKQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk51bWJl
cih2YWx1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViU3RyaW5nLmgJKHJldmlzaW9uIDk5NTU2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9u
cyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDEwICs1Niw3
IEBACiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3RyaW5nKFN0cmluZyhKU1N0cmlu
Z0dldENoYXJhY3RlcnNQdHIoanNTdHJpbmdSZWYpLCBKU1N0cmluZ0dldExlbmd0aChqc1N0cmlu
Z1JlZikpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBjcmVh
dGVGcm9tVVRGOFN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpKTsKLSAg
ICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBjcmVhdGVGcm9tVVRGOFN0cmlu
Zyhjb25zdCBjaGFyKiBzdHJpbmcpOwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmlzRW1wdHkoKTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51
bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOdW1iZXIuaAko
cmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTnVtYmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg
MjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjgsOCBAQAogI2RlZmluZSBXZWJO
dW1iZXJfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8cnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM2LDEwICszOSw3
IEBACiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IEFQSU9iamVjdFR5
cGU7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOdW1iZXI+IGNyZWF0ZShOdW1iZXJUeXBl
IHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJOdW1iZXIodmFs
dWUpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTnVtYmVyPE51bWJlclR5cGUs
IEFQSU9iamVjdFR5cGU+ID4gY3JlYXRlKE51bWJlclR5cGUgdmFsdWUpOwogCiAgICAgTnVtYmVy
VHlwZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL011dGFibGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9NdXRhYmxlQXJyYXkuaAkocmV2aXNpb24gOTk1NTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzQsMTAgKzM1LDcgQEAKIAogY2xhc3MgTXV0YWJsZUFycmF5IDogcHVibGljIEltbXV0YWJsZUFy
cmF5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlQXJyYXk+IGNyZWF0
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGFibGVBcnJheSk7Ci0g
ICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVBcnJheT4gY3JlYXRlKCk7CiAKICAg
ICB+TXV0YWJsZUFycmF5KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgJKHJldmlzaW9u
IDk5NTU2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDEwICs0Miw3IEBACiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVVUkw7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJV
Ukw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViVVJMKHN0cmluZykpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJVUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDk5NTU2KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI5LDE4IEBACiAKICNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitQYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKK3sKKyAgICBKU0M6
OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uKHRpbWVzdGFt
cCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpKTsKK30KKwogV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICBtX2Rh
dGEudGltZXN0YW1wID0gdGltZXN0YW1wOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCShyZXZpc2lvbiA5OTU1NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBN
b2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDcsMTAgKzQ4LDcgQEAKICAgICAgICAgZG91YmxlIGFjY3VyYWN5Owog
ICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBj
cmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkb3VibGUgYWNjdXJhY3kpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0
aW9uPiBjcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogCiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25Q
b3NpdGlvbigpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114232</attachid>
            <date>2011-11-09 03:15:56 -0800</date>
            <delta_ts>2011-12-08 07:32:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70127-20111109164552.patch</filename>
            <type>text/plain</type>
            <size>36132</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk2NzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MmYyMmM0MTZiZTdiNWM2
ZmM0ZWQ4MDlmOTYzMjQyYzAwNzZiYWFiLi4yYmEzZGI5YzdiODUwMjA1MjA5MmMzOWY1YWNlZDdj
Mjc3ZDRkMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMTEtMDggIE5heWFu
IEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbV2ViS2l0Ml0gSW5p
dGlhbGl6ZSB0aHJlYWRpbmcgaW4gVUkgcHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5pdGlhbGl6ZSB0aHJlYWRpbmcgaW4gZmV3IG9mIHRo
ZSBVSVByb2Nlc3MgYW5kCisgICAgICAgIFNoYXJlZCBBUEkncy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFNoYXJlZC9J
bW11dGFibGVBcnJheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZUFycmF5OjpjcmVh
dGUpOgorICAgICAgICAqIFNoYXJlZC9JbW11dGFibGVBcnJheS5oOgorICAgICAgICAqIFNoYXJl
ZC9NdXRhYmxlQXJyYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpNdXRhYmxlQXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgICogU2hhcmVkL011dGFibGVBcnJheS5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0
ZW06OnNlcGFyYXRvckl0ZW0pOgorICAgICAgICAqIFNoYXJlZC9XZWJEYXRhLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGE6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6Cisg
ICAgICAgICogU2hhcmVkL1dlYkdlb21ldHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNpemU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvaW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZWN0OjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
ZW9tZXRyeS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJOdW1iZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6OjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOdW1iZXIuaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViU3RyaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJTdHJp
bmcuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViVVJMLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViVVJMLmg6CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDExLTExLTA5
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdIEJ1aWxkIHN5c3RlbSBjbGVhbnVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDU0YjRkODNm
ODc0ZGE4ZmFhYzM4YWVmYjgxODBiNTNiY2VkMmU3MWIuLjQ2ZDQ2MGJmYTlmOGQwNjVjYmE2YWQ3
N2Y5OTkyMWE4MTkyMDg5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0xNjEsMTEgKzE2MSwx
MyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5j
cHAKICAgICBTaGFyZWQvV2ViRXZlbnQuY3BwCiAgICAgU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9z
aXRpb24uY3BwCisgICAgU2hhcmVkL1dlYkdlb21ldHJ5LmNwcAogICAgIFNoYXJlZC9XZWJHcmFw
aGljc0NvbnRleHQuY3BwCiAgICAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgU2hh
cmVkL1dlYkltYWdlLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAogICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcAorICAgIFNoYXJlZC9XZWJOdW1iZXIuY3BwCiAgICAgU2hh
cmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCiAgICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCiAgICAgU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC0xNzMs
NyArMTc1LDkgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJQb3B1cEl0ZW0u
Y3BwCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCiAgICAgU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisgICAgU2hhcmVkL1dlYlN0cmluZy5jcHAKICAg
ICBTaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKKyAgICBTaGFyZWQvV2ViVVJMLmNwcAogICAgIFNo
YXJlZC9XZWJVUkxSZXF1ZXN0LmNwcAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5jcHAKICAg
ICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMzg1NTli
MDdhYzZkYWIzNDkzYWZkOThhMGZiZjU2YTI5MzExYjA2Ny4uNmNkYTI1NDljODI0OGQ3NDk1NmQ5
MzY1NGVjOGMwZTZjZTc1ZWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTM3OSw2ICszNzks
NyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJG
aW5kT3B0aW9ucy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9tZXRyeS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJHZW9tZXRyeS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
R3JhcGhpY3NDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdyYXBoaWNz
Q29udGV4dC5oIFwKQEAgLTM4OSw2ICszOTAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAJU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTnVt
YmVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggXApAQCAtNDA1LDggKzQwNywxMCBA
QCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtf
QVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTZWN1
cml0eU9yaWdpbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJUb3VjaEV2ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlVSTFJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVz
dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCmluZGV4IDY3YjJh
MzRjNWNkYmVhNGZmZjhmM2FjNjNjOWE2MzU1NzY5NjcxYWMuLmRjNDcxYzk4YTU3ZWY1ODNmY2Qy
MWFlMjM4Y2ZmZTI0MTI3NmJiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9J
bW11dGFibGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFy
cmF5LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEx
IE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNywxOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW1tdXRhYmxlQXJy
YXk6OmNyZWF0ZShBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBKU0M6
OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplKSk7
Cit9CisKIEltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheSgpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9JbW11dGFibGVBcnJheS5oCmluZGV4IGUyNmU0YWE1ZGM3ODE3ZTJkZmMzOTVhNzQy
ZjY2OTEwZmRkMTYxNzUuLjFmN2IxZTI3ZjFhNTIzNTdiNmUwM2U0NzM5MmIzNWQ5ODIzNWFjMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQzLDEwICs0NCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW1tdXRhYmxlQXJyYXkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11dGFi
bGVBcnJheT4gY3JlYXRlKEFQSU9iamVjdCoqIGVudHJpZXMsIHNpemVfdCBzaXplKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXpl
KSk7Ci0gICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0
ZShBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3QpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW1tdXRhYmxlQXJyYXk+IGFkb3B0KFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+JiBlbnRyaWVz
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRy
aWVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlQXJyYXkuY3BwCmluZGV4IDBmMzEzOGZl
ZjEwMDVkMWJhMzJkMWM2Yjk3YjVkNjhmMzQzNjQ2N2IuLmQzZmViZGU2ZjE3YzA3YzczYmNmMjRj
ZmNlMDMxYTIyZWNiYzBjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRh
YmxlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlQXJyYXkuY3Bw
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI3LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTXV0YWJsZUFycmF5LmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorUGFzc1JlZlB0cjxNdXRhYmxlQXJyYXk+IE11dGFibGVBcnJheTo6Y3JlYXRlKCkK
K3sKKyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhYmxlQXJyYXkpOworfQor
CiBNdXRhYmxlQXJyYXk6Ok11dGFibGVBcnJheSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0
YWJsZUFycmF5LmgKaW5kZXggMjcxODY2NDA5MjA3ZjZjYzhiYjdlZTZmYzk4N2E4ZDAyZjNhNjBk
ZS4uZWYyODk1YzcyYWY3MDNjMDA3NTM5M2YyMDE0YzFiMzVhMWQ1ODRmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9NdXRhYmxlQXJyYXkuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxMCArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTXV0YWJsZUFycmF5IDogcHVibGljIEltbXV0YWJs
ZUFycmF5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlQXJyYXk+IGNy
ZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGFibGVBcnJheSk7
Ci0gICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVBcnJheT4gY3JlYXRlKCk7CiAK
ICAgICB+TXV0YWJsZUFycmF5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5jcHAKaW5kZXggZjMxMjk5NzViMmVmZjVlMzYwYjM0ZGE5MGJkZDFlOGM2MTg0
NzZjNy4uZWYxNTlmZTEwZTFlOGE2MGVjZTllYmUxYTM2ZDQwY2UxNmRmNDAzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNiArMjksOCBAQAogCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC01NCw2ICs1Nyw5IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVt
PiBXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBiCiAKIFdl
YkNvbnRleHRNZW51SXRlbSogV2ViQ29udGV4dE1lbnVJdGVtOjpzZXBhcmF0b3JJdGVtKCkKIHsK
KyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkKCk7CisKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYkNvbnRleHRNZW51SXRlbSos
IHNlcGFyYXRvckl0ZW0sIChhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvbnRl
eHRNZW51SXRlbURhdGEoV2ViQ29yZTo6U2VwYXJhdG9yVHlwZSwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpLCB0cnVlLCBmYWxzZSkpKS5sZWFrUmVmKCkpKTsK
ICAgICByZXR1cm4gc2VwYXJhdG9ySXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRGF0YS5oCmluZGV4
IGE1YTdkYzE0OWI5ZTZhMWIwNWRiOGUwYWU2NDk1ODgxZTJlYjEwZjUuLmY2MDlmNDhhNTA3NzYz
OTE1MTk5NGQxMjQ3ZDc4YjI0NmI0NjQ5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkRhdGEuaApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw3ICsyOSw5IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00OCw2ICs1MSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkRhdGE+
IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IHNpemUpCiAgICAgewor
ICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOworCiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5dGVzID0g
MDsKIAogICAgICAgICBpZiAoc2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDAxZmRmYjg5MGUyNWUzZDhkMjY2OTExY2U1
ZTM2OTUwODEzYzI3YjcuLjQ0ZDM5YjI5Zjg2M2Q4YTQwZmVhMWZhM2Y5Mjk2Y2JhNmU2NTQwNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOSArMjksMTggQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSA8cnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK1Bhc3NSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQoreworICAgIEpTQzo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRp
dHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSkpOworfQorCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIG1fZGF0YS50aW1l
c3RhbXAgPSB0aW1lc3RhbXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaAppbmRleCA2YjI2OGZiYmVkNjkxYzJiMTE1MGE1MzE3ZDk0MmE5NmQzMDEy
MTg4Li43NTE5NDA3Yzc2OTA5NWNjMDQ3NzQwNzU5OTU4MzgzYzc0NTU0NDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDcsMTAgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBkb3VibGUgYWNjdXJhY3k7CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGNy
ZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3Vy
YWN5KSk7Ci0gICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblBv
c2l0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9tZXRy
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbWV0cnkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI2YWNmNmZmOWQ1NzEyMGYwOTVhNTQzN2VlMzUwZWQyZGMxYjhlYTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbWV0cnkuY3BwCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCisgKiBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKKyAq
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIAorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgCisg
KiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSAKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICog
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIAorICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkdlb21ldHJ5LmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UGFzc1JlZlB0cjxXZWJTaXplPiBXZWJTaXplOjpjcmVhdGUoY29uc3QgV0tTaXplJiBzaXplKQor
eworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNpemUoc2l6ZSkpOworfQor
CitQYXNzUmVmUHRyPFdlYlBvaW50PiBXZWJQb2ludDo6Y3JlYXRlKGNvbnN0IFdLUG9pbnQmIHBv
aW50KQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvaW50KHBvaW50
KSk7Cit9CisgIAorUGFzc1JlZlB0cjxXZWJSZWN0PiBXZWJSZWN0OjpjcmVhdGUoY29uc3QgV0tS
ZWN0JiByZWN0KQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlY3Qo
cmVjdCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJHZW9tZXRyeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdl
b21ldHJ5LmgKaW5kZXggYmRlYTljN2E2YmM0MzFlOTMzMTBmM2E4Zjg4MGZkZGNjZDNlZTYxYy4u
ZGMxMmRhOGI0NzAxOWNiYjgxY2JlMDY4NDkwNTNhMjhjMDY1MjFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkdlb21ldHJ5LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdo
dCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsMTAgKzQzLDcgQEAgY2xhc3Mg
V2ViU2l6ZSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBU
eXBlIEFQSVR5cGUgPSBUeXBlU2l6ZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNpemU+
IGNyZWF0ZShjb25zdCBXS1NpemUmIHNpemUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlNpemUoc2l6ZSkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJT
aXplPiBjcmVhdGUoY29uc3QgV0tTaXplJik7CiAKICAgICBjb25zdCBXS1NpemUmIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KIApAQCAtNjMsMTAgKzYxLDcgQEAgY2xhc3MgV2ViUG9p
bnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBB
UElUeXBlID0gVHlwZVBvaW50OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9pbnQ+IGNy
ZWF0ZShjb25zdCBXS1BvaW50JiBwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViUG9pbnQocG9pbnQpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
UG9pbnQ+IGNyZWF0ZShjb25zdCBXS1BvaW50Jik7CiAKICAgICBjb25zdCBXS1BvaW50JiBwb2lu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnQ7IH0KIApAQCAtODQsMTAgKzc5LDcgQEAgY2xhc3Mg
V2ViUmVjdCA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBU
eXBlIEFQSVR5cGUgPSBUeXBlUmVjdDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlY3Q+
IGNyZWF0ZShjb25zdCBXS1JlY3QmIHJlY3QpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlJlY3QocmVjdCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJS
ZWN0PiBjcmVhdGUoY29uc3QgV0tSZWN0Jik7CiAKICAgICBjb25zdCBXS1JlY3QmIHJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYk51bWJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTnVtYmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTAyNGMwODU5MmQ3M2ZlNzI5ZGIzMzFkZDQzOTA2YmY5N2Q1MjYyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5jcHAKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u
LCAKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
IG1heSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViTnVtYmVyLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyVHlwZSwgQVBJT2JqZWN0OjpUeXBlIEFQSU9i
amVjdFR5cGU+CitQYXNzUmVmUHRyPFdlYk51bWJlcjxOdW1iZXJUeXBlLCBBUElPYmplY3RUeXBl
PiA+IFdlYk51bWJlcjxOdW1iZXJUeXBlLCBBUElPYmplY3RUeXBlPjo6Y3JlYXRlKE51bWJlclR5
cGUgdmFsdWUpCit7CisgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTnVtYmVy
KHZhbHVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51
bWJlci5oCmluZGV4IDBiMDkyZWY4NTI5MTNmMDBlODNhOGM3NjYwZmFjM2RhNjRmZGVkMWEuLjhk
NzRhODI2YjA4YTliN2U3NDQ1ODZhYzcxOWUzNjVjYjA0YjVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJOdW1iZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViTnVtYmVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg
MjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTAgKzM3LDcgQEAgY2xhc3MgV2ViTnVt
YmVyIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUg
QVBJVHlwZSA9IEFQSU9iamVjdFR5cGU7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOdW1i
ZXI+IGNyZWF0ZShOdW1iZXJUeXBlIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJOdW1iZXIodmFsdWUpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViTnVtYmVyPE51bWJlclR5cGUsIEFQSU9iamVjdFR5cGU+ID4gY3JlYXRlKE51bWJlclR5cGUg
dmFsdWUpOwogCiAgICAgTnVtYmVyVHlwZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlN0cmluZy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTEyYjcxZDBk
YzBhMjdlMDIxMmJhOGNhNjMxMTk0ZjBjYmM1MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlN0cmluZy5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAqIGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJT
dHJpbmc+IFdlYlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcoY29uc3QgY2hhciogc3RyaW5n
KQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlN0cmluZyhTdHJpbmc6
OmZyb21VVEY4KHN0cmluZykpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViU3RyaW5nLmgKaW5kZXggMThiM2ZjOGZlOTMwODc2N2QzNTIzOGE5ZGI2MmQ2YTgx
NDFkNDFlYy4uZThkOWZjOGUyZjgwZjBhNDIzNzFiMzBjOWIwZTNiYTgwY2YzZmNjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJTdHJpbmcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSwxMCArNTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3RyaW5nKFN0cmluZyhKU1N0
cmluZ0dldENoYXJhY3RlcnNQdHIoanNTdHJpbmdSZWYpLCBKU1N0cmluZ0dldExlbmd0aChqc1N0
cmluZ1JlZikpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBj
cmVhdGVGcm9tVVRGOFN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpKTsK
LSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBjcmVhdGVGcm9tVVRGOFN0
cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpOwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlVSTC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zY2M0ZTYzZjNkNTQxODY4NWM5ZmUxNWQwOGYyNWYwNWNiNjBlOGE1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5jcHAKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKKyAqIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICog
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSAKKyAq
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViVVJMLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1Jl
ZlB0cjxXZWJVUkw+IFdlYlVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAg
IEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlVSTChzdHJpbmcpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VVJMLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKaW5kZXggMTRiZDk5ZjQ4Nzky
NWZiMzdjYTIwYmE3MjlmNjMzOWQxNzc1NDVlZi4uMWNkNDZkMDkyMDg2NGNlYTc5YmNhYmEyZjVm
MTI5MzEwOTAxMzk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MSwxMCArNDIsNyBAQCBjbGFzcyBXZWJVUkwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVVSTDsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlVSTD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkwoc3RyaW5nKSk7Ci0gICAgfQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlVSTD4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
aW5kZXggZTIyZjkwZWZkYjk3ZGIzZGNkZTkyZGNmMjVlMzM2Zjc1NzlhYmMxNi4uZDZlMTNmOTk0
OGVjNjlkYzllZWU1NGYzMTU0Y2U2ZjFkYTUzNDdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zOTMsMTIg
KzM5MywxNCBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNw
cCBcCiAgICAgU2hhcmVkL1dlYkdlc3R1cmVFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmNwcCBcCisgICAgU2hhcmVkL1dlYkdlb21ldHJ5LmNwcCBcCiAgICAg
U2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5jcHAgXAogICAgIFNoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmNwcCBcCiAgICAgU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIFwKICAgICBTaGFyZWQv
V2ViSW1hZ2UuY3BwIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCisgICAgU2hhcmVkL1dlYk51bWJlci5jcHAgXAogICAg
IFNoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAg
XApAQCAtNDA2LDcgKzQwOCw5IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9XZWJQb3B1cEl0
ZW0uY3BwIFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgXAogICAgIFNoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCisgICAgU2hhcmVkL1dlYlN0cmlu
Zy5jcHAgXAogICAgIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcCBcCisgICAgU2hhcmVkL1dlYlVS
TC5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVkL1dlYlVS
TFJlc3BvbnNlLmNwcCBcCiAgICAgU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGVmZGE0Y2RmMGZlZGY3
NjcxYjk5MTdlZWJlMWM5YjlhNzY5ZWFmOTUuLjU1ZTQ2ZDBhMGI4NDZkZTBiMWZkNWQ4MTc2Mzky
YmY4ZTEyNjZjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw5ICsyOCwyNSBAQAogI2luY2x1ZGUgIldl
YlByZWZlcmVuY2VzLmgiCiAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc1JlZlB0cjxXZWJQcmVmZXJlbmNlcz4gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZSgpCit7CisgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7
CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViUHJlZmVyZW5jZXMpOworfQorCitQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBKU0M6
OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcmVmZXJlbmNlcyhpZGVudGlmaWVyKSk7Cit9
CisKIFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgcGxhdGZvcm1Jbml0
aWFsaXplU3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgK
aW5kZXggMGY0OTQzYWI2OGZhODY1OTMyZGEzYWJkMmNlMTZmMGEwMWM2NTRlYi4uMDk1YWE3ZWFk
YTRlNzMzMWE2MTNjZTFhZmQ1Zjk0NjQ1ODI3MjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25z
IENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsMTQgKzQ2LDgg
QEAgY2xhc3MgV2ViUHJlZmVyZW5jZXMgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVByZWZlcmVuY2VzOwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKTsKLSAgICB9Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKGlkZW50
aWZpZXIpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IGNy
ZWF0ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgfldlYlByZWZlcmVuY2VzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlY2U2ZGFmN2U3ZGNjMmNmZTk0NjAzNTkwZWFiYmE5Y2UwMDc1NGM2Li43NjIwNDU5
ZTUxOWIxMTYwNmNlY2EyNmU2M2I3ZDdjMjhiNzBmZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjgsNiArNDI4LDEwIEBA
CiAJCTkzRkM2N0MwMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3QTAxMkQzQ0M3NDAw
QTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi87IH07CiAJCUI2MkU3MzEwMTQzMDQ3QTYwMDY5
RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMEYxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5jcHAgKi87IH07CiAJCUI2MkU3MzEyMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RS
ZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2
MkU3MzExMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCNjkwNDVCQTE0Njk3QjMwMDA0
RTM3QkUgLyogV2ViR2VvbWV0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjY5MDQ1QjkxNDY5N0IzMDAwNEUzN0JFIC8qIFdlYkdlb21ldHJ5LmNw
cCAqLzsgfTsKKwkJQjY5MDQ1QkUxNDY5N0I0NjAwNEUzN0JFIC8qIFdlYk51bWJlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjkwNDVCRDE0Njk3
QjQ2MDA0RTM3QkUgLyogV2ViTnVtYmVyLmNwcCAqLzsgfTsKKwkJQjY5MDQ1QzIxNDY5N0I1ODAw
NEUzN0JFIC8qIFdlYlN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNjkwNDVDMTE0Njk3QjU4MDA0RTM3QkUgLyogV2ViU3RyaW5nLmNwcCAq
LzsgfTsKKwkJQjY5MDQ1QzYxNDY5N0I2NzAwNEUzN0JFIC8qIFdlYlVSTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjkwNDVDNTE0Njk3QjY3MDA0
RTM3QkUgLyogV2ViVVJMLmNwcCAqLzsgfTsKIAkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8q
IENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICov
OyB9OwogCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTQxMzM0
MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLzsgfTsKIAkJQkMwMDkyRjcxMTU4
MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNTExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9vcE1h
Yy5tbSAqLzsgfTsKQEAgLTEzOTQsNiArMTM5OCwxMCBAQAogCQlCMzk2RUE1NTEyRTBFRDJEMDBG
NEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZp
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMwRjE0MzA0N0E2MDA2OUVD
MzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI2MkU3MzExMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUI2OTA0NUI5MTQ2OTdCMzAwMDRFMzdCRSAvKiBXZWJHZW9tZXRyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHZW9tZXRyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2OTA0NUJEMTQ2OTdCNDYwMDRFMzdCRSAv
KiBXZWJOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
TnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjY5MDQ1QzExNDY5N0I1
ODAwNEUzN0JFIC8qIFdlYlN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNjkw
NDVDNTE0Njk3QjY3MDA0RTM3QkUgLyogV2ViVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFu
ZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JyZWN0aW9u
UGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDA5MkY1MTE1ODM3QTMw
MEUwQUUyQSAvKiBSdW5Mb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUnVuTG9vcE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
ODYsNiArMjE5NCwxMCBAQAogCQkxQUFEREY0QjEwRDgyQUYwMDBEM0Q2M0QgLyogU2hhcmVkICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCNjkwNDVDNTE0
Njk3QjY3MDA0RTM3QkUgLyogV2ViVVJMLmNwcCAqLywKKwkJCQlCNjkwNDVDMTE0Njk3QjU4MDA0
RTM3QkUgLyogV2ViU3RyaW5nLmNwcCAqLywKKwkJCQlCNjkwNDVCRDE0Njk3QjQ2MDA0RTM3QkUg
LyogV2ViTnVtYmVyLmNwcCAqLywKKwkJCQlCNjkwNDVCOTE0Njk3QjMwMDA0RTM3QkUgLyogV2Vi
R2VvbWV0cnkuY3BwICovLAogCQkJCUJDRERCMzE0MTI0RUJDRUYwMDQ4RDEzQyAvKiBBUEkgKi8s
CiAJCQkJMUFBRjBDNDcxMkIxNjMyODAwOEU0OUUyIC8qIGNmICovLAogCQkJCUMwMUEyNUZGMTI2
NjJGMjEwMEM5RUQ1NSAvKiBjZyAqLywKQEAgLTQ2MzUsNiArNDY0NywxMCBAQAogCQkJCUUxQUVB
MjMwMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQUFGMjYzODE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUYwNUQ4NjE0Njg4MzQ4
MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUI2OTA0NUJBMTQ2OTdCMzAwMDRFMzdCRSAvKiBXZWJHZW9tZXRyeS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCNjkwNDVCRTE0Njk3QjQ2MDA0RTM3QkUgLyogV2ViTnVtYmVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI2OTA0NUMyMTQ2OTdCNTgwMDRFMzdCRSAvKiBXZWJT
dHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjY5MDQ1QzYxNDY5N0I2NzAwNEUzN0JFIC8q
IFdlYlVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRl
eCBjNjdjYTJjZjZhNDY1YTIzMTNjZDZiZTJiNGI3OWQ0MDY5ZDM4M2E0Li5hYTk4ODg1ZDVmMTE3
NmUwMWViN2RjM2IxNTQ0M2E1OTkwYTdhYjc5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
CkBAIC02NzEsNiArNjcxLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJHZW9tZXRyeS5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJHZW9tZXRyeS5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KQEAgLTcxMSw2ICs3MTUsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYk51bWJlci5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxX
ZWJOdW1iZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC03NzUsNiArNzgzLDEwIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJT
dHJpbmcuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxTaGFyZWRcV2ViU3RyaW5nLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNzgzLDYgKzc5
NSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxTaGFyZWRcV2ViVVJMLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlVSTC5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118387</attachid>
            <date>2011-12-08 07:33:17 -0800</date>
            <delta_ts>2011-12-08 07:44:45 -0800</delta_ts>
            <desc>Initialize threading</desc>
            <filename>bug-70127-20111208210313.patch</filename>
            <type>text/plain</type>
            <size>8992</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWY0MmU3MzI5MTZlMTFh
NjhiOGM2OTA4MGU1YTZiMjU2M2ExYmFkYi4uNmFjOThlOThlNzc3ZTUwNDc4NmY4NmNkMGY3ZGI5
ZWMzMzY4ZDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTA4ICBOYXlh
biBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIElu
aXRpYWxpemUgdGhyZWFkaW5nIGluIFVJIHByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpBUElPYmplY3Q6OkFQSU9iamVjdCk6CisgICAgICAgICogU2hhcmVkL0FQ
SU9iamVjdC5oOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwog
MjAxMS0xMi0wOCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXBzdGVhbSB0aGUgUXQgY2hhbmdlcyB0byB0aGUgRWRpdG9yU3RhdGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDQxNjM4NzVhMGExMDM0MGYyNzRkY2JhNjdkYmMxMWY3
NTgwMDRlNS4uOTZhMjBjYmNmYTIwMzUwYWIzY2UzZGM5YzdiNjUyNGE0NWRhMzljOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKQEAgLTEyOSw2ICsxMjksNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAogCiAgICAgU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5jcHAKKyAgICBTaGFyZWQvQVBJT2JqZWN0LmNwcAogICAgIFNoYXJl
ZC9DaGlsZFByb2Nlc3MuY3BwCiAgICAgU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcAogICAgIFNo
YXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA3NzUw
NGQwNjhiZWEyMDM0MGQwZjc5MDllZTc5MTIyZjc1ODdmMjBiLi4yMTRkYjU1Yjc4MGViYzc4ZWNj
NmJiZDg0OWMzMjFjYzhlNDQ3NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMjk1LDYgKzI5
NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLVVJMUmVzcG9uc2UuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMGI4OGQyMWE0MWMxMjVjMjc0YmQ5NjdkMzJiZDliZDFhN2NkYzY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5jcHAKQEAgLTAsMCAr
MSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAK
KyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IgCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90
b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1h
eSAKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgCisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiAKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIAorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
CisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworQVBJT2JqZWN0OjpBUElPYmplY3QoKQoreworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGlu
ZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggZGVjYmRiOTdhN2M2OTEy
MzAxOTRiMmMxNjliMjUxNjMwN2Q3MjU5Ny4uMGY0ZjRhMzdmNWJmNTY1ZWVmODMwMWIwNmFiY2Zi
ZGUwNGEwZDZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTI2LDkgKzEyNiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAogcHJvdGVj
dGVkOgotICAgIEFQSU9iamVjdCgpCi0gICAgewotICAgIH0KKyAgICBBUElPYmplY3QoKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZDNlNGQ5M2EzMDg1MDYw
YWFmZWFjNWYxNThlMGJmYTQ3NDU4ZDU0ZC4uYjg0NTFjNzc2MDlmYzAyZTZiOTBmYjE5NzU3N2Vl
NDQ5NzVjZDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zOTMsNiArMzkzLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBcCiAgICAgU2hh
cmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHAgXAogICAgIFNoYXJlZC9BUElDbGllbnRUcmFpdHMu
Y3BwIFwKKyAgICBTaGFyZWQvQVBJT2JqZWN0LmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNTUwOGE1ODNl
ZWNjODNmMGRhZTQyZTNiMGQ2MzI4NDkzMWY2NDM4Li40ZGFlZWExYTIwYTBkMWY5NzYzYWI2ODVk
M2VjMjI5Mzg4MGQ0NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDgsNiArNDQ4LDcgQEAKIAkJOTNGQzY3QzAxMkQzQ0NG
MjAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFk
YXB0ZXIuaCAqLzsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJ
QjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlF
QzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAz
RjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CiAJCUI4NzhCNjE1MTMz
NDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3Jy
ZWN0aW9uUGFuZWwuaCAqLzsgfTsKIAkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJl
Y3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi87IH07
CiAJCUJDMDA5MkY3MTE1ODM3QTMwMEUwQUUyQSAvKiBSdW5Mb29wTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMDkyRjUxMTU4MzdBMzAwRTBB
RTJBIC8qIFJ1bkxvb3BNYWMubW0gKi87IH07CkBAIC0xNDQ4LDYgKzE0NDksNyBAQAogCQlCMzk2
RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMw
RjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUI2MkU3MzExMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2MzQwM0Y4MTQ5MTBENTcwMDEwNzBCNSAv
KiBBUElPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJ
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg3OEI2MTMxMzM0MjhE
QzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Qjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMDkyRjUxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxv
b3BNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW5Mb29w
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI1Myw2ICsyMjU1LDcgQEAK
IAkJMUFBRERGNEIxMEQ4MkFGMDAwRDNENjNEIC8qIFNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8q
IEFQSU9iamVjdC5jcHAgKi8sCiAJCQkJQkNEREIzMTQxMjRFQkNFRjAwNDhEMTNDIC8qIEFQSSAq
LywKIAkJCQkxQUFGMEM0NzEyQjE2MzI4MDA4RTQ5RTIgLyogY2YgKi8sCiAJCQkJQzAxQTI1RkYx
MjY2MkYyMTAwQzlFRDU1IC8qIGNnICovLApAQCAtNDc4MCw2ICs0NzgzLDcgQEAKIAkJCQkzMUJB
OTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0QzNjc1QzE0OEMyNkMwMDA0NDdFODcgLyog
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThDRkVDRTk0
MTQ5MEYxNDAwMDJBQUEzMiAvKiBFZGl0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
NjM0MDNGOTE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCmluZGV4IDgxMmE1NzBjOTg1MDMzNGI3YjM0ZmEzM2Fl
MDcwMzY3YmQyODEzZTYuLjBiN2RhYTU4YjhiOWYxMmExNTk4NDJkNDNjNjFkYzYzOTBhYjM3MDEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKQEAgLTQwMyw2ICs0MDMsMTAgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSU9i
amVjdC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFNoYXJlZFxBUElPYmplY3QuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="118122"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>