<?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>12783</bug_id>
          
          <creation_ts>2007-02-15 17:48:31 -0800</creation_ts>
          <short_desc>curl networking improvements for gdk build</short_desc>
          <delta_ts>2007-02-17 00:24:58 -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>New Bugs</component>
          <version>420+</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Krzysztof Kowalczyk">kkowalczyk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>23129</commentid>
    <comment_count>0</comment_count>
    <who name="Krzysztof Kowalczyk">kkowalczyk</who>
    <bug_when>2007-02-15 17:48:31 -0800</bug_when>
    <thetext>curl networking improvements for gdk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23130</commentid>
    <comment_count>1</comment_count>
      <attachid>13195</attachid>
    <who name="Krzysztof Kowalczyk">kkowalczyk</who>
    <bug_when>2007-02-15 17:50:20 -0800</bug_when>
    <thetext>Created attachment 13195
curl networking improvements

Curl networking improvements, enable entering text into text field on gdk, comment-out chatty messages that clutter output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22936</commentid>
    <comment_count>2</comment_count>
      <attachid>13195</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-02-16 23:01:22 -0800</bug_when>
    <thetext>Comment on attachment 13195
curl networking improvements

+    free((void*)m_url);

   Is this cast to void* really necessary?

+    for (;;) {

   I believe while (true) is a bit more inline with our coding style.

+    void setupPOST(ResourceHandle* job);
+    void setupPUT(ResourceHandle* job);

   You should remove the parameter names here.

   I don&apos;t know much about curl, but this code looks sane. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22938</commentid>
    <comment_count>3</comment_count>
      <attachid>13195</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-02-16 23:06:55 -0800</bug_when>
    <thetext>Comment on attachment 13195
curl networking improvements


+        struct curl_slist *m_customHeaders;   
WebKit style guide is Type* ident
so &quot;struct curl_slist* m_customHeaders&quot;

*  in the wrong place again:
+        ResourceHandle *job;
+        ResourceHandleInternal *d = job-&gt;getInternal();
+            char *url = 0;
+        struct curl_slist *headers = 0;
+            const char *header = headerString.latin1().data();
+    char * m_cookieJarFileName; // FIXME: never freed

Otherwise looks reasonable -- but i cannot vouch for correctness, i don&apos;t know gdk at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22916</commentid>
    <comment_count>4</comment_count>
      <attachid>13209</attachid>
    <who name="Krzysztof Kowalczyk">kkowalczyk</who>
    <bug_when>2007-02-17 00:12:34 -0800</bug_when>
    <thetext>Created attachment 13209
updated per review comments

Fixed all style issues pointed out in the review. Also added fixes for FrameLoaderClientGdk.

free((void*)) and for (;;) were because there is a compiler that complains about free() without case and while (true) loop, but I just checked and this compiler isn&apos;t gcc event with -Wall -pedantic so I changed those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22909</commentid>
    <comment_count>5</comment_count>
      <attachid>13209</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-02-17 00:16:24 -0800</bug_when>
    <thetext>Comment on attachment 13209
updated per review comments

r=me. Thanks for fixing those few issues!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22901</commentid>
    <comment_count>6</comment_count>
    <who name="Krzysztof Kowalczyk">kkowalczyk</who>
    <bug_when>2007-02-17 00:24:58 -0800</bug_when>
    <thetext>commited as r19676 and r19677</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13195</attachid>
            <date>2007-02-15 17:50:20 -0800</date>
            <delta_ts>2007-02-17 00:12:34 -0800</delta_ts>
            <desc>curl networking improvements</desc>
            <filename>wc.patch</filename>
            <type>text/plain</type>
            <size>19817</size>
            <attacher name="Krzysztof Kowalczyk">kkowalczyk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTY0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMDctMDItMTUgIEtyenlzenRvZiBLb3dhbGN6eWsgIDxra293YWxj
enlrQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDdXJsIG5ldHdvcmtpbmcgaW1wcm92ZW1lbnRzIGluc3BpcmVkIGJ5IE1pa2UgRW1t
ZWwncyBwYXRjaGVzIGluCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMzMyLgorICAgICAgICBDb21tZW50LW91dCBzb21lIGNoYXR0eSBtZXNzYWdlcyB0
aGF0IGNsdXR0ZXIgdGhlIG91dHB1dC4KKyAgICAgICAgRW5hYmxlIGVudGVyaW5nIHRleHQgaW50
byB0ZXh0IGZpZWxkcyBvbiBnZGsuCisKKyAgICAgICAgKiBwYWdlL2dkay9FdmVudEhhbmRsZXJH
ZGsuY3BwOiBDb21tZW50LW91dCBjaGF0dHkgbWVzc2FnZXMuCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBsYXRmb3JtL2dkay9FZGl0b3JD
bGllbnRHZGsuY3BwOiBFbmFibGUgZW50ZXJpbmcgdGV4dCBpbnRvIHRleHQgZmllbGRzLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50R2RrOjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6IENv
bW1lbnQtb3V0IGNoYXR0eSBtZXNzYWdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDogUmVtZW1iZXIgdXJsIGFuZCBjdXN0b20gaGVh
ZGVycworICAgICAgICBmb3IgdGhlIHJlcXVlc3QgbGlmZXRpbWUgYW5kIGZyZWUgdGhlbSBhdCB0
aGUgZW5kLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9nZGsvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcDogQ3VybCBpbXByb3ZlbWVudHM6
CisgICAgICAgIC0gcmVtb3ZlIG1fdXNlU2ltcGxlIGNvZGUtcGF0aCBzaW5jZSBpdCB3YXNuJ3Qg
dXNlZCBhbnl3aGVyZQorICAgICAgICAtIGRvbid0IHVzZSBoYXNobWFwIGZvciBrZWVwaW5nIHRy
YWNrIG9mIG91dHN0YW5kaW5nIGpvYnMgLSBjdXJsIGRvZXMgaXQgYW55d2F5CisgICAgICAgIC0g
c2V0IGN1c3RvbSBoZWFkZXJzIGZyb20gcmVxdWVzdAorICAgICAgICAtIGVuYWJsZSBnemlwIGFu
ZCBkZWZsYXRlIHRocm91Z2ggQWNjZXB0LUVuY29kaW5nCisgICAgICAgIC0gc2V0dXAgY3VybCB0
byBzaGFyZSBjb29raWVzIGFuZCBETlMgY2FjaGUgYmV0d2VlbiByZXF1ZXN0cworICAgICAgICAt
IGVuYWJsZSBwZXJzaXN0aW5nIG9mIGNvb2tpZXMgaW4gYSBmaWxlIChpZiBjbGllbnQgcHJvdmlk
ZXMgZmlsZSBuYW1lCisgICAgICAgICAgZm9yIGNvb2tpZXMgdmlhIFJlc291cmNlSGFuZGxlTWFu
YWdlcjo6c2V0Q29va2llSmFyRmlsZU5hbWUoKSkKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlTWFuYWdlcjo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3dubG9hZFRpbWVyQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpyZW1vdmVGcm9tQ3VybCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUFVUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0dXBQT1NUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2dkay9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaDoKKwogMjAwNy0wMi0xNSAgS2V2aW4g
RGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CiAKICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
SW5kZXg6IFdlYkNvcmUvcGFnZS9nZGsvRXZlbnRIYW5kbGVyR2RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvZ2RrL0V2ZW50SGFuZGxlckdkay5jcHAJKHJldmlzaW9uIDE5NjQ1KQor
KysgV2ViQ29yZS9wYWdlL2dkay9FdmVudEhhbmRsZXJHZGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Myw3ICs5Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRUb1cK
IAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBub3RJ
bXBsZW1lbnRlZCgpOyAgLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIGl0J3MgdmVyeSBjaGF0dHkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ2RrL0VkaXRv
ckNsaWVudEdkay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9nZGsvRWRpdG9y
Q2xpZW50R2RrLmNwcAkocmV2aXNpb24gMTk2NDUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dkay9F
ZGl0b3JDbGllbnRHZGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIGJvb2wg
RWRpdG9yQ2xpZW50R2RrOjpzaG91bGRFbmRFZGl0aW5nKFcKIGJvb2wgRWRpdG9yQ2xpZW50R2Rr
OjpzaG91bGRJbnNlcnRUZXh0KFN0cmluZywgUmFuZ2UqLCBFZGl0b3JJbnNlcnRBY3Rpb24pCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50R2RrOjpzaG91bGRBcHBseVN0eWxlKFdlYkNvcmU6
OkNTU1N0eWxlRGVjbGFyYXRpb24qLApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHJldmlzaW9uIDE5
NjQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NywxMyArNDc3LDEzIEBAIEludFBvaW50IEdy
YXBoaWNzQ29udGV4dDo6b3JpZ2luKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sKQogewogICAgIC8vIEZJWE1FOiB0aGlzIGlzIHBy
b2JhYmx5IGEgbm8tb3AgYnV0IEknbSBub3Qgc3VyZQotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgLy8gbm90SW1wbGVtZW50ZWQoKTsgLy8gY29tbWVudGVkLW91dCBiZWNhdXNlIGl0J3MgY2hh
dHR5IGFuZCBjbHV0dGVycyBvdXRwdXQKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbCkKIHsKICAgICAvLyBGSVhNRTogdGhp
cyBpcyBwcm9iYWJseSBhIG5vLW9wIGJ1dCBJJ20gbm90IHN1cmUKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIC8vbm90SW1wbGVtZW50ZWQoKTsgLy8gY29tbWVudGVkLW91dCBiZWNhdXNlIGl0
J3MgY2hhdHR5IGFuZCBjbHV0dGVycyBvdXRwdXQKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAkocmV2aXNpb24gMTk2NDUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjZW5kaWYK
IAogI2lmIFVTRShDVVJMKQotdHlwZWRlZiB2b2lkIENVUkw7CisjaW5jbHVkZSA8Y3VybC9jdXJs
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAtOTAsNiArOTAsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjZW5kaWYKICNpZiBVU0UoQ1VSTCkKICAgICAgICAgICAgICwgbV9oYW5k
bGUoMCkKKyAgICAgICAgICAgICwgbV91cmwoMCkKKyAgICAgICAgICAgICwgbV9jdXN0b21IZWFk
ZXJzKDApCiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgICAgICAsIG1fY3VycmVu
dE1hY0NoYWxsZW5nZShuaWwpCkBAIC0xMzQsNiArMTM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOworICAgICAg
ICBjaGFyKiBtX3VybDsKKyAgICAgICAgc3RydWN0IGN1cmxfc2xpc3QgKm1fY3VzdG9tSGVhZGVy
czsgICAgICAgIAogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICptX2N1cnJlbnRNYWNDaGFsbGVuZ2U7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvZ2RrL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2dkay9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShy
ZXZpc2lvbiAxOTY0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCgpCiB7CisgICAgZnJlZSgodm9pZCopbV91cmwpOworCisgICAgaWYgKG1fY3VzdG9tSGVh
ZGVycykKKyAgICAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChtX2N1c3RvbUhlYWRlcnMpOwogfQog
CiBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9nZGsvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ2RrL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE5NjQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2dkay9SZXNvdXJjZUhh
bmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMzMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIKIAorI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNkZWZp
bmUgbm90SW1wbGVtZW50ZWQoKSBkbyB7IGZwcmludGYoc3RkZXJyLCAiRklYTUU6IFVOSU1QTEVN
RU5URUQgJXMgJXM6JWRcbiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVf
Xyk7IH0gd2hpbGUoMCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgc2VsZWN0
VGltZW91dE1TID0gNTsKIGNvbnN0IGRvdWJsZSBwb2xsVGltZVNlY29uZHMgPSAwLjA1OwogCiBS
ZXNvdXJjZUhhbmRsZU1hbmFnZXI6OlJlc291cmNlSGFuZGxlTWFuYWdlcigpCi0gICAgOiBtX3Vz
ZVNpbXBsZShmYWxzZSkKLSAgICAsIGpvYnMobmV3IEhhc2hTZXQ8UmVzb3VyY2VIYW5kbGUqPikK
LSAgICAsIG1fZG93bmxvYWRUaW1lcih0aGlzLCAmUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3du
bG9hZFRpbWVyQ2FsbGJhY2spCisgICAgOiBtX2Rvd25sb2FkVGltZXIodGhpcywgJlJlc291cmNl
SGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKQorICAgICwgbV9jb29raWVKYXJG
aWxlTmFtZSgwKQogewogICAgIGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKTsKLSAg
ICBjdXJsTXVsdGlIYW5kbGUgPSBjdXJsX211bHRpX2luaXQoKTsKKyAgICBtX2N1cmxNdWx0aUhh
bmRsZSA9IGN1cmxfbXVsdGlfaW5pdCgpOworICAgIG1fY3VybFNoYXJlSGFuZGxlID0gY3VybF9z
aGFyZV9pbml0KCk7CisgICAgY3VybF9zaGFyZV9zZXRvcHQobV9jdXJsU2hhcmVIYW5kbGUsIENV
UkxTSE9QVF9TSEFSRSwgQ1VSTF9MT0NLX0RBVEFfQ09PS0lFKTsKKyAgICBjdXJsX3NoYXJlX3Nl
dG9wdChtX2N1cmxTaGFyZUhhbmRsZSwgQ1VSTFNIT1BUX1NIQVJFLCBDVVJMX0xPQ0tfREFUQV9E
TlMpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5h
bWUoY29uc3QgY2hhciogY29va2llSmFyRmlsZU5hbWUpCit7IAorICAgIG1fY29va2llSmFyRmls
ZU5hbWUgPSBzdHJkdXAoY29va2llSmFyRmlsZU5hbWUpOwogfQogCiBSZXNvdXJjZUhhbmRsZU1h
bmFnZXIqIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKQpAQCAtNTMsMTEg
KzY1LDcgQEAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKiBSZXNvdXJjZUhhbmRsZU1hbgogICAgIHJl
dHVybiBzaGFyZWRJbnN0YW5jZTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnVz
ZVNpbXBsZVRyYW5zZmVyKGJvb2wgdXNlU2ltcGxlKQotewotICAgIG1fdXNlU2ltcGxlID0gdXNl
U2ltcGxlOwotfQotCisvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUg
YmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiBzdGF0aWMgc2l6ZV90IHdyaXRlQ2Fs
bGJhY2sodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBvYmopCiB7
CiAgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4o
b2JqKTsKQEAgLTY4LDYgKzc2LDggQEAgc3RhdGljIHNpemVfdCB3cml0ZUNhbGxiYWNrKHZvaWQq
IHB0ciwgcwogICAgIHJldHVybiB0b3RhbFNpemU7CiB9CiAKKy8vIFRoaXMgaXMgYmVpbmcgY2Fs
bGVkIGZvciBlYWNoIEhUVFAgaGVhZGVyIGluIHRoZSByZXNwb25zZSBzbyBpdCdsbCBiZSBjYWxs
ZWQKKy8vIG11bHRpcGxlIHRpbWVzIGZvciBhIGdpdmVuIHJlc3BvbnNlLgogc3RhdGljIHNpemVf
dCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZv
aWQqIGRhdGEpCiB7CiAgICAgaW50IHRvdGFsU2l6ZSA9IHNpemUgKiBubWVtYjsKQEAgLTc2LDEx
OSArODYsMTA1IEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCAKIAog
dm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayhUaW1lcjxS
ZXNvdXJjZUhhbmRsZU1hbmFnZXI+KiB0aW1lcikKIHsKLSAgICBpZiAoam9icy0+aXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fZG93bmxvYWRUaW1lci5zdG9wKCk7CisgICAgZmRfc2V0IGZkcmVhZDsK
KyAgICBmZF9zZXQgZmR3cml0ZTsKKyAgICBmZF9zZXQgZmRleGNlcDsKKyAgICBpbnQgbWF4ZmQg
PSAwOworCisgICAgRkRfWkVSTygmZmRyZWFkKTsKKyAgICBGRF9aRVJPKCZmZHdyaXRlKTsKKyAg
ICBGRF9aRVJPKCZmZGV4Y2VwKTsKKyAgICBjdXJsX211bHRpX2Zkc2V0KG1fY3VybE11bHRpSGFu
ZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CisKKyAgICBzdHJ1Y3Qg
dGltZXZhbCB0aW1lb3V0OworICAgIHRpbWVvdXQudHZfc2VjID0gMDsKKyAgICB0aW1lb3V0LnR2
X3VzZWMgPSBzZWxlY3RUaW1lb3V0TVMgKiAxMDAwOyAgICAgICAvLyBzZWxlY3Qgd2FpdHMgbWlj
cm9zZWNvbmRzCisKKyAgICBpbnQgcmMgPSA6OnNlbGVjdChtYXhmZCArIDEsICZmZHJlYWQsICZm
ZHdyaXRlLCAmZmRleGNlcCwgJnRpbWVvdXQpOworCisgICAgaWYgKC0xID09IHJjKSB7CisjaWZu
ZGVmIE5ERUJVRworICAgICAgICBwcmludGYoImJhZDogc2VsZWN0KCkgcmV0dXJuZWQgLTFcbiIp
OworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fdXNlU2ltcGxlKSB7
Ci0gICAgICAgIGZvciAoSGFzaFNldDxSZXNvdXJjZUhhbmRsZSo+OjppdGVyYXRvciBpdCA9IGpv
YnMtPmJlZ2luKCk7IGl0ICE9IGpvYnMtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBSZXNv
dXJjZUhhbmRsZSogam9iID0gKml0OwotICAgICAgICAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKLSAgICAgICAgICAgIENVUkxjb2RlIHJlcyA9IGN1
cmxfZWFzeV9wZXJmb3JtKGQtPm1faGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gQ1VS
TEVfT0spCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvciBXSVRIIEpPQiAlZFxuIiwgcmVz
KTsKLSAgICAgICAgICAgIGlmIChkLT5jbGllbnQoKSkgeworCisgICAgaW50IHJ1bm5pbmdIYW5k
bGVzID0gMDsKKyAgICBDVVJMTWNvZGUgY3VybENvZGUgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZP
Uk07CisgICAgd2hpbGUgKENVUkxNX0NBTExfTVVMVElfUEVSRk9STSA9PSBjdXJsQ29kZSkgewor
ICAgICAgICBjdXJsQ29kZSA9IGN1cmxfbXVsdGlfcGVyZm9ybShtX2N1cmxNdWx0aUhhbmRsZSwg
JnJ1bm5pbmdIYW5kbGVzKTsKKyAgICB9CisKKyAgICAvLyBjaGVjayB0aGUgY3VybCBtZXNzYWdl
cyBpbmRpY2F0aW5nIGNvbXBsZXRlZCB0cmFuc2ZlcnMKKyAgICAvLyBhbmQgZnJlZSB0aGVpciBy
ZXNvdXJjZXMKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGludCBtZXNzYWdlc0luUXVldWU7Cisg
ICAgICAgIENVUkxNc2cqIG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG1fY3VybE11bHRpSGFu
ZGxlLCAmbWVzc2FnZXNJblF1ZXVlKTsKKyAgICAgICAgaWYgKCFtc2cpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBpZiAoQ1VSTE1TR19ET05FICE9IG1zZy0+bXNnKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgLy8gZmluZCB0aGUgbm9kZSB3aGljaCBoYXMgc2FtZSBk
LT5tX2hhbmRsZSBhcyBjb21wbGV0ZWQgdHJhbnNmZXIKKyAgICAgICAgQ1VSTCogaGFuZGxlID0g
bXNnLT5lYXN5X2hhbmRsZTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZSk7CisgICAgICAgIFJlc291
cmNlSGFuZGxlICpqb2I7CisgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGhhbmRsZSwgQ1VSTElO
Rk9fUFJJVkFURSwgJmpvYik7CisgICAgICAgIEFTU0VSVChqb2IpOworICAgICAgICBpZiAoIWpv
YikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlc291cmNlSGFuZGxlSW50ZXJu
YWwgKmQgPSBqb2ItPmdldEludGVybmFsKCk7CisgICAgICAgIGlmIChDVVJMRV9PSyA9PSBtc2ct
PmRhdGEucmVzdWx0KSB7CisgICAgICAgICAgICBpZiAoZC0+Y2xpZW50KCkpCiAgICAgICAgICAg
ICAgICAgZC0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcoam9iKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGQtPm1faGFuZGxlKTsKLSAgICAgICAgICAg
IGQtPm1faGFuZGxlID0gMDsKLSAgICAgICAgfQotICAgICAgICBqb2JzLT5jbGVhcigpOwotICAg
ICAgICBtX2Rvd25sb2FkVGltZXIuc3RvcCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEZEX1pF
Uk8oJmZkcmVhZCk7Ci0gICAgICAgIEZEX1pFUk8oJmZkd3JpdGUpOwotICAgICAgICBGRF9aRVJP
KCZmZGV4Y2VwKTsKLSAgICAgICAgY3VybF9tdWx0aV9mZHNldChjdXJsTXVsdGlIYW5kbGUsICZm
ZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKLSAgICAgICAgaW50IG5ydW5uaW5n
OwotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OwotICAgICAgICBpbnQgcmV0dmFsOwot
ICAgICAgICB0aW1lb3V0LnR2X3NlYyA9IDA7Ci0gICAgICAgIHRpbWVvdXQudHZfdXNlYyA9IHNl
bGVjdFRpbWVvdXRNUyAqIDEwMDA7ICAgICAgIC8vIHNlbGVjdCB3YWl0cyBtaWNyb3NlY29uZHMK
LSAgICAgICAgcmV0dmFsID0gOjpzZWxlY3QobWF4ZmQgKyAxLCAmZmRyZWFkLCAmZmR3cml0ZSwg
JmZkZXhjZXAsICZ0aW1lb3V0KTsKLSAgICAgICAgc3dpdGNoIChyZXR2YWwpIHsKLSAgICAgICAg
ICAgIGNhc2UgLTE6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VsZWN0IGVycm9yCi0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICAgICAgICAgIHByaW50ZigiJXMsIHNlbGVjdCBlcnJvciglZClc
biIsIF9fUFJFVFRZX0ZVTkNUSU9OX18scmV0dmFsKTsKLSNlbmRpZgotICAgICAgICAgICAgICAg
IC8qIGZhbGx0aHJvdWdoKi8KLSAgICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgIC8v
IHNlbGVjdCB0aW1lb3V0CisgICAgICAgIH0gZWxzZSB7CiAjaWZuZGVmIE5ERUJVRwotICAgICAg
ICAgICAgICAgIHByaW50ZigiJXMsIHNlbGVjdCB0aW1lb3V0ICVkXG4iLCBfX1BSRVRUWV9GVU5D
VElPTl9fLHJldHZhbCk7CisgICAgICAgICAgICBjaGFyICp1cmwgPSAwOworICAgICAgICAgICAg
Y3VybF9lYXN5X2dldGluZm8oZC0+bV9oYW5kbGUsIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsICZ1
cmwpOworICAgICAgICAgICAgcHJpbnRmKCJDdXJsIEVSUk9SIGZvciB1cmw9JyVzJywgZXJyb3I6
ICclcydcbiIsIHVybCwgY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQpKTsKKyAg
ICAgICAgICAgIGZyZWUodXJsKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIC8qIGZhbGx0aHJv
dWdoLiB0aGlzIGNhbiBiZSB0aGUgZmlyc3QgcGVyZm9ybSB0byBiZSBtYWRlICovCi0gICAgICAg
ICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgIC8vIDErIGRlc2NyaXB0b3JzIGhh
dmUgZGF0YQotICAgICAgICAgICAgICAgIHdoaWxlIChDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0g
PT0gY3VybF9tdWx0aV9wZXJmb3JtKGN1cmxNdWx0aUhhbmRsZSwgJm5ydW5uaW5nKSkKLSAgICAg
ICAgICAgICAgICAgICAgeyB9CisgICAgICAgICAgICBpZiAoZC0+Y2xpZW50KCkpCisgICAgICAg
ICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZhaWwoam9iLCBSZXNvdXJjZUVycm9yKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgLy8gY2hlY2sgdGhlIGN1cmwgbWVzc2FnZXMgaW5kaWNhdGluZyBj
b21wbGV0ZWQgdHJhbnNmZXJzCi0gICAgICAgIC8vIGFuZCBmcmVlIHRoZWlyIHJlc291cmNlcwot
ICAgICAgICBpbnQgbm1zZ3M7Ci0gICAgICAgIHdoaWxlIChDVVJMTXNnKiBtc2cgPSBjdXJsX211
bHRpX2luZm9fcmVhZChjdXJsTXVsdGlIYW5kbGUsICZubXNncykpIHsKLSAgICAgICAgICAgIGlm
IChtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKLSAgICAgICAgICAgICAgICAvLyBmaW5kIHRo
ZSBub2RlIHdoaWNoIGhhcyBzYW1lIGQtPm1faGFuZGxlIGFzIGNvbXBsZXRlZCB0cmFuc2Zlcgot
ICAgICAgICAgICAgICAgIENVUkwqIGNoYW5kbGUgPSBtc2ctPmVhc3lfaGFuZGxlOwotICAgICAg
ICAgICAgICAgIGFzc2VydChjaGFuZGxlKTsKLSAgICAgICAgICAgICAgICBSZXNvdXJjZUhhbmRs
ZSAqam9iOwotICAgICAgICAgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGNoYW5kbGUsIENVUkxJ
TkZPX1BSSVZBVEUsICZqb2IpOwotICAgICAgICAgICAgICAgIGFzc2VydChqb2IpOyAvL2ZpeG1l
OiBhc3NlcnQtPmlmID8KLSAgICAgICAgICAgICAgICAvLyBpZiBmb3VuZCwgZGVsZXRlIGl0Ci0g
ICAgICAgICAgICAgICAgaWYgKGpvYikgewotICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsICpkID0gam9iLT5nZXRJbnRlcm5hbCgpOwotICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG1zZy0+ZGF0YS5yZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1VSTEVfT0s6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgdGhpcyB0
byBhdXRoZW50aWNhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzcENvZGUg
PSAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhkLT5t
X2hhbmRsZSwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwgJnJlc3BDb2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZW1vdmUoam9iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDdXJsIEVS
Uk9SICVzXG4iLCBjdXJsX2Vhc3lfc3RyZXJyb3IobXNnLT5kYXRhLnJlc3VsdCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgYW4gZXJyb3I/Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGpvYik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkN1cmxSZXF1ZXN0IG5vdCBmb3VuZCwg
ZXZlbnRob3VnaCBjdXJsIGQtPm1faGFuZGxlIGZpbmlzaGVkXG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0KDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICB9CisgICAgICAgIHJlbW92ZUZyb21DdXJsKGpvYik7CiAgICAgfQotICAgIGlmICgham9i
cy0+aXNFbXB0eSgpKQorCisgICAgaWYgKCFtX2Rvd25sb2FkVGltZXIuaXNBY3RpdmUoKSAmJiAo
cnVubmluZ0hhbmRsZXMgPiAwKSkKICAgICAgICAgbV9kb3dubG9hZFRpbWVyLnN0YXJ0T25lU2hv
dChwb2xsVGltZVNlY29uZHMpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6cmVt
b3ZlKFJlc291cmNlSGFuZGxlKiBqb2IpCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6cmVt
b3ZlRnJvbUN1cmwoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKICAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworICAgIEFTU0VSVChkLT5tX2hhbmRsZSk7
CiAgICAgaWYgKCFkLT5tX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChqb2JzLT5j
b250YWlucyhqb2IpKQotICAgICAgICBqb2JzLT5yZW1vdmUoam9iKTsKLSAgICBpZiAoam9icy0+
aXNFbXB0eSgpKQotICAgICAgICBtX2Rvd25sb2FkVGltZXIuc3RvcCgpOwotICAgIGlmIChkLT5j
bGllbnQoKSkgewotICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhqb2IpOwot
ICAgIH0KLSAgICBpZiAoZC0+bV9oYW5kbGUpIHsKLSAgICAgICAgY3VybF9tdWx0aV9yZW1vdmVf
aGFuZGxlKGN1cmxNdWx0aUhhbmRsZSwgZC0+bV9oYW5kbGUpOwotICAgICAgICBjdXJsX2Vhc3lf
Y2xlYW51cChkLT5tX2hhbmRsZSk7Ci0gICAgICAgIGQtPm1faGFuZGxlID0gTlVMTDsKLSAgICB9
CisgICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKG1fY3VybE11bHRpSGFuZGxlLCBkLT5tX2hh
bmRsZSk7CisgICAgY3VybF9lYXN5X2NsZWFudXAoZC0+bV9oYW5kbGUpOworICAgIGQtPm1faGFu
ZGxlID0gMDsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUFVUKFJlc291
cmNlSGFuZGxlKiBqb2IpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSogam9iKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjphZGQo
UmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKLSAgICBib29sIHN0YXJ0VGltZXIgPSBqb2JzLT5pc0Vt
cHR5KCk7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwo
KTsKICAgICBEZXByZWNhdGVkU3RyaW5nIHVybCA9IGpvYi0+dXJsKCkudXJsKCk7CiAgICAgZC0+
bV9oYW5kbGUgPSBjdXJsX2Vhc3lfaW5pdCgpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfUFJJVkFURSwgam9iKTsKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX0VSUk9SQlVGRkVSLCBlcnJvcl9idWZmZXIpOworICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZGRVIsIG1fY3VybEVycm9yQnVm
ZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFRlVO
Q1RJT04sIHdyaXRlQ2FsbGJhY2spOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUs
IENVUkxPUFRfV1JJVEVEQVRBLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIGhlYWRlckNhbGxiYWNrKTsKQEAgLTE5NiwyOSAr
MTkyLDYzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjphZGQoUmVzb3VyY2UKICAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsK
ICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX01BWFJFRElSUywgMTAp
OwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUEFVVEgsIENV
UkxBVVRIX0FOWSk7Ci0gICAgLy8gdXJsIHB0ciBtdXN0IHJlbWFpbiB2YWxpZCB0aHJvdWdoIHRo
ZSByZXF1ZXN0Ci0gICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9VUkws
IHVybC5hc2NpaSgpKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X1NIQVJFLCBtX2N1cmxTaGFyZUhhbmRsZSk7CisgICAgLy8gZW5hYmxlIGd6aXAgYW5kIGRlZmxh
dGUgdGhyb3VnaCBBY2NlcHQtRW5jb2Rpbmc6CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9FTkNPRElORywgIiIpOworCisgICAgLy8gdXJsIG11c3QgcmVtYWluIHZh
bGlkIHRocm91Z2ggdGhlIHJlcXVlc3QKKyAgICBBU1NFUlQoIWQtPm1fdXJsKTsKKyAgICBkLT5t
X3VybCA9IHN0cmR1cCh1cmwuYXNjaWkoKSk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9VUkwsIGQtPm1fdXJsKTsKKworICAgIGlmIChtX2Nvb2tpZUphckZpbGVO
YW1lKSB7CisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ09P
S0lFRklMRSwgbV9jb29raWVKYXJGaWxlTmFtZSk7CisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfQ09PS0lFSkFSLCBtX2Nvb2tpZUphckZpbGVOYW1lKTsKKyAg
ICB9CiAKLSAgICBpZiAobV91c2VTaW1wbGUpCi0gICAgICAgIGpvYnMtPmFkZChqb2IpOwotICAg
IGVsc2UgewotICAgICAgICBDVVJMTWNvZGUgcmV0ID0gY3VybF9tdWx0aV9hZGRfaGFuZGxlKGN1
cmxNdWx0aUhhbmRsZSwgZC0+bV9oYW5kbGUpOwotICAgICAgICAvLyBkb24ndCBjYWxsIHBlcmZv
cm0sIGJlY2F1c2UgZXZlbnRzIG11c3QgYmUgYXN5bmMKLSAgICAgICAgLy8gdGltZW91dCB3aWxs
IG9jY3VyIGFuZCBkbyBjdXJsX211bHRpX3BlcmZvcm0KLSAgICAgICAgaWYgKHJldCAmJiByZXQg
IT0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNKSB7Ci0gICAgICAgICAgICBwcmludGYoIkVycm9y
ICVkIHN0YXJ0aW5nIGpvYiAlc1xuIiwgcmV0LCBqb2ItPnVybCgpLnVybCgpLmFzY2lpKCkpOwot
ICAgICAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBhbiBlcnJvcj8KLSAgICAgICAgICAgIHN0YXJ0
VGltZXIgPWZhbHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGpvYnMtPmFkZChqb2Ip
OworICAgIGlmIChqb2ItPnJlcXVlc3RIZWFkZXJzKCkuc2l6ZSgpID4gMCkgeworICAgICAgICBz
dHJ1Y3QgY3VybF9zbGlzdCAqaGVhZGVycyA9IDA7CisgICAgICAgIEhUVFBIZWFkZXJNYXAgY3Vz
dG9tSGVhZGVycyA9IGpvYi0+cmVxdWVzdEhlYWRlcnMoKTsKKyAgICAgICAgSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY3VzdG9tSGVhZGVycy5lbmQoKTsKKyAgICAgICAgZm9y
IChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbUhlYWRlcnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBTdHJpbmcga2V5ID0gaXQtPmZpcnN0
OworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIFN0
cmluZyBoZWFkZXJTdHJpbmcgPSBrZXkgKyAiOiAiICsgdmFsdWU7CisgICAgICAgICAgICBjb25z
dCBjaGFyICpoZWFkZXIgPSBoZWFkZXJTdHJpbmcubGF0aW4xKCkuZGF0YSgpOworICAgICAgICAg
ICAgaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGhlYWRlcik7CisgICAgICAg
IH0KKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQSEVB
REVSLCBoZWFkZXJzKTsKKyAgICAgICAgZC0+bV9jdXN0b21IZWFkZXJzID0gaGVhZGVyczsKICAg
ICB9Ci0gICAgaWYgKHN0YXJ0VGltZXIpCisKKyAgICAvLyBkZWZhdWx0IHRvIEdFVAorICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUEdFVCwgVFJVRSk7CisKKyAg
ICBpZiAoIlBPU1QiID09IGpvYi0+bWV0aG9kKCkpCisgICAgICAgIHNldHVwUE9TVChqb2IpOwor
ICAgIGVsc2UgaWYgKCJQVVQiID09IGpvYi0+bWV0aG9kKCkpCisgICAgICAgIHNldHVwUFVUKGpv
Yik7CisgICAgZWxzZSBpZiAoIkhFQUQiID09IGpvYi0+bWV0aG9kKCkpCisgICAgICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfTk9CT0RZLCBUUlVFKTsKKworICAgIENV
UkxNY29kZSByZXQgPSBjdXJsX211bHRpX2FkZF9oYW5kbGUobV9jdXJsTXVsdGlIYW5kbGUsIGQt
Pm1faGFuZGxlKTsKKyAgICAvLyBkb24ndCBjYWxsIHBlcmZvcm0sIGJlY2F1c2UgZXZlbnRzIG11
c3QgYmUgYXN5bmMKKyAgICAvLyB0aW1lb3V0IHdpbGwgb2NjdXIgYW5kIGRvIGN1cmxfbXVsdGlf
cGVyZm9ybQorICAgIGlmIChyZXQgJiYgcmV0ICE9IENVUkxNX0NBTExfTVVMVElfUEVSRk9STSkg
eworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgcHJpbnRmKCJFcnJvciAlZCBzdGFydGluZyBqb2Ig
JXNcbiIsIHJldCwgam9iLT51cmwoKS51cmwoKS5hc2NpaSgpKTsKKyNlbmRpZgorICAgICAgICBq
b2ItPmNhbmNlbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2Rvd25s
b2FkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9kb3dubG9hZFRpbWVyLnN0YXJ0T25lU2hv
dChwb2xsVGltZVNlY29uZHMpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6Y2Fu
Y2VsKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7Ci0gICAgcmVtb3ZlKGpvYik7CisgICAgcmVtb3Zl
RnJvbUN1cmwoam9iKTsKICAgICAvLyBGSVhNRTogcmVwb3J0IGFuIGVycm9yPwogfQogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ2RrL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgJKHJldmlzaW9uIDE5NjQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2dk
ay9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMzAgKzQwLDIy
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKiBzaGFyZWRJbnN0
YW5jZSgpOwogICAgIHZvaWQgYWRkKFJlc291cmNlSGFuZGxlKik7CiAgICAgdm9pZCBjYW5jZWwo
UmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2b2lkIHNldENvb2tpZUphckZpbGVOYW1lKGNvbnN0IGNo
YXIqIGNvb2tpZUphckZpbGVOYW1lKTsKIAotICAgIC8vIElmIHRydWUsIGRvbid0IG11bHRpcGxl
eCBkb3dubG9hZHM6IGRvd25sb2FkIGNvbXBsZXRlbHkgb25lIGF0IGEgdGltZS4KLSAgICB2b2lk
IHVzZVNpbXBsZVRyYW5zZmVyKGJvb2wgdXNlU2ltcGxlKTsKKyAgICB2b2lkIHNldHVwUE9TVChS
ZXNvdXJjZUhhbmRsZSogam9iKTsKKyAgICB2b2lkIHNldHVwUFVUKFJlc291cmNlSGFuZGxlKiBq
b2IpOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcigpOwogICAgIHZvaWQg
ZG93bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qKTsKLSAg
ICB2b2lkIHJlbW92ZShSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQgcmVtb3ZlRnJvbUN1cmwo
UmVzb3VyY2VIYW5kbGUqKTsKIAotICAgIGJvb2wgbV91c2VTaW1wbGU7Ci0gICAgSGFzaFNldDxS
ZXNvdXJjZUhhbmRsZSo+KiBqb2JzOwogICAgIFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4g
bV9kb3dubG9hZFRpbWVyOwotICAgIENVUkxNKiBjdXJsTXVsdGlIYW5kbGU7IC8vIG5vdCBmcmVl
ZAorICAgIENVUkxNKiBtX2N1cmxNdWx0aUhhbmRsZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCisg
ICAgQ1VSTFNIKiBtX2N1cmxTaGFyZUhhbmRsZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCisgICAg
Y2hhciAqIG1fY29va2llSmFyRmlsZU5hbWU7IC8vIEZJWE1FOiBuZXZlciBmcmVlZAogCi0gICAg
Ly8gY3VybCBmaWxlaGFuZGxlcyB0byBwb2xsIHdpdGggc2VsZWN0Ci0gICAgZmRfc2V0IGZkcmVh
ZDsKLSAgICBmZF9zZXQgZmR3cml0ZTsKLSAgICBmZF9zZXQgZmRleGNlcDsKLQotICAgIGludCBt
YXhmZDsKLSAgICBjaGFyIGVycm9yX2J1ZmZlcltDVVJMX0VSUk9SX1NJWkVdOwotCi0gICAgLy8g
TlVMTC10ZXJtaW5hdGVkIGxpc3Qgb2Ygc3VwcG9ydGVkIHByb3RvY29scwotICAgIGNvbnN0IGNo
YXIqIGNvbnN0KiBjdXJsX3Byb3RvY29sczsgLy8gbm90IGZyZWVkCisgICAgY2hhciBtX2N1cmxF
cnJvckJ1ZmZlcltDVVJMX0VSUk9SX1NJWkVdOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="5140"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13209</attachid>
            <date>2007-02-17 00:12:34 -0800</date>
            <delta_ts>2007-02-17 00:16:24 -0800</delta_ts>
            <desc>updated per review comments</desc>
            <filename>wc.patch</filename>
            <type>text/plain</type>
            <size>20950</size>
            <attacher name="Krzysztof Kowalczyk">kkowalczyk</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTY3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDctMDItMTYgIEtyenlzenRvZiBLb3dhbGN6eWsgIDxra293YWxj
enlrQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDdXJsIG5ldHdvcmtpbmcgaW1wcm92ZW1lbnRzIGluc3BpcmVkIGJ5IE1pa2UgRW1t
ZWwncyBwYXRjaGVzIGluCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMzMyLgorICAgICAgICBGaXggRnJhbWVMb2FkZXJDbGllbnRHZGsgZHVlIHRvIGNo
YW5nZWQgRnJhbWVMb2FkZXJDbGllbnQgQVBJLgorCisgICAgICAgICogbG9hZGVyL2dkay9GcmFt
ZUxvYWRlckNsaWVudEdkay5jcHA6IE1hc3NhZ2UgZm9yIGNoYW5nZWQgQVBJLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRHZGs6OnNhdmVWaWV3U3RhdGVUb0l0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRHZGs6OnJlc3RvcmVWaWV3U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRHZGs6OmdlbmVyYXRlZE1JTUVUeXBl
Rm9yVVJMU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50R2RrOjp3
aWxsVXNlQXJjaGl2ZSk6CisgICAgICAgICogbG9hZGVyL2dkay9GcmFtZUxvYWRlckNsaWVudEdk
ay5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaDogUmVtZW1iZXIgdXJsIGFuZCBjdXN0b20gaGVhZGVycworICAgICAgICBmb3IgdGhl
IHJlcXVlc3QgbGlmZXRpbWUgYW5kIGZyZWUgdGhlbSBhdCB0aGUgZW5kLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VI
YW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyLmNwcDogdXJsIGltcHJvdmVtZW50czoKKyAgICAgICAgLSByZW1vdmUgbV91
c2VTaW1wbGUgY29kZS1wYXRoIHNpbmNlIGl0IHdhc24ndCB1c2VkIGFueXdoZXJlCisgICAgICAg
IC0gZG9uJ3QgdXNlIGhhc2htYXAgZm9yIGtlZXBpbmcgdHJhY2sgb2Ygb3V0c3RhbmRpbmcgam9i
cyAtIGN1cmwgZG9lcyBpdCBhbnl3YXkKKyAgICAgICAgLSBzZXQgY3VzdG9tIGhlYWRlcnMgZnJv
bSByZXF1ZXN0CisgICAgICAgIC0gZW5hYmxlIGd6aXAgYW5kIGRlZmxhdGUgdGhyb3VnaCBBY2Nl
cHQtRW5jb2RpbmcKKyAgICAgICAgLSBzZXR1cCBjdXJsIHRvIHNoYXJlIGNvb2tpZXMgYW5kIERO
UyBjYWNoZSBiZXR3ZWVuIHJlcXVlc3RzCisgICAgICAgIC0gZW5hYmxlIHBlcnNpc3Rpbmcgb2Yg
Y29va2llcyBpbiBhIGZpbGUgKGlmIGNsaWVudCBwcm92aWRlcyBmaWxlIG5hbWUKKyAgICAgICAg
ICBmb3IgY29va2llcyB2aWEgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXRDb29raWVKYXJGaWxl
TmFtZSgpKQorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpSZXNvdXJj
ZUhhbmRsZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
OjpzZXRDb29raWVKYXJGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OnJlbW92ZUZyb21DdXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlTWFuYWdlcjo6c2V0dXBQVVQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVNYW5hZ2VyOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZ2RrL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5oOgorCiAyMDA3LTAyLTE2ICBLcnp5c3p0b2YgS293YWxjenlrICA8a2tvd2Fs
Y3p5a0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL2dkay9GcmFtZUxvYWRlckNsaWVudEdkay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvZ2RrL0ZyYW1lTG9hZGVyQ2xpZW50R2RrLmNwcAkocmV2aXNpb24g
MTk2NzUpCisrKyBXZWJDb3JlL2xvYWRlci9nZGsvRnJhbWVMb2FkZXJDbGllbnRHZGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjMsMTIgKzIyMywyMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
R2RrOjpkaXNwYXRjaERpZEZpCiAgICAgZnJhbWVHZGstPm9uRGlkRmluaXNoTG9hZCgpOwogfQog
Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRHZGs6OmZyYW1lTG9hZENvbXBsZXRlZCgpIAogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7IAogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50R2RrOjpz
YXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OyAKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEdkazo6cmVzdG9yZVZpZXdTdGF0ZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsgCit9CisKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRHZGs6
OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBmYWxzZTsgfQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEdkazo6bWFrZURvY3VtZW50Vmlldygp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEdkazo6bWFrZVJl
cHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CkBAIC0y
NjksNyArMjc4LDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEdkazo6Y2FuSGFuZGxlUmVxdQog
Ym9vbCBGcmFtZUxvYWRlckNsaWVudEdkazo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYp
IGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiBib29sIEZyYW1lTG9h
ZGVyQ2xpZW50R2RrOjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJp
bmcmKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogU3RyaW5nIEZy
YW1lTG9hZGVyQ2xpZW50R2RrOjpnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBT
dHJpbmcmKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEdkazo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRl
KCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50R2RrOjpwcm92
aXNpb25hbExvYWRTdGFydGVkKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50R2RrOjpkaWRGaW5pc2hMb2FkKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50R2RrOjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CkBAIC0yODksNyArMjk3LDYgQEAgUmVzb3VyY2VFcnJvciBG
cmFtZUxvYWRlckNsaWVudEdkazo6Y2FubgogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVu
dEdkazo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0KIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnRHZGs6OnNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IG5vdElt
cGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogYm9vbCBGcmFtZUxvYWRlckNsaWVudEdkazo6
d2lsbFVzZUFyY2hpdmUoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBLVVJMJiBvcmlnaW5hbFVSTCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4g
ZmFsc2U7IH0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRHZGs6OnNhdmVTY3JvbGxQb3NpdGlvbkFu
ZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEdkazo6c2F2ZURvY3VtZW50Vmlld1RvUGFnZUNhY2hlKFBhZ2VD
YWNoZSopIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogYm9vbCBGcmFtZUxvYWRlckNsaWVudEdkazo6
Y2FuQ2FjaGVQYWdlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0K
IEZyYW1lKiBGcmFtZUxvYWRlckNsaWVudEdkazo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkgeyBub3RJ
bXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvZ2RrL0ZyYW1l
TG9hZGVyQ2xpZW50R2RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvZ2RrL0ZyYW1l
TG9hZGVyQ2xpZW50R2RrLmgJKHJldmlzaW9uIDE5Njc1KQorKysgV2ViQ29yZS9sb2FkZXIvZ2Rr
L0ZyYW1lTG9hZGVyQ2xpZW50R2RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw4ICsxNjEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdlbmVyYXRlZE1J
TUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNhdmVT
Y3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cm92aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE5Njc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQAogI2VuZGlmCiAKICNpZiBVU0UoQ1VSTCkKLXR5cGVkZWYgdm9pZCBDVVJMOworI2luY2x1
ZGUgPGN1cmwvY3VybC5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKQEAgLTkwLDYgKzkw
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAg
ICAgICAsIG1faGFuZGxlKDApCisgICAgICAgICAgICAsIG1fdXJsKDApCisgICAgICAgICAgICAs
IG1fY3VzdG9tSGVhZGVycygwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAg
ICAgLCBtX2N1cnJlbnRNYWNDaGFsbGVuZ2UobmlsKQpAQCAtMTM0LDYgKzEzNiw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIFVTRShDVVJMKQogICAgICAgICBDVVJMKiBtX2hh
bmRsZTsKKyAgICAgICAgY2hhciogbV91cmw7CisgICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBt
X2N1c3RvbUhlYWRlcnM7ICAgICAgICAKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAg
ICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbV9jdXJyZW50TWFjQ2hhbGxlbmdlOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2dkay9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAkocmV2aXNpb24gMTk2NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Z2RrL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQogeworICAgIGZyZWUobV91cmwpOworCisgICAgaWYgKG1fY3Vz
dG9tSGVhZGVycykKKyAgICAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChtX2N1c3RvbUhlYWRlcnMp
OwogfQogCiBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ2RrL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDE5Njc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2dkay9SZXNv
dXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMzMgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIK
IAorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CisK
KyNkZWZpbmUgbm90SW1wbGVtZW50ZWQoKSBkbyB7IGZwcmludGYoc3RkZXJyLCAiRklYTUU6IFVO
SU1QTEVNRU5URUQgJXMgJXM6JWRcbiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBf
X0xJTkVfXyk7IH0gd2hpbGUoMCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQg
c2VsZWN0VGltZW91dE1TID0gNTsKIGNvbnN0IGRvdWJsZSBwb2xsVGltZVNlY29uZHMgPSAwLjA1
OwogCiBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OlJlc291cmNlSGFuZGxlTWFuYWdlcigpCi0gICAg
OiBtX3VzZVNpbXBsZShmYWxzZSkKLSAgICAsIGpvYnMobmV3IEhhc2hTZXQ8UmVzb3VyY2VIYW5k
bGUqPikKLSAgICAsIG1fZG93bmxvYWRUaW1lcih0aGlzLCAmUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
Ojpkb3dubG9hZFRpbWVyQ2FsbGJhY2spCisgICAgOiBtX2Rvd25sb2FkVGltZXIodGhpcywgJlJl
c291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKQorICAgICwgbV9jb29r
aWVKYXJGaWxlTmFtZSgwKQogewogICAgIGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxM
KTsKLSAgICBjdXJsTXVsdGlIYW5kbGUgPSBjdXJsX211bHRpX2luaXQoKTsKKyAgICBtX2N1cmxN
dWx0aUhhbmRsZSA9IGN1cmxfbXVsdGlfaW5pdCgpOworICAgIG1fY3VybFNoYXJlSGFuZGxlID0g
Y3VybF9zaGFyZV9pbml0KCk7CisgICAgY3VybF9zaGFyZV9zZXRvcHQobV9jdXJsU2hhcmVIYW5k
bGUsIENVUkxTSE9QVF9TSEFSRSwgQ1VSTF9MT0NLX0RBVEFfQ09PS0lFKTsKKyAgICBjdXJsX3No
YXJlX3NldG9wdChtX2N1cmxTaGFyZUhhbmRsZSwgQ1VSTFNIT1BUX1NIQVJFLCBDVVJMX0xPQ0tf
REFUQV9ETlMpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFy
RmlsZU5hbWUoY29uc3QgY2hhciogY29va2llSmFyRmlsZU5hbWUpCit7IAorICAgIG1fY29va2ll
SmFyRmlsZU5hbWUgPSBzdHJkdXAoY29va2llSmFyRmlsZU5hbWUpOwogfQogCiBSZXNvdXJjZUhh
bmRsZU1hbmFnZXIqIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKQpAQCAt
NTMsMTEgKzY1LDcgQEAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKiBSZXNvdXJjZUhhbmRsZU1hbgog
ICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OnVzZVNpbXBsZVRyYW5zZmVyKGJvb2wgdXNlU2ltcGxlKQotewotICAgIG1fdXNlU2ltcGxl
ID0gdXNlU2ltcGxlOwotfQotCisvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJz
IGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiBzdGF0aWMgc2l6ZV90IHdy
aXRlQ2FsbGJhY2sodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBv
YmopCiB7CiAgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFu
ZGxlKj4ob2JqKTsKQEAgLTY4LDYgKzc2LDggQEAgc3RhdGljIHNpemVfdCB3cml0ZUNhbGxiYWNr
KHZvaWQqIHB0ciwgcwogICAgIHJldHVybiB0b3RhbFNpemU7CiB9CiAKKy8vIFRoaXMgaXMgYmVp
bmcgY2FsbGVkIGZvciBlYWNoIEhUVFAgaGVhZGVyIGluIHRoZSByZXNwb25zZSBzbyBpdCdsbCBi
ZSBjYWxsZWQKKy8vIG11bHRpcGxlIHRpbWVzIGZvciBhIGdpdmVuIHJlc3BvbnNlLgogc3RhdGlj
IHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQqIGRhdGEpCiB7CiAgICAgaW50IHRvdGFsU2l6ZSA9IHNpemUgKiBubWVtYjsKQEAg
LTc2LDExOSArODYsMTA1IEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRy
LCAKIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayhU
aW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFnZXI+KiB0aW1lcikKIHsKLSAgICBpZiAoam9icy0+aXNF
bXB0eSgpKSB7Ci0gICAgICAgIG1fZG93bmxvYWRUaW1lci5zdG9wKCk7CisgICAgZmRfc2V0IGZk
cmVhZDsKKyAgICBmZF9zZXQgZmR3cml0ZTsKKyAgICBmZF9zZXQgZmRleGNlcDsKKyAgICBpbnQg
bWF4ZmQgPSAwOworCisgICAgRkRfWkVSTygmZmRyZWFkKTsKKyAgICBGRF9aRVJPKCZmZHdyaXRl
KTsKKyAgICBGRF9aRVJPKCZmZGV4Y2VwKTsKKyAgICBjdXJsX211bHRpX2Zkc2V0KG1fY3VybE11
bHRpSGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CisKKyAgICBz
dHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworICAgIHRpbWVvdXQudHZfc2VjID0gMDsKKyAgICB0aW1l
b3V0LnR2X3VzZWMgPSBzZWxlY3RUaW1lb3V0TVMgKiAxMDAwOyAgICAgICAvLyBzZWxlY3Qgd2Fp
dHMgbWljcm9zZWNvbmRzCisKKyAgICBpbnQgcmMgPSA6OnNlbGVjdChtYXhmZCArIDEsICZmZHJl
YWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJnRpbWVvdXQpOworCisgICAgaWYgKC0xID09IHJjKSB7
CisjaWZuZGVmIE5ERUJVRworICAgICAgICBwcmludGYoImJhZDogc2VsZWN0KCkgcmV0dXJuZWQg
LTFcbiIpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fdXNlU2lt
cGxlKSB7Ci0gICAgICAgIGZvciAoSGFzaFNldDxSZXNvdXJjZUhhbmRsZSo+OjppdGVyYXRvciBp
dCA9IGpvYnMtPmJlZ2luKCk7IGl0ICE9IGpvYnMtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAg
ICBSZXNvdXJjZUhhbmRsZSogam9iID0gKml0OwotICAgICAgICAgICAgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKLSAgICAgICAgICAgIENVUkxjb2RlIHJl
cyA9IGN1cmxfZWFzeV9wZXJmb3JtKGQtPm1faGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChyZXMg
IT0gQ1VSTEVfT0spCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvciBXSVRIIEpPQiAlZFxu
IiwgcmVzKTsKLSAgICAgICAgICAgIGlmIChkLT5jbGllbnQoKSkgeworCisgICAgaW50IHJ1bm5p
bmdIYW5kbGVzID0gMDsKKyAgICBDVVJMTWNvZGUgY3VybENvZGUgPSBDVVJMTV9DQUxMX01VTFRJ
X1BFUkZPUk07CisgICAgd2hpbGUgKENVUkxNX0NBTExfTVVMVElfUEVSRk9STSA9PSBjdXJsQ29k
ZSkgeworICAgICAgICBjdXJsQ29kZSA9IGN1cmxfbXVsdGlfcGVyZm9ybShtX2N1cmxNdWx0aUhh
bmRsZSwgJnJ1bm5pbmdIYW5kbGVzKTsKKyAgICB9CisKKyAgICAvLyBjaGVjayB0aGUgY3VybCBt
ZXNzYWdlcyBpbmRpY2F0aW5nIGNvbXBsZXRlZCB0cmFuc2ZlcnMKKyAgICAvLyBhbmQgZnJlZSB0
aGVpciByZXNvdXJjZXMKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpbnQgbWVzc2FnZXNJ
blF1ZXVlOworICAgICAgICBDVVJMTXNnKiBtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChtX2N1
cmxNdWx0aUhhbmRsZSwgJm1lc3NhZ2VzSW5RdWV1ZSk7CisgICAgICAgIGlmICghbXNnKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKENVUkxNU0dfRE9ORSAhPSBtc2ctPm1zZykK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIGZpbmQgdGhlIG5vZGUgd2hpY2gg
aGFzIHNhbWUgZC0+bV9oYW5kbGUgYXMgY29tcGxldGVkIHRyYW5zZmVyCisgICAgICAgIENVUkwq
IGhhbmRsZSA9IG1zZy0+ZWFzeV9oYW5kbGU7CisgICAgICAgIEFTU0VSVChoYW5kbGUpOworICAg
ICAgICBSZXNvdXJjZUhhbmRsZSogam9iOworICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhoYW5k
bGUsIENVUkxJTkZPX1BSSVZBVEUsICZqb2IpOworICAgICAgICBBU1NFUlQoam9iKTsKKyAgICAg
ICAgaWYgKCFqb2IpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworICAgICAgICBpZiAoQ1VSTEVf
T0sgPT0gbXNnLT5kYXRhLnJlc3VsdCkgeworICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgpKQog
ICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKGpvYik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjdXJsX2Vhc3lfY2xlYW51cChkLT5tX2hhbmRsZSk7Ci0g
ICAgICAgICAgICBkLT5tX2hhbmRsZSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgam9icy0+Y2xl
YXIoKTsKLSAgICAgICAgbV9kb3dubG9hZFRpbWVyLnN0b3AoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBGRF9aRVJPKCZmZHJlYWQpOwotICAgICAgICBGRF9aRVJPKCZmZHdyaXRlKTsKLSAgICAg
ICAgRkRfWkVSTygmZmRleGNlcCk7Ci0gICAgICAgIGN1cmxfbXVsdGlfZmRzZXQoY3VybE11bHRp
SGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7Ci0gICAgICAgIGlu
dCBucnVubmluZzsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKLSAgICAgICAgaW50
IHJldHZhbDsKLSAgICAgICAgdGltZW91dC50dl9zZWMgPSAwOwotICAgICAgICB0aW1lb3V0LnR2
X3VzZWMgPSBzZWxlY3RUaW1lb3V0TVMgKiAxMDAwOyAgICAgICAvLyBzZWxlY3Qgd2FpdHMgbWlj
cm9zZWNvbmRzCi0gICAgICAgIHJldHZhbCA9IDo6c2VsZWN0KG1heGZkICsgMSwgJmZkcmVhZCwg
JmZkd3JpdGUsICZmZGV4Y2VwLCAmdGltZW91dCk7Ci0gICAgICAgIHN3aXRjaCAocmV0dmFsKSB7
Ci0gICAgICAgICAgICBjYXNlIC0xOiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdCBl
cnJvcgotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgICAgICBwcmludGYoIiVzLCBzZWxlY3Qg
ZXJyb3IoJWQpXG4iLCBfX1BSRVRUWV9GVU5DVElPTl9fLHJldHZhbCk7Ci0jZW5kaWYKLSAgICAg
ICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCovCi0gICAgICAgICAgICBjYXNlIDA6ICAgICAgICAg
ICAgICAgICAvLyBzZWxlY3QgdGltZW91dAorICAgICAgICB9IGVsc2UgewogI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgICAgICAgICBwcmludGYoIiVzLCBzZWxlY3QgdGltZW91dCAlZFxuIiwgX19Q
UkVUVFlfRlVOQ1RJT05fXyxyZXR2YWwpOworICAgICAgICAgICAgY2hhciogdXJsID0gMDsKKyAg
ICAgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGQtPm1faGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJ
VkVfVVJMLCAmdXJsKTsKKyAgICAgICAgICAgIHByaW50ZigiQ3VybCBFUlJPUiBmb3IgdXJsPScl
cycsIGVycm9yOiAnJXMnXG4iLCB1cmwsIGN1cmxfZWFzeV9zdHJlcnJvcihtc2ctPmRhdGEucmVz
dWx0KSk7CisgICAgICAgICAgICBmcmVlKHVybCk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAv
KiBmYWxsdGhyb3VnaC4gdGhpcyBjYW4gYmUgdGhlIGZpcnN0IHBlcmZvcm0gdG8gYmUgbWFkZSAq
LwotICAgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAvLyAxKyBkZXNj
cmlwdG9ycyBoYXZlIGRhdGEKLSAgICAgICAgICAgICAgICB3aGlsZSAoQ1VSTE1fQ0FMTF9NVUxU
SV9QRVJGT1JNID09IGN1cmxfbXVsdGlfcGVyZm9ybShjdXJsTXVsdGlIYW5kbGUsICZucnVubmlu
ZykpCi0gICAgICAgICAgICAgICAgICAgIHsgfQorICAgICAgICAgICAgaWYgKGQtPmNsaWVudCgp
KQorICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKGpvYiwgUmVzb3VyY2VFcnJv
cigpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIGNoZWNrIHRoZSBjdXJsIG1lc3NhZ2VzIGlu
ZGljYXRpbmcgY29tcGxldGVkIHRyYW5zZmVycwotICAgICAgICAvLyBhbmQgZnJlZSB0aGVpciBy
ZXNvdXJjZXMKLSAgICAgICAgaW50IG5tc2dzOwotICAgICAgICB3aGlsZSAoQ1VSTE1zZyogbXNn
ID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoY3VybE11bHRpSGFuZGxlLCAmbm1zZ3MpKSB7Ci0gICAg
ICAgICAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gZmluZCB0aGUgbm9kZSB3aGljaCBoYXMgc2FtZSBkLT5tX2hhbmRsZSBhcyBjb21wbGV0ZWQg
dHJhbnNmZXIKLSAgICAgICAgICAgICAgICBDVVJMKiBjaGFuZGxlID0gbXNnLT5lYXN5X2hhbmRs
ZTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoY2hhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUmVz
b3VyY2VIYW5kbGUgKmpvYjsKLSAgICAgICAgICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjaGFu
ZGxlLCBDVVJMSU5GT19QUklWQVRFLCAmam9iKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoam9i
KTsgLy9maXhtZTogYXNzZXJ0LT5pZiA/Ci0gICAgICAgICAgICAgICAgLy8gaWYgZm91bmQsIGRl
bGV0ZSBpdAotICAgICAgICAgICAgICAgIGlmIChqb2IpIHsKLSAgICAgICAgICAgICAgICAgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCAqZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKLSAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChtc2ctPmRhdGEucmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIENVUkxFX09LOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dXNlIHRoaXMgdG8gYXV0aGVudGljYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHJlc3BDb2RlID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9lYXN5X2dl
dGluZm8oZC0+bV9oYW5kbGUsIENVUkxJTkZPX1JFU1BPTlNFX0NPREUsICZyZXNwQ29kZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGpvYik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ZigiQ3VybCBFUlJPUiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKG1zZy0+ZGF0YS5yZXN1bHQp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGFuIGVycm9y
PwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShqb2IpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDdXJsUmVxdWVzdCBu
b3QgZm91bmQsIGV2ZW50aG91Z2ggY3VybCBkLT5tX2hhbmRsZSBmaW5pc2hlZFxuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydCgwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgfQorICAgICAgICByZW1vdmVGcm9tQ3VybChqb2IpOwogICAgIH0KLSAg
ICBpZiAoIWpvYnMtPmlzRW1wdHkoKSkKKworICAgIGlmICghbV9kb3dubG9hZFRpbWVyLmlzQWN0
aXZlKCkgJiYgKHJ1bm5pbmdIYW5kbGVzID4gMCkpCiAgICAgICAgIG1fZG93bmxvYWRUaW1lci5z
dGFydE9uZVNob3QocG9sbFRpbWVTZWNvbmRzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1h
bmFnZXI6OnJlbW92ZShSZXNvdXJjZUhhbmRsZSogam9iKQordm9pZCBSZXNvdXJjZUhhbmRsZU1h
bmFnZXI6OnJlbW92ZUZyb21DdXJsKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBBU1NFUlQoZC0+
bV9oYW5kbGUpOwogICAgIGlmICghZC0+bV9oYW5kbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBp
ZiAoam9icy0+Y29udGFpbnMoam9iKSkKLSAgICAgICAgam9icy0+cmVtb3ZlKGpvYik7Ci0gICAg
aWYgKGpvYnMtPmlzRW1wdHkoKSkKLSAgICAgICAgbV9kb3dubG9hZFRpbWVyLnN0b3AoKTsKLSAg
ICBpZiAoZC0+Y2xpZW50KCkpIHsKLSAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRp
bmcoam9iKTsKLSAgICB9Ci0gICAgaWYgKGQtPm1faGFuZGxlKSB7Ci0gICAgICAgIGN1cmxfbXVs
dGlfcmVtb3ZlX2hhbmRsZShjdXJsTXVsdGlIYW5kbGUsIGQtPm1faGFuZGxlKTsKLSAgICAgICAg
Y3VybF9lYXN5X2NsZWFudXAoZC0+bV9oYW5kbGUpOwotICAgICAgICBkLT5tX2hhbmRsZSA9IE5V
TEw7Ci0gICAgfQorICAgIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZShtX2N1cmxNdWx0aUhhbmRs
ZSwgZC0+bV9oYW5kbGUpOworICAgIGN1cmxfZWFzeV9jbGVhbnVwKGQtPm1faGFuZGxlKTsKKyAg
ICBkLT5tX2hhbmRsZSA9IDA7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1
cFBVVChSZXNvdXJjZUhhbmRsZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFk
ZChSZXNvdXJjZUhhbmRsZSogam9iKQogewotICAgIGJvb2wgc3RhcnRUaW1lciA9IGpvYnMtPmlz
RW1wdHkoKTsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5h
bCgpOwogICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsID0gam9iLT51cmwoKS51cmwoKTsKICAgICBk
LT5tX2hhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5t
X2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBqb2IpOwotICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+
bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZGRVIsIGVycm9yX2J1ZmZlcik7CisgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgbV9jdXJsRXJyb3JC
dWZmZXIpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVG
VU5DVElPTiwgd3JpdGVDYWxsYmFjayk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRs
ZSwgQ1VSTE9QVF9XUklURURBVEEsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgaGVhZGVyQ2FsbGJhY2spOwpAQCAtMTk2LDI5
ICsxOTIsNjMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFkZChSZXNvdXJjZQogICAg
IGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEp
OwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfTUFYUkVESVJTLCAx
MCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQQVVUSCwg
Q1VSTEFVVEhfQU5ZKTsKLSAgICAvLyB1cmwgcHRyIG11c3QgcmVtYWluIHZhbGlkIHRocm91Z2gg
dGhlIHJlcXVlc3QKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1VS
TCwgdXJsLmFzY2lpKCkpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxP
UFRfU0hBUkUsIG1fY3VybFNoYXJlSGFuZGxlKTsKKyAgICAvLyBlbmFibGUgZ3ppcCBhbmQgZGVm
bGF0ZSB0aHJvdWdoIEFjY2VwdC1FbmNvZGluZzoKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX0VOQ09ESU5HLCAiIik7CisKKyAgICAvLyB1cmwgbXVzdCByZW1haW4g
dmFsaWQgdGhyb3VnaCB0aGUgcmVxdWVzdAorICAgIEFTU0VSVCghZC0+bV91cmwpOworICAgIGQt
Pm1fdXJsID0gc3RyZHVwKHVybC5hc2NpaSgpKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX1VSTCwgZC0+bV91cmwpOworCisgICAgaWYgKG1fY29va2llSmFyRmls
ZU5hbWUpIHsKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9D
T09LSUVGSUxFLCBtX2Nvb2tpZUphckZpbGVOYW1lKTsKKyAgICAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9DT09LSUVKQVIsIG1fY29va2llSmFyRmlsZU5hbWUpOwor
ICAgIH0KIAotICAgIGlmIChtX3VzZVNpbXBsZSkKLSAgICAgICAgam9icy0+YWRkKGpvYik7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIENVUkxNY29kZSByZXQgPSBjdXJsX211bHRpX2FkZF9oYW5kbGUo
Y3VybE11bHRpSGFuZGxlLCBkLT5tX2hhbmRsZSk7Ci0gICAgICAgIC8vIGRvbid0IGNhbGwgcGVy
Zm9ybSwgYmVjYXVzZSBldmVudHMgbXVzdCBiZSBhc3luYwotICAgICAgICAvLyB0aW1lb3V0IHdp
bGwgb2NjdXIgYW5kIGRvIGN1cmxfbXVsdGlfcGVyZm9ybQotICAgICAgICBpZiAocmV0ICYmIHJl
dCAhPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pIHsKLSAgICAgICAgICAgIHByaW50ZigiRXJy
b3IgJWQgc3RhcnRpbmcgam9iICVzXG4iLCByZXQsIGpvYi0+dXJsKCkudXJsKCkuYXNjaWkoKSk7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGFuIGVycm9yPwotICAgICAgICAgICAgc3Rh
cnRUaW1lciA9ZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgam9icy0+YWRkKGpv
Yik7CisgICAgaWYgKGpvYi0+cmVxdWVzdEhlYWRlcnMoKS5zaXplKCkgPiAwKSB7CisgICAgICAg
IHN0cnVjdCBjdXJsX3NsaXN0KiBoZWFkZXJzID0gMDsKKyAgICAgICAgSFRUUEhlYWRlck1hcCBj
dXN0b21IZWFkZXJzID0gam9iLT5yZXF1ZXN0SGVhZGVycygpOworICAgICAgICBIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21IZWFkZXJzLmVuZCgpOworICAgICAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY3VzdG9tSGVhZGVycy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFN0cmluZyBrZXkgPSBpdC0+Zmly
c3Q7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAg
U3RyaW5nIGhlYWRlclN0cmluZyA9IGtleSArICI6ICIgKyB2YWx1ZTsKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGhlYWRlciA9IGhlYWRlclN0cmluZy5sYXRpbjEoKS5kYXRhKCk7CisgICAgICAg
ICAgICBoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgaGVhZGVyKTsKKyAgICAg
ICAgfQorICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBI
RUFERVIsIGhlYWRlcnMpOworICAgICAgICBkLT5tX2N1c3RvbUhlYWRlcnMgPSBoZWFkZXJzOwog
ICAgIH0KLSAgICBpZiAoc3RhcnRUaW1lcikKKworICAgIC8vIGRlZmF1bHQgdG8gR0VUCisgICAg
Y3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQR0VULCBUUlVFKTsKKwor
ICAgIGlmICgiUE9TVCIgPT0gam9iLT5tZXRob2QoKSkKKyAgICAgICAgc2V0dXBQT1NUKGpvYik7
CisgICAgZWxzZSBpZiAoIlBVVCIgPT0gam9iLT5tZXRob2QoKSkKKyAgICAgICAgc2V0dXBQVVQo
am9iKTsKKyAgICBlbHNlIGlmICgiSEVBRCIgPT0gam9iLT5tZXRob2QoKSkKKyAgICAgICAgY3Vy
bF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9OT0JPRFksIFRSVUUpOworCisgICAg
Q1VSTE1jb2RlIHJldCA9IGN1cmxfbXVsdGlfYWRkX2hhbmRsZShtX2N1cmxNdWx0aUhhbmRsZSwg
ZC0+bV9oYW5kbGUpOworICAgIC8vIGRvbid0IGNhbGwgcGVyZm9ybSwgYmVjYXVzZSBldmVudHMg
bXVzdCBiZSBhc3luYworICAgIC8vIHRpbWVvdXQgd2lsbCBvY2N1ciBhbmQgZG8gY3VybF9tdWx0
aV9wZXJmb3JtCisgICAgaWYgKHJldCAmJiByZXQgIT0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JN
KSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBwcmludGYoIkVycm9yICVkIHN0YXJ0aW5nIGpv
YiAlc1xuIiwgcmV0LCBqb2ItPnVybCgpLnVybCgpLmFzY2lpKCkpOworI2VuZGlmCisgICAgICAg
IGpvYi0+Y2FuY2VsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fZG93
bmxvYWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Rvd25sb2FkVGltZXIuc3RhcnRPbmVT
aG90KHBvbGxUaW1lU2Vjb25kcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpj
YW5jZWwoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKLSAgICByZW1vdmUoam9iKTsKKyAgICByZW1v
dmVGcm9tQ3VybChqb2IpOwogICAgIC8vIEZJWE1FOiByZXBvcnQgYW4gZXJyb3I/CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9nZGsvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2dkay9SZXNvdXJjZUhhbmRs
ZU1hbmFnZXIuaAkocmV2aXNpb24gMTk2NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Z2RrL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwzMCArNDAs
MjIgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZXNvdXJjZUhhbmRsZU1hbmFnZXIqIHNoYXJlZElu
c3RhbmNlKCk7CiAgICAgdm9pZCBhZGQoUmVzb3VyY2VIYW5kbGUqKTsKICAgICB2b2lkIGNhbmNl
bChSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQgc2V0Q29va2llSmFyRmlsZU5hbWUoY29uc3Qg
Y2hhciogY29va2llSmFyRmlsZU5hbWUpOwogCi0gICAgLy8gSWYgdHJ1ZSwgZG9uJ3QgbXVsdGlw
bGV4IGRvd25sb2FkczogZG93bmxvYWQgY29tcGxldGVseSBvbmUgYXQgYSB0aW1lLgotICAgIHZv
aWQgdXNlU2ltcGxlVHJhbnNmZXIoYm9vbCB1c2VTaW1wbGUpOworICAgIHZvaWQgc2V0dXBQT1NU
KFJlc291cmNlSGFuZGxlKik7CisgICAgdm9pZCBzZXR1cFBVVChSZXNvdXJjZUhhbmRsZSopOwog
CiBwcml2YXRlOgogICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcigpOwogICAgIHZvaWQgZG93bmxv
YWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qKTsKLSAgICB2b2lk
IHJlbW92ZShSZXNvdXJjZUhhbmRsZSopOworICAgIHZvaWQgcmVtb3ZlRnJvbUN1cmwoUmVzb3Vy
Y2VIYW5kbGUqKTsKIAotICAgIGJvb2wgbV91c2VTaW1wbGU7Ci0gICAgSGFzaFNldDxSZXNvdXJj
ZUhhbmRsZSo+KiBqb2JzOwogICAgIFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4gbV9kb3du
bG9hZFRpbWVyOwotICAgIENVUkxNKiBjdXJsTXVsdGlIYW5kbGU7IC8vIG5vdCBmcmVlZAorICAg
IENVUkxNKiBtX2N1cmxNdWx0aUhhbmRsZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCisgICAgQ1VS
TFNIKiBtX2N1cmxTaGFyZUhhbmRsZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCisgICAgY2hhciog
bV9jb29raWVKYXJGaWxlTmFtZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCiAKLSAgICAvLyBjdXJs
IGZpbGVoYW5kbGVzIHRvIHBvbGwgd2l0aCBzZWxlY3QKLSAgICBmZF9zZXQgZmRyZWFkOwotICAg
IGZkX3NldCBmZHdyaXRlOwotICAgIGZkX3NldCBmZGV4Y2VwOwotCi0gICAgaW50IG1heGZkOwot
ICAgIGNoYXIgZXJyb3JfYnVmZmVyW0NVUkxfRVJST1JfU0laRV07Ci0KLSAgICAvLyBOVUxMLXRl
cm1pbmF0ZWQgbGlzdCBvZiBzdXBwb3J0ZWQgcHJvdG9jb2xzCi0gICAgY29uc3QgY2hhciogY29u
c3QqIGN1cmxfcHJvdG9jb2xzOyAvLyBub3QgZnJlZWQKKyAgICBjaGFyIG1fY3VybEVycm9yQnVm
ZmVyW0NVUkxfRVJST1JfU0laRV07CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="5153"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>