<?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>43733</bug_id>
          
          <creation_ts>2010-08-09 11:17:43 -0700</creation_ts>
          <short_desc>Add suspendAnimations/resumeAnimation API to DRT</short_desc>
          <delta_ts>2010-08-12 09:58:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43792</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262232</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-09 11:17:43 -0700</bug_when>
    <thetext>The AnimationController has an API to suspend and resume animations. This is for embedding apps to get control over the animation when needed. The API is not testable, so we should add API to LayoutTestController in DRT to allow it to be tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262676</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 07:38:30 -0700</bug_when>
    <thetext>I&apos;m about to submit a patch for this fix. I&apos;ve added the required logic on all platforms, but I can only test on Mac, so other builds could be broken. I believe I&apos;ve added all the source changes, but at least the Qt build will need additions of symbols to WebKit/qt/symbian/bwins/QtWebKitu.def and WebKit/qt/symbian/eabi/QtWebKitu.def.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262680</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 08:00:12 -0700</bug_when>
    <thetext>*** Bug 42790 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262693</commentid>
    <comment_count>3</comment_count>
      <attachid>64014</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 08:25:38 -0700</bug_when>
    <thetext>Created attachment 64014
Patch with test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262698</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 09:01:55 -0700</bug_when>
    <thetext>Attachment 64014 did not build on chromium:
Build output: http://queues.webkit.org/results/3703029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262701</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 09:07:09 -0700</bug_when>
    <thetext>Attachment 64014 did not build on gtk:
Build output: http://queues.webkit.org/results/3767031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262737</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 10:06:45 -0700</bug_when>
    <thetext>Attachment 64014 did not build on win:
Build output: http://queues.webkit.org/results/3705038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262814</commentid>
    <comment_count>7</comment_count>
      <attachid>64038</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 12:25:22 -0700</bug_when>
    <thetext>Created attachment 64038
Replacement patch to fix builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262878</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 15:06:04 -0700</bug_when>
    <thetext>Attachment 64038 did not build on gtk:
Build output: http://queues.webkit.org/results/3736038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262882</commentid>
    <comment_count>9</comment_count>
      <attachid>64050</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 15:13:01 -0700</bug_when>
    <thetext>Created attachment 64050
Patch with fix for gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262909</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 16:56:25 -0700</bug_when>
    <thetext>Attachment 64050 did not build on gtk:
Build output: http://queues.webkit.org/results/3719044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262915</commentid>
    <comment_count>11</comment_count>
      <attachid>64050</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-08-10 17:16:06 -0700</bug_when>
    <thetext>Comment on attachment 64050
Patch with fix for gtk build

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262931</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 18:04:20 -0700</bug_when>
    <thetext>Committed r65107: &lt;http://trac.webkit.org/changeset/65107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262935</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 18:11:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65107 might have broken Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263076</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 23:57:59 -0700</bug_when>
    <thetext>This appears to have also broken Qt, if i&apos;m reading the bot correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263171</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-11 04:20:05 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; This appears to have also broken Qt, if i&apos;m reading the bot correctly.

animations/suspend-resume-animation.html still fails on Qt bot:
http://build.webkit.org/results/Qt%20Linux%20Release/r65142%20%2817459%29/animations/suspend-resume-animation-pretty-diff.html

It might be related to https://bugs.webkit.org/show_bug.cgi?id=42821 ,
because the diffs are so similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263853</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-12 09:58:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; This appears to have also broken Qt, if i&apos;m reading the bot correctly.

New bug filed: https://bugs.webkit.org/show_bug.cgi?id=43905</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64014</attachid>
            <date>2010-08-10 08:25:38 -0700</date>
            <delta_ts>2010-08-10 12:25:40 -0700</delta_ts>
            <desc>Patch with test case</desc>
            <filename>43733.patch</filename>
            <type>text/plain</type>
            <size>26996</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NTA3MSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJpbiAgPGNtYXJy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJIHRvIERSVAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MzMKKyAg
ICAgICAgCisgICAgICAgIEd0ayBzcGVjaWZpYyBBUEkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyk6CisgICAgICAgICh3ZWJr
aXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKToKKwogMjAxMC0wOC0wNiAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1w
ZWQgYnkgU2FtIFdlaW5pZwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0Nyw2ICszNDcsMTIgQEAgZXh0ZXJuICJDIiB7CiAgICAgd2Via2l0X3dlYl9m
cmFtZV9udW1iZXJfb2ZfYWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsK
IAogICAgIFdFQktJVF9BUEkgdm9pZAorICAgIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmlt
YXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CisKKyAgICBXRUJLSVRfQVBJIHZvaWQKKyAg
ICB3ZWJraXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7CisKKyAgICBXRUJLSVRfQVBJIHZvaWQKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2NsZWFyX21h
aW5fZnJhbWVfbmFtZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgV0VCS0lUX0FQSSBB
dGtPYmplY3QqCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCShyZXZpc2lv
biA2NDk5MykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1Myw2ICsxMDUzLDMyIEBAIHVuc2lnbmVkIGludCB3ZWJraXRfd2ViX2Zy
YW1lX251bWJlcl9vZl8KICAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKCk7CiB9CiAKK3ZvaWQgd2Via2l0X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZy
YW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGNvcmVGcmFtZS0+YW5pbWF0aW9uKCk7CisgICAg
aWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5zdXNw
ZW5kQW5pbWF0aW9ucyhjb3JlRnJhbWUtPmRvY3VtZW50KCkpOworfQorCit2b2lkIHdlYmtpdF93
ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGNv
cmVGcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKGNvcmVGcmFtZS0+ZG9jdW1l
bnQoKSk7Cit9CisKIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9yZXNwb25zZV9taW1lX3R5
cGUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KGZyYW1lKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTA3MSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJp
biAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJ
IHRvIERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM3MzMKKyAgICAgICAgCisgICAgICAgIE1hYyBzcGVjaWZpYyBBUEkuIFBsdW1icyBzdXNwZW5k
QW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb25zIGRvd24gdG8gV2ViQ29yZS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zdXNwZW5kQW5pbWF0
aW9uc10pOgorICAgICAgICAoLVtXZWJGcmFtZSBfcmVzdW1lQW5pbWF0aW9uc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTAtMDgtMDYgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVk
IGJ5IFNhbSBXZWluaWcKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDY0OTkz
KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTkzLDYgKzExOTMsMzIgQEAgLSAodW5zaWduZWQpIF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMK
ICAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CiB9CiAK
Ky0gKHZvaWQpIF9zdXNwZW5kQW5pbWF0aW9ucworeworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
c2VsZik7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0aW9u
Q29udHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKKyAgICBpZiAoIWNv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRyb2xsZXItPnN1c3BlbmRBbmlt
YXRpb25zKGZyYW1lLT5kb2N1bWVudCgpKTsKK30KKworLSAodm9pZCkgX3Jlc3VtZUFuaW1hdGlv
bnMKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHNlbGYpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBm
cmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKGZyYW1lLT5kb2N1bWVudCgpKTsK
K30KKwogLSAodm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDooRE9NRG9jdW1lbnRG
cmFnbWVudCAqKWZyYWdtZW50IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2Vt
ZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2UgbWF0Y2hTdHlsZTooQk9PTCltYXRj
aFN0eWxlCiB7CiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5pc05v
bmUoKSB8fCAhZnJhZ21lbnQpCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5o
CShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxMCBAQCBAaW50ZXJmYWNlIFdlYkZyYW1l
IChXZWJQcml2YXRlKQogLy8gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGN1cnJlbnRseSBy
dW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJvdGggQ1NTIHRyYW5zaXRpb25zIGFuZCBDU1Mg
YW5pbWF0aW9ucykuCiAtICh1bnNpZ25lZCkgX251bWJlck9mQWN0aXZlQW5pbWF0aW9uczsKIAor
Ly8gU3VzcGVuZCBhbmQgcmVzdW1lIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJvdGggQ1NTIHRyYW5z
aXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCistICh2b2lkKSBfc3VzcGVuZEFuaW1hdGlvbnM7
CistICh2b2lkKSBfcmVzdW1lQW5pbWF0aW9uczsKKwogLSAodm9pZClfcmVwbGFjZVNlbGVjdGlv
bldpdGhGcmFnbWVudDooRE9NRG9jdW1lbnRGcmFnbWVudCAqKWZyYWdtZW50IHNlbGVjdFJlcGxh
Y2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJl
cGxhY2UgbWF0Y2hTdHlsZTooQk9PTCltYXRjaFN0eWxlOwogLSAodm9pZClfcmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2Vs
ZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZTsKIC0gKHZvaWQp
X3JlcGxhY2VTZWxlY3Rpb25XaXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0cmlu
ZyBiYXNlVVJMU3RyaW5nOihOU1N0cmluZyAqKWJhc2VVUkxTdHJpbmcgc2VsZWN0UmVwbGFjZW1l
bnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFj
ZTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0No
YW5nZUxvZwkocmV2aXNpb24gNjUwNzEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJpbiAgPGNtYXJy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJIHRvIERSVAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MzMKKyAg
ICAgICAgCisgICAgICAgIFF0IHNwZWNpZmljIEFQSS4gTWlzc2luZyBzeW1iaWFuIHN5bWJvbCBk
ZWZpbmVzIGluOgorICAgICAgICAKKyAgICAgICAgICAgIFdlYktpdC9xdC9zeW1iaWFuL2J3aW5z
L1F0V2ViS2l0dS5kZWYKKyAgICAgICAgICAgIFdlYktpdC9xdC9zeW1iaWFuL2VhYmkvUXRXZWJL
aXR1LmRlZgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnN1c3BlbmRBbmltYXRp
b25zKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXN1bWVBbmltYXRpb25z
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgor
CiAyMDEwLTA4LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
IAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJl
dmlzaW9uIDY0OTkzKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYgKzI2MiwzMiBAQCBpbnQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mQWN0CiAgICAgcmV0dXJuIGNvbnRyb2xsZXIt
Pm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogfQogCit2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpzdXNwZW5kQW5pbWF0aW9ucyhRV2ViRnJhbWUgKmZyYW1lKQoreworICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlciA9IGNvcmVGcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucyhjb3Jl
RnJhbWUtPmRvY3VtZW50KCkpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpy
ZXN1bWVBbmltYXRpb25zKFFXZWJGcmFtZSAqZnJhbWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
Y29yZUZyYW1lLT5hbmltYXRpb24oKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1
bWVudCgpKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJGcmFtZU5h
bWUoUVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gUVdlYkZyYW1l
UHJpdmF0ZTo6Y29yZShmcmFtZSk7CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2xlYXJGcmFt
ZU5hbWUoUVdlYkZyYW1lKiBmcmFtZSk7CiAgICAgc3RhdGljIHZvaWQgb3ZlcndyaXRlUGx1Z2lu
RGlyZWN0b3JpZXMoKTsKICAgICBzdGF0aWMgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhR
V2ViRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhRV2ViRnJhbWUq
KTsKKyAgICBzdGF0aWMgdm9pZCByZXN1bWVBbmltYXRpb25zKFFXZWJGcmFtZSopOwogICAgIHN0
YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIGZyYW1lLCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0KTsKICAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCk7CiAgICAgc3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogZnJhbWUp
OwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNjUwNzEpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOC0xMCAgQ2hyaXMgTWFycmluICA8
Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1c3BlbmRBbmltYXRpb25zL3Jlc3VtZUFuaW1hdGlvbiBBUEkgdG8g
RFJUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzcz
MworICAgICAgICAKKyAgICAgICAgQWRkcyBzdXNwZW5kQW5pbWF0aW9ucygpIGFuZCByZXN1bWVB
bmltYXRpb25zKCkgdG8gTGF5b3V0VGVzdENvbnRyb2xsZXIuCisgICAgICAgIENhbGxzIGZ1bmN0
aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWVzIG9uIEFuaW1hdGlvbkNvbnRyb2xsZXIgZm9yIHRoZSAK
KyAgICAgICAgbWFpbkZyYW1lLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzdXNwZW5kQW5pbWF0aW9uc0Nh
bGxiYWNrKToKKyAgICAgICAgKHJlc3VtZUFuaW1hdGlvbnNDYWxsYmFjayk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVz
dW1lQW5pbWF0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRB
bmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKToKKwogMjAxMC0wOC0wOSAgQW50b25pbyBHb21l
cyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhp
ZGF5YXQuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
NSw2ICsxNTQ1LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG51bWJlck9mQWN0aXZlQW5pbWF0aW8K
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY29udHJvbGxlci0+bnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzdXNwZW5kQW5p
bWF0aW9uc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlv
dXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250
cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVy
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVzdW1lQW5pbWF0aW9uc0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRp
b25zKCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBz
dGF0aWMgSlNWYWx1ZVJlZiB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCwg
Y29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE4NTAsNiArMTg2NCw4IEBAIEpTU3Rh
dGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAibWFya2VyVGV4
dEZvckxpc3RJdGVtIiwgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzdXNwZW5kQW5pbWF0aW9ucyIsIHN1c3BlbmRB
bmltYXRpb25zQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicmVzdW1lQW5pbWF0aW9ucyIs
IHJlc3VtZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVBy
ZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyIsIHBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUxLDggQEAgcHVibGljOgogICAgIGJv
b2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3Bl
cnR5TmFtZSwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBz
YW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKTsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25z
KCkgY29uc3Q7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwg
SlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25I
b3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJp
bmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJp
bmRNZXRob2QoInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKICAg
ICBiaW5kTWV0aG9kKCJlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZCk7CiAgICAgYmluZE1ldGhvZCgibnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOworICAgIGJpbmRNZXRo
b2QoInN1c3BlbmRBbmltYXRpb25zIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5p
bWF0aW9ucyk7CisgICAgYmluZE1ldGhvZCgicmVzdW1lQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk7CiAgICAgYmluZE1ldGhvZCgiZGlzYWJsZUlt
YWdlTG9hZGluZyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZyk7
CiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKTsKQEAgLTgzOCw2ICs4NDAsMzIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZkFjdGl2ZQogICAgIHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1h
dGlvbnMoKQoreworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKCF3ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYkZyYW1lLT5hbmltYXRpb25D
b250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucyhjb3JlKHdlYkZyYW1lKS0+ZG9jdW1lbnQo
KSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQor
eworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1l
KCk7CisgICAgaWYgKCF3ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQW5pbWF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYkZyYW1lLT5hbmltYXRpb25Db250cm9sbGVy
KCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9s
bGVyLT5yZXN1bWVBbmltYXRpb25zKGNvcmUod2ViRnJhbWUpLT5kb2N1bWVudCgpKTsKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQtPnNldChmYWxzZSk7CkBAIC04NzUsNiArOTAzLDE4IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXYKICAgICByZXN1bHQtPnNldChudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bWVBbmlt
YXRpb25zKCk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+
c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3
LDggQEAgcHVibGljOgogICAgIHZvaWQgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgcmVzdW1l
QW5pbWF0aW9ucyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2
b2lkIGRpc2FibGVJbWFnZUxvYWRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjIwLDYgKzYyMCwxNiBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6bnVtYmVyT2ZBCiAgICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29m
X2FjdGl2ZV9hbmltYXRpb25zKG1haW5GcmFtZSk7CiB9CiAKK3Vuc2lnbmVkIExheW91dFRlc3RD
b250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYmtp
dF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKG1haW5GcmFtZSk7Cit9CisKK3Vuc2lnbmVk
IExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gd2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhtYWluRnJhbWUpOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdS
ZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKICAgICBnY2hhciogbmFtZSA9IEpTU3RyaW5n
Q29weVVURjhDU3RyaW5nKGtleSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA2
NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMxLDYgKzYzMSwxNiBAQCB1bnNpZ25lZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBCiAgICAgcmV0dXJuIFttYWluRnJhbWUgX251
bWJlck9mQWN0aXZlQW5pbWF0aW9uc107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21haW5GcmFtZSBfc3Vz
cGVuZEFuaW1hdGlvbnNdOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVB
bmltYXRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21haW5GcmFtZSBfcmVzdW1lQW5pbWF0
aW9uc107Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpCiB7CiAgICAgc2V0V2FpdFRvRHVtcCh0cnVlKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODQsNiArNDg0LDIwIEBA
IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkEKICAgICByZXR1cm4gRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhmcmFtZSk7CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKCkgY29uc3QK
K3sKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7
CisgICAgUV9BU1NFUlQoZnJhbWUpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNw
ZW5kQW5pbWF0aW9ucyhmcmFtZSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJl
c3VtZUFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+
d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKKyAgICBRX0FTU0VSVChmcmFtZSk7CisgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnJlc3VtZUFuaW1hdGlvbnMoZnJhbWUpOworfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKCkKIHsKICAgICBtX2RydC0+
d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpBdXRvTG9h
ZEltYWdlcywgZmFsc2UpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gNjQ5OTMpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgZWxl
bWVudElkKTsKIAogICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkIHJlc3VtZUFu
aW1hdGlvbnMoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlv
blByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5h
dGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lv
biA2NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjAsNiArMTA2MCwyNCBAQCB1bnNp
Z25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBCiAgICAgcmV0dXJuIG51bWJlcjsK
IH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMoKSBjb25z
dAoreworICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZy
YW1lKTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJh
bWVQcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9ucygpOworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICBDT01QdHI8SVdlYkZyYW1l
UHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lUHJpdmF0ZS0+cmVzdW1lQW5pbWF0aW9u
cygpOworfQorCiBzdGF0aWMgX2JzdHJfdCBic3RyVChKU1N0cmluZ1JlZiBqc1N0cmluZykKIHsK
ICAgICAvLyBUaGUgZmFsc2UgcGFyYW1ldGVyIHRlbGxzIHRoZSBfYnN0cl90IGNvbnN0cnVjdG9y
IHRvIGFkb3B0IHRoZSBCU1RSIHdlIHBhc3MgaXQuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2
aXNpb24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDYgKzI2NCwxNiBAQCB1bnNp
Z25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBCiAgICAgcmV0dXJuIDA7CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKCkgY29uc3QKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30K
KwogdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTA3MSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDEwLTA4LTEwICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VzcGVuZEFuaW1h
dGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQSSB0byBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzMzCisgICAgICAgIAorICAgICAgICBUaGlzIHRl
c3RzIHN1c3BlbmQgYW5kIHJlc3VtZSBvZiBhbmltYXRpb25zLiBUcmFuc2l0aW9ucyBhcmUgY3Vy
cmVudGx5IGJyb2tlbgorICAgICAgICBkdWUgdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQzNzkyLiBJIHdpbGwgYWRkIHRyYW5zaXRpb24KKyAgICAgICAgdGVzdHMg
YW5kIHRlc3RzIG9mIHRyYW5zaXRpb24gYW5kIGFuaW1hdGlvbiBpbnRlcmFjdGlvbiB3aXRoIHRo
YXQgZml4LgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpz
OgorICAgICAgICAobWF0cml4U3RyaW5nVG9BcnJheSk6CisgICAgICAgICogYW5pbWF0aW9ucy9z
dXNwZW5kLXJlc3VtZS1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
bmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMC0w
OC0wOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmlt
YXRpb24tdGVzdC1oZWxwZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlv
bnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwkocmV2aXNpb24gNjQ5OTMpCisrKyBMYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDggQEAgZnVuY3Rpb24gaXNDbG9zZUVub3VnaChhY3R1YWwsIGRlc2lyZWQs
IAogCiBmdW5jdGlvbiBtYXRyaXhTdHJpbmdUb0FycmF5KHMpCiB7CisgICAgaWYgKHMgPT0gIm5v
bmUiKQorICAgICAgICByZXR1cm4gWyAxLCAwLCAwLCAxLCAwLCAwIF07CiAgICAgdmFyIG0gPSBz
LnNwbGl0KCIoIik7CiAgICAgbSA9IG1bMV0uc3BsaXQoIikiKTsKICAgICByZXR1cm4gbVswXS5z
cGxpdCgiLCIpOwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1h
bmltYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlv
bnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3Qgc2hvd3Mgc3VzcGVu
ZCBhbmQgcmVzdW1lIG9mIGEgYm94IG1vdmluZyB0byB0aGUgcmlnaHQgNTAwcHguIElmIHJ1bm5p
bmcgaW5zaWRlIER1bXBSZW5kZXJUZXN0IHRoZSBib3ggc2hvdWxkIHN0b3AgYXQgMjAwcHggYWZ0
ZXIgNTAwbXMgYW5kIHRoZW4gY29udGludWUgdG8gY29tcGxldGUgdGhlIG1vdmUgaW4gYW5vdGhl
ciA3NTBtcworCitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVs
ZW1lbnQgYXQgMC42cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxLDAsMCwxLDIwMCwwCitQQVNT
IC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC45cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxLDAsMCwxLDIwMCwwCitQQVNTIC0gIndlYmtpdFRyYW5z
Zm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMS41cyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAxLDAsMCwxLDQwMCwwCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1y
ZXN1bWUtYW5pbWF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9zdXNwZW5kLXJlc3VtZS1hbmltYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRN
TCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29z
ZS5kdGQiPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxl
PlRlc3Qgc3VzcGVuZEFuaW1hdGlvbnMoKS9yZXN1bWVBbmltYXRpb25zKCkgZm9yIGFuaW1hdGlv
bnM8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAg
ICNib3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
IGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlv
bjogMS4yNXM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVh
cjsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ICJtb3ZlIjsKKyAgICB9CisgICAgQC13
ZWJraXQta2V5ZnJhbWVzICJtb3ZlIiB7CisgICAgICAgIGZyb20geyAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlWCgwKTsgfQorICAgICAgICB0byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZVgoNTAwcHgpOyB9CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5p
bWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+CisgICAgCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBb
YW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1
ZSwgdG9sZXJhbmNlXQorICAgICAgWyJyb3RhdGUiLCAwLjYsICJib3giLCAid2Via2l0VHJhbnNm
b3JtIiwgWzEsMCwwLDEsIDIwMCwgMF0sIDMwXSwKKyAgICAgIFsicm90YXRlIiwgMC45LCAiYm94
IiwgIndlYmtpdFRyYW5zZm9ybSIsIFsxLDAsMCwxLCAyMDAsIDBdLCAzMF0sCisgICAgICBbInJv
dGF0ZSIsIDEuNSwgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbMSwwLDAsMSwgNDAwLCAwXSwg
MzBdLAorICAgIF07CisgICAgCisgICAgZnVuY3Rpb24gc3VzcGVuZCgpCisgICAgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gcmVzdW1lKCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZXN1bWVBbmltYXRpb25zKCk7
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNldFRpbWVycygpCisgICAgeworICAgICAgICBz
ZXRUaW1lb3V0KHN1c3BlbmQsIDUwMCk7CisgICAgICAgIHNldFRpbWVvdXQocmVzdW1lLCAxMDAw
KTsKKyAgICB9CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzLCBzZXRUaW1l
cnMsIHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgCisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD4KK1RoaXMgdGVzdCBzaG93cyBzdXNwZW5kIGFuZCByZXN1bWUgb2YgYSBib3ggbW92aW5n
IHRvIHRoZSByaWdodCA1MDBweC4gSWYgcnVubmluZyBpbnNpZGUgRHVtcFJlbmRlclRlc3QgdGhl
IGJveCBzaG91bGQgc3RvcCBhdCAyMDBweAorYWZ0ZXIgNTAwbXMgYW5kIHRoZW4gY29udGludWUg
dG8gY29tcGxldGUgdGhlIG1vdmUgaW4gYW5vdGhlciA3NTBtcworPGRpdiBpZD0iYm94Ij4KKzwv
ZGl2PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1hbmlt
YXRpb24uaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1s
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64038</attachid>
            <date>2010-08-10 12:25:22 -0700</date>
            <delta_ts>2010-08-10 15:13:01 -0700</delta_ts>
            <desc>Replacement patch to fix builds</desc>
            <filename>43733.patch</filename>
            <type>text/plain</type>
            <size>30564</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NTA4MykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJpbiAgPGNtYXJy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJIHRvIERSVAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MzMKKyAg
ICAgICAgCisgICAgICAgIEd0ayBzcGVjaWZpYyBBUEkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyk6CisgICAgICAgICh3ZWJr
aXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKToKKwogMjAxMC0wOC0xMCAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1w
ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHJldmlz
aW9uIDY0OTkzKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDcsNiArMzQ3LDEyIEBAIGV4dGVybiAiQyIgewogICAgIHdlYmtpdF93ZWJf
ZnJhbWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7
CiAKICAgICBXRUJLSVRfQVBJIHZvaWQKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCisgICAgV0VCS0lUX0FQSSB2b2lkCisg
ICAgd2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJh
bWUpOworCisgICAgV0VCS0lUX0FQSSB2b2lkCiAgICAgd2Via2l0X3dlYl9mcmFtZV9jbGVhcl9t
YWluX2ZyYW1lX25hbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKIAogICAgIFdFQktJVF9BUEkg
QXRrT2JqZWN0KgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNTMsNiArMTA1MywzMiBAQCB1bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9m
cmFtZV9udW1iZXJfb2ZfCiAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpOwogfQogCit2b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25z
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShm
cmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1h
dGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udHJvbGxlci0+c3Vz
cGVuZEFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KKwordm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBj
b3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucyhjb3JlRnJhbWUtPmRvY3Vt
ZW50KCkpOworfQorCiBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRfcmVzcG9uc2VfbWltZV90
eXBlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShmcmFtZSk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjUwODMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA4LTEwICBDaHJpcyBNYXJy
aW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQ
SSB0byBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNzMzCisgICAgICAgIAorICAgICAgICBNYWMgc3BlY2lmaWMgQVBJLiBQbHVtYnMgc3VzcGVu
ZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9ucyBkb3duIHRvIFdlYkNvcmUuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3VzcGVuZEFuaW1h
dGlvbnNdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Jlc3VtZUFuaW1hdGlvbnNdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDEwLTA4LTA2ICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBl
ZCBieSBTYW0gV2VpbmlnCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA2NDk5
MykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTE5Myw2ICsxMTkzLDMyIEBAIC0gKHVuc2lnbmVkKSBfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
CiAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogfQog
CistICh2b2lkKSBfc3VzcGVuZEFuaW1hdGlvbnMKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHNlbGYpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFj
b250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5p
bWF0aW9ucyhmcmFtZS0+ZG9jdW1lbnQoKSk7Cit9CisKKy0gKHZvaWQpIF9yZXN1bWVBbmltYXRp
b25zCit7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZShzZWxmKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
ZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucyhmcmFtZS0+ZG9jdW1lbnQoKSk7
Cit9CisKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50
RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNl
bWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0
Y2hTdHlsZQogewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNO
b25lKCkgfHwgIWZyYWdtZW50KQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUu
aAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTAgQEAgQGludGVyZmFjZSBXZWJGcmFt
ZSAoV2ViUHJpdmF0ZSkKIC8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkg
cnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NT
IGFuaW1hdGlvbnMpLgogLSAodW5zaWduZWQpIF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnM7CiAK
Ky8vIFN1c3BlbmQgYW5kIHJlc3VtZSBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFu
c2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgorLSAodm9pZCkgX3N1c3BlbmRBbmltYXRpb25z
OworLSAodm9pZCkgX3Jlc3VtZUFuaW1hdGlvbnM7CisKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBs
YWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRS
ZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0Y2hTdHlsZTsKIC0gKHZvaWQpX3JlcGxhY2VTZWxl
Y3Rpb25XaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNl
bGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2U7CiAtICh2b2lk
KV9yZXBsYWNlU2VsZWN0aW9uV2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJp
bmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nIHNlbGVjdFJlcGxhY2Vt
ZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxh
Y2U7CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY1MDgzKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA4LTEwICBDaHJpcyBNYXJyaW4gIDxjbWFy
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQSSB0byBEUlQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzMzCisg
ICAgICAgIAorICAgICAgICBRdCBzcGVjaWZpYyBBUEkuIE1pc3Npbmcgc3ltYmlhbiBzeW1ib2wg
ZGVmaW5lcyBpbjoKKyAgICAgICAgCisgICAgICAgICAgICBXZWJLaXQvcXQvc3ltYmlhbi9id2lu
cy9RdFdlYktpdHUuZGVmCisgICAgICAgICAgICBXZWJLaXQvcXQvc3ltYmlhbi9lYWJpL1F0V2Vi
S2l0dS5kZWYKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQW5pbWF0
aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0aW9u
cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoK
KwogMjAxMC0wOC0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZwpJbmRleDogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShy
ZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsMzIgQEAgaW50IER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZkFjdAogICAgIHJldHVybiBjb250cm9sbGVy
LT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c3VzcGVuZEFuaW1hdGlvbnMoUVdlYkZyYW1lICpmcmFtZSkKK3sKKyAgICBGcmFt
ZSogY29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7CisgICAgaWYgKCFj
b3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1hdGlvbnMoY29y
ZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
cmVzdW1lQW5pbWF0aW9ucyhRV2ViRnJhbWUgKmZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9
IGNvcmVGcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKSk7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyRnJhbWVO
YW1lKFFXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUoZnJhbWUpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDY0OTkzKQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFyRnJh
bWVOYW1lKFFXZWJGcmFtZSogZnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIG92ZXJ3cml0ZVBsdWdp
bkRpcmVjdG9yaWVzKCk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
UVdlYkZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoUVdlYkZyYW1l
Kik7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKICAgICBz
dGF0aWMgaW50IG51bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBmcmFtZSwgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCk7CiAgICAgc3RhdGljIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQpOwogICAgIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIGZyYW1l
KTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
Q2hhbmdlTG9nCShyZXZpc2lvbiA2NTA4MykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJIHRvIERS
VAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MzMK
KworICAgICAgICBXaW4gc3BlY2lmaWMgQVBJCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJG
cmFtZVByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJGcmFtZTo6cmVzdW1lQW5pbWF0
aW9ucyk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0wOC0wNiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQg
YnkgU2FtIFdlaW5pZwpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTcsNiArMTI5NywzNCBAQCBIUkVT
VUxUIFdlYkZyYW1lOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKK0hSRVNVTFQgV2ViRnJhbWU6OnN1c3BlbmRBbmltYXRpb25zKCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7
CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVy
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdl
YkZyYW1lOjpyZXN1bWVBbmltYXRpb25zKCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHRo
aXMpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRp
b25zKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgV2ViRnJhbWU6OmlzRGlzcGxh
eWluZ1N0YW5kYWxvbmVJbWFnZShCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCklu
ZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJRE9N
Tm9kZSosIGRvdWJsZSBzZWNvbmRzRnJvbU5vdywgQk9PTCogdHJhbnNpdGlvbldhc1J1bm5pbmcp
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXVzZVNWR0FuaW1hdGlv
bihCU1RSIGVsZW1lbnRJZCwgSURPTU5vZGUqLCBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIEJPT0wq
IGFuaW1hdGlvbldhc1J1bm5pbmcpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoVUlOVCopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXN1bWVBbmltYXRpb25zKCk7CiAKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlKEJP
T0wqKTsKIApJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlk
bAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJp
dmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDggQEAgaW50ZXJmYWNlIElXZWJG
cmFtZVByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgcGF1c2VBbmltYXRpb24oW2luXSBC
U1RSIGFuaW1hdGlvbk5hbWUsIFtpbl0gSURPTU5vZGUqIG5vZGUsIFtpbl0gZG91YmxlIHNlY29u
ZHNGcm9tTm93LCBbb3V0LCByZXR2YWxdIEJPT0wqIGFuaW1hdGlvbldhc1J1bm5pbmcpOwogICAg
IEhSRVNVTFQgcGF1c2VUcmFuc2l0aW9uKFtpbl0gQlNUUiBwcm9wZXJ0eU5hbWUsIFtpbl0gSURP
TU5vZGUqIG5vZGUsIFtpbl0gZG91YmxlIHNlY29uZHNGcm9tTm93LCBbb3V0LCByZXR2YWxdIEJP
T0wqIHRyYW5zaXRpb25XYXNSdW5uaW5nKTsKICAgICBIUkVTVUxUIG51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucyhbb3V0LCByZXR2YWxdIFVJTlQqIG51bWJlcik7CisgICAgSFJFU1VMVCBzdXNwZW5k
QW5pbWF0aW9ucygpOworICAgIEhSRVNVTFQgcmVzdW1lQW5pbWF0aW9ucygpOwogCiAgICAgSFJF
U1VMVCBpc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2UoW291dCwgcmV0dmFsXSBCT09MKiByZXN1
bHQpOwogCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTA4MykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEwLTA4LTEwICBDaHJpcyBNYXJy
aW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQ
SSB0byBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNzMzCisgICAgICAgIAorICAgICAgICBBZGRzIHN1c3BlbmRBbmltYXRpb25zKCkgYW5kIHJl
c3VtZUFuaW1hdGlvbnMoKSB0byBMYXlvdXRUZXN0Q29udHJvbGxlci4KKyAgICAgICAgQ2FsbHMg
ZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZXMgb24gQW5pbWF0aW9uQ29udHJvbGxlciBmb3Ig
dGhlIAorICAgICAgICBtYWluRnJhbWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHN1c3BlbmRBbmltYXRp
b25zQ2FsbGJhY2spOgorICAgICAgICAocmVzdW1lQW5pbWF0aW9uc0NhbGxiYWNrKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Vz
cGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFu
aW1hdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRp
b25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgorCiAyMDEwLTA4LTEwICBWaWN0b3Ig
V2FuZyAgPHZpY3RvcndAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4g
VmFmYWkuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
NSw2ICsxNTQ1LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG51bWJlck9mQWN0aXZlQW5pbWF0aW8K
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY29udHJvbGxlci0+bnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzdXNwZW5kQW5p
bWF0aW9uc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlv
dXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250
cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVy
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVzdW1lQW5pbWF0aW9uc0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRp
b25zKCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBz
dGF0aWMgSlNWYWx1ZVJlZiB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCwg
Y29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE4NTAsNiArMTg2NCw4IEBAIEpTU3Rh
dGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAibWFya2VyVGV4
dEZvckxpc3RJdGVtIiwgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzdXNwZW5kQW5pbWF0aW9ucyIsIHN1c3BlbmRB
bmltYXRpb25zQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicmVzdW1lQW5pbWF0aW9ucyIs
IHJlc3VtZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVBy
ZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyIsIHBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUxLDggQEAgcHVibGljOgogICAgIGJv
b2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3Bl
cnR5TmFtZSwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBz
YW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKTsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25z
KCkgY29uc3Q7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwg
SlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25I
b3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJp
bmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJp
bmRNZXRob2QoInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKICAg
ICBiaW5kTWV0aG9kKCJlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZCk7CiAgICAgYmluZE1ldGhvZCgibnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOworICAgIGJpbmRNZXRo
b2QoInN1c3BlbmRBbmltYXRpb25zIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5p
bWF0aW9ucyk7CisgICAgYmluZE1ldGhvZCgicmVzdW1lQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk7CiAgICAgYmluZE1ldGhvZCgiZGlzYWJsZUlt
YWdlTG9hZGluZyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZyk7
CiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKTsKQEAgLTgzOCw2ICs4NDAsMzIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZkFjdGl2ZQogICAgIHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1h
dGlvbnMoKQoreworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKCF3ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYkZyYW1lLT5hbmltYXRpb25D
b250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucyhjb3JlKHdlYkZyYW1lKS0+ZG9jdW1lbnQo
KSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQor
eworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1l
KCk7CisgICAgaWYgKCF3ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQW5pbWF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYkZyYW1lLT5hbmltYXRpb25Db250cm9sbGVy
KCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9s
bGVyLT5yZXN1bWVBbmltYXRpb25zKGNvcmUod2ViRnJhbWUpLT5kb2N1bWVudCgpKTsKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQtPnNldChmYWxzZSk7CkBAIC04NzUsNiArOTAzLDE4IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXYKICAgICByZXN1bHQtPnNldChudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bWVBbmlt
YXRpb25zKCk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+
c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3
LDggQEAgcHVibGljOgogICAgIHZvaWQgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgcmVzdW1l
QW5pbWF0aW9ucyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2
b2lkIGRpc2FibGVJbWFnZUxvYWRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCkBAIC0zOTUsNiArMzk3LDggQEAgcHJpdmF0ZToKICAgICBib29sIHBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgcHJvcGVy
dHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGVsZW1lbnRJZCk7
CiAgICAgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7
CisgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoKTsKIAogICAgIC8vIFVzZWQgZm9yIHRlc3QgdGltZW91dHMuCiAgICAgU2NvcGVkUnVubmFi
bGVNZXRob2RGYWN0b3J5PExheW91dFRlc3RDb250cm9sbGVyPiBtX3RpbWVvdXRGYWN0b3J5OwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyMCw2ICs2MjAsMTYgQEAgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om51bWJlck9mQQogICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVf
YW5pbWF0aW9ucyhtYWluRnJhbWUpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
dXNwZW5kQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVf
c3VzcGVuZF9hbmltYXRpb25zKG1haW5GcmFtZSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiB3ZWJraXRfd2Vi
X2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKG1haW5GcmFtZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5n
UmVmIHZhbHVlKQogewogICAgIGdjaGFyKiBuYW1lID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmco
a2V5KTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MzEsNiArNjMxLDE2IEBAIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9s
bGVyOjpudW1iZXJPZkEKICAgICByZXR1cm4gW21haW5GcmFtZSBfbnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlv
bnMoKSBjb25zdAoreworICAgIHJldHVybiBbbWFpbkZyYW1lIF9zdXNwZW5kQW5pbWF0aW9uc107
Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25z
dAoreworICAgIHJldHVybiBbbWFpbkZyYW1lIF9yZXN1bWVBbmltYXRpb25zXTsKK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHsKICAgICBz
ZXRXYWl0VG9EdW1wKHRydWUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDY0OTkz
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw2ICs0ODQsMjAgQEAgdW5zaWduZWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKTsKIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIFFXZWJGcmFt
ZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKKyAgICBRX0FTU0VSVChm
cmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnN1c3BlbmRBbmltYXRpb25zKGZy
YW1lKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygp
IGNvbnN0Cit7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5G
cmFtZSgpOworICAgIFFfQVNTRVJUKGZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6cmVzdW1lQW5pbWF0aW9ucyhmcmFtZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoKQogewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRp
bmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkF1dG9Mb2FkSW1hZ2VzLCBmYWxzZSk7
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY3LDYgKzE2Nyw4IEBAIHB1YmxpYyBzbG90czoKICAgICBib29sIGVsZW1lbnREb2VzQXV0b0Nv
bXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwogCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7CisgICAgdm9pZCBzdXNw
ZW5kQW5pbWF0aW9ucygpIGNvbnN0OworICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpIGNvbnN0
OwogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBRU3RyaW5n
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyk7CiAgICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBRU3Ry
aW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNv
bnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA2MCw2ICsxMDYwLDI0IEBAIHVuc2lnbmVkIExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZkEKICAgICByZXR1cm4gbnVtYmVyOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgQ09NUHRy
PElXZWJGcmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJhbWUpOworICAgIGlmICgh
ZnJhbWVQcml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZVByaXZhdGUtPnN1c3Bl
bmRBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFu
aW1hdGlvbnMoKSBjb25zdAoreworICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVBy
aXZhdGUoUXVlcnksIGZyYW1lKTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZnJhbWVQcml2YXRlLT5yZXN1bWVBbmltYXRpb25zKCk7Cit9CisKIHN0YXRp
YyBfYnN0cl90IGJzdHJUKEpTU3RyaW5nUmVmIGpzU3RyaW5nKQogewogICAgIC8vIFRoZSBmYWxz
ZSBwYXJhbWV0ZXIgdGVsbHMgdGhlIF9ic3RyX3QgY29uc3RydWN0b3IgdG8gYWRvcHQgdGhlIEJT
VFIgd2UgcGFzcyBpdC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91
dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA2NDk5MykKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNiArMjY0LDE2IEBAIHVuc2lnbmVkIExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZkEKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9u
cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB1bnNpZ25lZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQoKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1MDgzKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDgtMTAgIENo
cmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmlt
YXRpb24gQVBJIHRvIERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDM3MzMKKyAgICAgICAgCisgICAgICAgIFRoaXMgdGVzdHMgc3VzcGVuZCBhbmQg
cmVzdW1lIG9mIGFuaW1hdGlvbnMuIFRyYW5zaXRpb25zIGFyZSBjdXJyZW50bHkgYnJva2VuCisg
ICAgICAgIGR1ZSB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3
OTIuIEkgd2lsbCBhZGQgdHJhbnNpdGlvbgorICAgICAgICB0ZXN0cyBhbmQgdGVzdHMgb2YgdHJh
bnNpdGlvbiBhbmQgYW5pbWF0aW9uIGludGVyYWN0aW9uIHdpdGggdGhhdCBmaXguCisKKyAgICAg
ICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanM6CisgICAgICAgIChtYXRy
aXhTdHJpbmdUb0FycmF5KToKKyAgICAgICAgKiBhbmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFu
aW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvc3VzcGVu
ZC1yZXN1bWUtYW5pbWF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA4LTEwICBKb2hubnkgRGlu
ZyAgPGpuZEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
SW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBl
cnMuanMJKHJldmlzaW9uIDY0OTkzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGVzdC1oZWxwZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIGZ1bmN0
aW9uIGlzQ2xvc2VFbm91Z2goYWN0dWFsLCBkZXNpcmVkLCAKIAogZnVuY3Rpb24gbWF0cml4U3Ry
aW5nVG9BcnJheShzKQogeworICAgIGlmIChzID09ICJub25lIikKKyAgICAgICAgcmV0dXJuIFsg
MSwgMCwgMCwgMSwgMCwgMCBdOwogICAgIHZhciBtID0gcy5zcGxpdCgiKCIpOwogICAgIG0gPSBt
WzFdLnNwbGl0KCIpIik7CiAgICAgcmV0dXJuIG1bMF0uc3BsaXQoIiwiKTsKSW5kZXg6IExheW91
dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFuaW1h
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L3N1c3BlbmQtcmVzdW1lLWFuaW1hdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNiBAQAorVGhpcyB0ZXN0IHNob3dzIHN1c3BlbmQgYW5kIHJlc3VtZSBvZiBhIGJveCBt
b3ZpbmcgdG8gdGhlIHJpZ2h0IDUwMHB4LiBJZiBydW5uaW5nIGluc2lkZSBEdW1wUmVuZGVyVGVz
dCB0aGUgYm94IHNob3VsZCBzdG9wIGF0IDIwMHB4IGFmdGVyIDUwMG1zIGFuZCB0aGVuIGNvbnRp
bnVlIHRvIGNvbXBsZXRlIHRoZSBtb3ZlIGluIGFub3RoZXIgNzUwbXMKKworUEFTUyAtICJ3ZWJr
aXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuNnMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogMSwwLDAsMSwyMDAsMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHBy
b3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuOXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MSwwLDAsMSwyMDAsMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94
IiBlbGVtZW50IGF0IDEuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMSwwLDAsMSw0MDAsMAor
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQtcmVz
dW1lLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlw
ZQogICArIHRleHQvcGxhaW4KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4
OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFuaW1hdGlvbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0
aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQt
cmVzdW1lLWFuaW1hdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8IURP
Q1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VO
IiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzxodG1sIGxhbmc9ImVu
Ij4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0IHN1c3BlbmRBbmltYXRpb25z
KCkvcmVzdW1lQW5pbWF0aW9ucygpIGZvciBhbmltYXRpb25zPC90aXRsZT4KKyAgPHN0eWxlIHR5
cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjYm94IHsKKyAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OworICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDEuMjVzOworICAgICAgLXdlYmtp
dC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgICAtd2Via2l0LWFuaW1h
dGlvbi1uYW1lOiAibW92ZSI7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyAibW92ZSIg
eworICAgICAgICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH0KKyAg
ICAgICAgdG8gICB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwMHB4KTsgfQorICAg
IH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIAorICAgIGNv
bnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW2FuaW1hdGlvbi1uYW1lLCB0aW1lLCBl
bGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgICAgIFsi
cm90YXRlIiwgMC42LCAiYm94IiwgIndlYmtpdFRyYW5zZm9ybSIsIFsxLDAsMCwxLCAyMDAsIDBd
LCAzMF0sCisgICAgICBbInJvdGF0ZSIsIDAuOSwgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBb
MSwwLDAsMSwgMjAwLCAwXSwgMzBdLAorICAgICAgWyJyb3RhdGUiLCAxLjUsICJib3giLCAid2Vi
a2l0VHJhbnNmb3JtIiwgWzEsMCwwLDEsIDQwMCwgMF0sIDMwXSwKKyAgICBdOworICAgIAorICAg
IGZ1bmN0aW9uIHN1c3BlbmQoKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnN1c3BlbmRBbmlt
YXRpb25zKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHJlc3VtZSgpCisgICAgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIucmVzdW1lQW5pbWF0aW9ucygpOworICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBzZXRUaW1lcnMoKQorICAgIHsKKyAgICAgICAgc2V0VGltZW91dChzdXNwZW5kLCA1MDAp
OworICAgICAgICBzZXRUaW1lb3V0KHJlc3VtZSwgMTAwMCk7CisgICAgfQorCisgICAgcnVuQW5p
bWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0VGltZXJzLCB1bmRlZmluZWQsIHRydWUpOwor
ICAgIAorICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+CitUaGlzIHRlc3Qgc2hvd3Mg
c3VzcGVuZCBhbmQgcmVzdW1lIG9mIGEgYm94IG1vdmluZyB0byB0aGUgcmlnaHQgNTAwcHguIElm
IHJ1bm5pbmcgaW5zaWRlIER1bXBSZW5kZXJUZXN0IHRoZSBib3ggc2hvdWxkIHN0b3AgYXQgMjAw
cHgKK2FmdGVyIDUwMG1zIGFuZCB0aGVuIGNvbnRpbnVlIHRvIGNvbXBsZXRlIHRoZSBtb3ZlIGlu
IGFub3RoZXIgNzUwbXMKKzxkaXYgaWQ9ImJveCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+
Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbApBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64050</attachid>
            <date>2010-08-10 15:13:01 -0700</date>
            <delta_ts>2010-08-10 17:16:06 -0700</delta_ts>
            <desc>Patch with fix for gtk build</desc>
            <filename>43733.patch</filename>
            <type>text/plain</type>
            <size>31382</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NTA4MykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJpbiAgPGNtYXJy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJIHRvIERSVAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MzMKKyAg
ICAgICAgCisgICAgICAgIEd0ayBzcGVjaWZpYyBBUEkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyk6CisgICAgICAgICh3ZWJr
aXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKToKKwogMjAxMC0wOC0xMCAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1w
ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHJldmlz
aW9uIDY0OTkzKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDcsNiArMzQ3LDEyIEBAIGV4dGVybiAiQyIgewogICAgIHdlYmtpdF93ZWJf
ZnJhbWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7
CiAKICAgICBXRUJLSVRfQVBJIHZvaWQKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCisgICAgV0VCS0lUX0FQSSB2b2lkCisg
ICAgd2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJh
bWUpOworCisgICAgV0VCS0lUX0FQSSB2b2lkCiAgICAgd2Via2l0X3dlYl9mcmFtZV9jbGVhcl9t
YWluX2ZyYW1lX25hbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKIAogICAgIFdFQktJVF9BUEkg
QXRrT2JqZWN0KgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNTMsNiArMTA1MywzMiBAQCB1bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9m
cmFtZV9udW1iZXJfb2ZfCiAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpOwogfQogCit2b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25z
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShm
cmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1h
dGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udHJvbGxlci0+c3Vz
cGVuZEFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KKwordm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBj
b3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucyhjb3JlRnJhbWUtPmRvY3Vt
ZW50KCkpOworfQorCiBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRfcmVzcG9uc2VfbWltZV90
eXBlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShmcmFtZSk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjUwODMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA4LTEwICBDaHJpcyBNYXJy
aW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQ
SSB0byBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNzMzCisgICAgICAgIAorICAgICAgICBNYWMgc3BlY2lmaWMgQVBJLiBQbHVtYnMgc3VzcGVu
ZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9ucyBkb3duIHRvIFdlYkNvcmUuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3VzcGVuZEFuaW1h
dGlvbnNdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Jlc3VtZUFuaW1hdGlvbnNdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDEwLTA4LTA2ICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBl
ZCBieSBTYW0gV2VpbmlnCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA2NDk5
MykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTE5Myw2ICsxMTkzLDMyIEBAIC0gKHVuc2lnbmVkKSBfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
CiAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogfQog
CistICh2b2lkKSBfc3VzcGVuZEFuaW1hdGlvbnMKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHNlbGYpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFj
b250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5p
bWF0aW9ucyhmcmFtZS0+ZG9jdW1lbnQoKSk7Cit9CisKKy0gKHZvaWQpIF9yZXN1bWVBbmltYXRp
b25zCit7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZShzZWxmKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
ZnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucyhmcmFtZS0+ZG9jdW1lbnQoKSk7
Cit9CisKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50
RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNl
bWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0
Y2hTdHlsZQogewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNO
b25lKCkgfHwgIWZyYWdtZW50KQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUu
aAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTAgQEAgQGludGVyZmFjZSBXZWJGcmFt
ZSAoV2ViUHJpdmF0ZSkKIC8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkg
cnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NT
IGFuaW1hdGlvbnMpLgogLSAodW5zaWduZWQpIF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnM7CiAK
Ky8vIFN1c3BlbmQgYW5kIHJlc3VtZSBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFu
c2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgorLSAodm9pZCkgX3N1c3BlbmRBbmltYXRpb25z
OworLSAodm9pZCkgX3Jlc3VtZUFuaW1hdGlvbnM7CisKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBs
YWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRS
ZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0Y2hTdHlsZTsKIC0gKHZvaWQpX3JlcGxhY2VTZWxl
Y3Rpb25XaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNl
bGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2U7CiAtICh2b2lk
KV9yZXBsYWNlU2VsZWN0aW9uV2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJp
bmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nIHNlbGVjdFJlcGxhY2Vt
ZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxh
Y2U7CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY1MDgzKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA4LTEwICBDaHJpcyBNYXJyaW4gIDxjbWFy
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQSSB0byBEUlQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzMzCisg
ICAgICAgIAorICAgICAgICBRdCBzcGVjaWZpYyBBUEkuIE1pc3Npbmcgc3ltYmlhbiBzeW1ib2wg
ZGVmaW5lcyBpbjoKKyAgICAgICAgCisgICAgICAgICAgICBXZWJLaXQvcXQvc3ltYmlhbi9id2lu
cy9RdFdlYktpdHUuZGVmCisgICAgICAgICAgICBXZWJLaXQvcXQvc3ltYmlhbi9lYWJpL1F0V2Vi
S2l0dS5kZWYKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQW5pbWF0
aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0aW9u
cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoK
KwogMjAxMC0wOC0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZwpJbmRleDogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShy
ZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsMzIgQEAgaW50IER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZkFjdAogICAgIHJldHVybiBjb250cm9sbGVy
LT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c3VzcGVuZEFuaW1hdGlvbnMoUVdlYkZyYW1lICpmcmFtZSkKK3sKKyAgICBGcmFt
ZSogY29yZUZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7CisgICAgaWYgKCFj
b3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlvbigpOworICAgIGlmICghY29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1hdGlvbnMoY29y
ZUZyYW1lLT5kb2N1bWVudCgpKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
cmVzdW1lQW5pbWF0aW9ucyhRV2ViRnJhbWUgKmZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9
IGNvcmVGcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKSk7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyRnJhbWVO
YW1lKFFXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUoZnJhbWUpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDY0OTkzKQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFyRnJh
bWVOYW1lKFFXZWJGcmFtZSogZnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIG92ZXJ3cml0ZVBsdWdp
bkRpcmVjdG9yaWVzKCk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
UVdlYkZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoUVdlYkZyYW1l
Kik7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKICAgICBz
dGF0aWMgaW50IG51bWJlck9mUGFnZXMoUVdlYkZyYW1lKiBmcmFtZSwgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCk7CiAgICAgc3RhdGljIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQpOwogICAgIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWUqIGZyYW1l
KTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
Q2hhbmdlTG9nCShyZXZpc2lvbiA2NTA4MykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMTAgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBzdXNwZW5kQW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb24gQVBJIHRvIERS
VAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MzMK
KworICAgICAgICBXaW4gc3BlY2lmaWMgQVBJCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJG
cmFtZVByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJGcmFtZTo6cmVzdW1lQW5pbWF0
aW9ucyk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0wOC0wNiAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQg
YnkgU2FtIFdlaW5pZwpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTcsNiArMTI5NywzNCBAQCBIUkVT
VUxUIFdlYkZyYW1lOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKK0hSRVNVTFQgV2ViRnJhbWU6OnN1c3BlbmRBbmltYXRpb25zKCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7
CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVy
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdl
YkZyYW1lOjpyZXN1bWVBbmltYXRpb25zKCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHRo
aXMpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRp
b25zKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgV2ViRnJhbWU6OmlzRGlzcGxh
eWluZ1N0YW5kYWxvbmVJbWFnZShCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCklu
ZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJRE9N
Tm9kZSosIGRvdWJsZSBzZWNvbmRzRnJvbU5vdywgQk9PTCogdHJhbnNpdGlvbldhc1J1bm5pbmcp
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXVzZVNWR0FuaW1hdGlv
bihCU1RSIGVsZW1lbnRJZCwgSURPTU5vZGUqLCBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIEJPT0wq
IGFuaW1hdGlvbldhc1J1bm5pbmcpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoVUlOVCopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXN1bWVBbmltYXRpb25zKCk7CiAKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlKEJP
T0wqKTsKIApJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlk
bAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJp
dmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDggQEAgaW50ZXJmYWNlIElXZWJG
cmFtZVByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgcGF1c2VBbmltYXRpb24oW2luXSBC
U1RSIGFuaW1hdGlvbk5hbWUsIFtpbl0gSURPTU5vZGUqIG5vZGUsIFtpbl0gZG91YmxlIHNlY29u
ZHNGcm9tTm93LCBbb3V0LCByZXR2YWxdIEJPT0wqIGFuaW1hdGlvbldhc1J1bm5pbmcpOwogICAg
IEhSRVNVTFQgcGF1c2VUcmFuc2l0aW9uKFtpbl0gQlNUUiBwcm9wZXJ0eU5hbWUsIFtpbl0gSURP
TU5vZGUqIG5vZGUsIFtpbl0gZG91YmxlIHNlY29uZHNGcm9tTm93LCBbb3V0LCByZXR2YWxdIEJP
T0wqIHRyYW5zaXRpb25XYXNSdW5uaW5nKTsKICAgICBIUkVTVUxUIG51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucyhbb3V0LCByZXR2YWxdIFVJTlQqIG51bWJlcik7CisgICAgSFJFU1VMVCBzdXNwZW5k
QW5pbWF0aW9ucygpOworICAgIEhSRVNVTFQgcmVzdW1lQW5pbWF0aW9ucygpOwogCiAgICAgSFJF
U1VMVCBpc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2UoW291dCwgcmV0dmFsXSBCT09MKiByZXN1
bHQpOwogCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTA4MykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEwLTA4LTEwICBDaHJpcyBNYXJy
aW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQ
SSB0byBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNzMzCisgICAgICAgIAorICAgICAgICBBZGRzIHN1c3BlbmRBbmltYXRpb25zKCkgYW5kIHJl
c3VtZUFuaW1hdGlvbnMoKSB0byBMYXlvdXRUZXN0Q29udHJvbGxlci4KKyAgICAgICAgQ2FsbHMg
ZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZXMgb24gQW5pbWF0aW9uQ29udHJvbGxlciBmb3Ig
dGhlIAorICAgICAgICBtYWluRnJhbWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHN1c3BlbmRBbmltYXRp
b25zQ2FsbGJhY2spOgorICAgICAgICAocmVzdW1lQW5pbWF0aW9uc0NhbGxiYWNrKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Vz
cGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFu
aW1hdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRp
b25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgorCiAyMDEwLTA4LTEwICBWaWN0b3Ig
V2FuZyAgPHZpY3RvcndAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4g
VmFmYWkuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
NSw2ICsxNTQ1LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG51bWJlck9mQWN0aXZlQW5pbWF0aW8K
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY29udHJvbGxlci0+bnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzdXNwZW5kQW5p
bWF0aW9uc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlv
dXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250
cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVy
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVzdW1lQW5pbWF0aW9uc0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRp
b25zKCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBz
dGF0aWMgSlNWYWx1ZVJlZiB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCwg
Y29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE4NTAsNiArMTg2NCw4IEBAIEpTU3Rh
dGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAibWFya2VyVGV4
dEZvckxpc3RJdGVtIiwgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzdXNwZW5kQW5pbWF0aW9ucyIsIHN1c3BlbmRB
bmltYXRpb25zQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicmVzdW1lQW5pbWF0aW9ucyIs
IHJlc3VtZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVBy
ZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyIsIHBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUxLDggQEAgcHVibGljOgogICAgIGJv
b2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3Bl
cnR5TmFtZSwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBz
YW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKTsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25z
KCkgY29uc3Q7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwg
SlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25I
b3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJp
bmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJp
bmRNZXRob2QoInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKICAg
ICBiaW5kTWV0aG9kKCJlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZCk7CiAgICAgYmluZE1ldGhvZCgibnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOworICAgIGJpbmRNZXRo
b2QoInN1c3BlbmRBbmltYXRpb25zIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5p
bWF0aW9ucyk7CisgICAgYmluZE1ldGhvZCgicmVzdW1lQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk7CiAgICAgYmluZE1ldGhvZCgiZGlzYWJsZUlt
YWdlTG9hZGluZyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZyk7
CiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKTsKQEAgLTgzOCw2ICs4NDAsMzIgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZkFjdGl2ZQogICAgIHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1h
dGlvbnMoKQoreworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKCF3ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYkZyYW1lLT5hbmltYXRpb25D
b250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucyhjb3JlKHdlYkZyYW1lKS0+ZG9jdW1lbnQo
KSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQor
eworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1l
KCk7CisgICAgaWYgKCF3ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQW5pbWF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYkZyYW1lLT5hbmltYXRpb25Db250cm9sbGVy
KCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9s
bGVyLT5yZXN1bWVBbmltYXRpb25zKGNvcmUod2ViRnJhbWUpLT5kb2N1bWVudCgpKTsKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQtPnNldChmYWxzZSk7CkBAIC04NzUsNiArOTAzLDE4IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXYKICAgICByZXN1bHQtPnNldChudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bWVBbmlt
YXRpb25zKCk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmRpc2FibGVJbWFnZUxvYWRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+
c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3
LDggQEAgcHVibGljOgogICAgIHZvaWQgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgcmVzdW1l
QW5pbWF0aW9ucyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2
b2lkIGRpc2FibGVJbWFnZUxvYWRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCkBAIC0zOTUsNiArMzk3LDggQEAgcHJpdmF0ZToKICAgICBib29sIHBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgcHJvcGVy
dHlOYW1lLCBkb3VibGUgdGltZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGVsZW1lbnRJZCk7
CiAgICAgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7
CisgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoKTsKIAogICAgIC8vIFVzZWQgZm9yIHRlc3QgdGltZW91dHMuCiAgICAgU2NvcGVkUnVubmFi
bGVNZXRob2RGYWN0b3J5PExheW91dFRlc3RDb250cm9sbGVyPiBtX3RpbWVvdXRGYWN0b3J5OwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA2NDk5MykKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDggQEAgYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX2FuaW1h
dGlvbihXZQogYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFy
KiBlbGVtZW50KTsKIGJvb2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9zdmdfYW5pbWF0aW9uKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25z
dCBnY2hhciogZWxlbWVudCk7CiB1bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJf
b2ZfYWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKK3Vuc2lnbmVkIGlu
dCB3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJh
bWUpOwordW5zaWduZWQgaW50IHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKIHZvaWQgd2Via2l0X2FwcGxpY2F0aW9uX2NhY2hlX3NldF9t
YXhpbXVtX3NpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpOwogdW5zaWduZWQgaW50IHdlYmtp
dF93b3JrZXJfdGhyZWFkX2NvdW50KHZvaWQpOwogdm9pZCB3ZWJraXRfd2hpdGVfbGlzdF9hY2Nl
c3NfZnJvbV9vcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3QgZ2NoYXIqIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtNjIwLDYgKzYyMiwxNiBAQCB1bnNpZ25lZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBCiAgICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJh
bWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRpb25zKG1haW5GcmFtZSk7CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gd2Via2l0X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMobWFpbkZyYW1lKTsKK30KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMobWFpbkZyYW1lKTsK
K30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3Ry
aW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgZ2NoYXIqIG5hbWUgPSBKU1N0
cmluZ0NvcHlVVEY4Q1N0cmluZyhrZXkpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNp
b24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzMSw2ICs2MzEsMTYgQEAgdW5zaWdu
ZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQQogICAgIHJldHVybiBbbWFpbkZyYW1l
IF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttYWluRnJhbWUg
X3N1c3BlbmRBbmltYXRpb25zXTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVz
dW1lQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttYWluRnJhbWUgX3Jlc3VtZUFu
aW1hdGlvbnNdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0Rm9yUG9saWN5
RGVsZWdhdGUoKQogewogICAgIHNldFdhaXRUb0R1bXAodHJ1ZSk7CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAkocmV2aXNpb24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg0LDYgKzQ4NCwy
MCBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBCiAgICAgcmV0dXJu
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUp
OwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpIGNv
bnN0Cit7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFt
ZSgpOworICAgIFFfQVNTRVJUKGZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
c3VzcGVuZEFuaW1hdGlvbnMoZnJhbWUpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpyZXN1bWVBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CisgICAgUV9BU1NFUlQoZnJhbWUpOworICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXN1bWVBbmltYXRpb25zKGZyYW1lKTsKK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTG9hZGluZygpCiB7CiAgICAgbV9k
cnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6QXV0
b0xvYWRJbWFnZXMsIGZhbHNlKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDY0OTkzKQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAgcHVibGljIHNsb3RzOgogICAgIGJv
b2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcm
IGVsZW1lbnRJZCk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBj
b25zdDsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCkgY29uc3Q7CisgICAgdm9pZCByZXN1
bWVBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2
aXNpb24gNjQ5OTMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYwLDYgKzEwNjAsMjQgQEAg
dW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQQogICAgIHJldHVybiBudW1i
ZXI7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKCkg
Y29uc3QKK3sKKyAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5
LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IGZyYW1lUHJpdmF0ZS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgQ09NUHRyPElXZWJG
cmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJhbWUpOworICAgIGlmICghZnJhbWVQ
cml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZVByaXZhdGUtPnJlc3VtZUFuaW1h
dGlvbnMoKTsKK30KKwogc3RhdGljIF9ic3RyX3QgYnN0clQoSlNTdHJpbmdSZWYganNTdHJpbmcp
CiB7CiAgICAgLy8gVGhlIGZhbHNlIHBhcmFtZXRlciB0ZWxscyB0aGUgX2JzdHJfdCBjb25zdHJ1
Y3RvciB0byBhZG9wdCB0aGUgQlNUUiB3ZSBwYXNzIGl0LgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJ
KHJldmlzaW9uIDY0OTkzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsMTYgQEAg
dW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQQogICAgIHJldHVybiAwOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpyZXN1bWVBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRDb3VudCgp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjUw
ODMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OSBAQAorMjAxMC0wOC0xMCAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1c3BlbmRB
bmltYXRpb25zL3Jlc3VtZUFuaW1hdGlvbiBBUEkgdG8gRFJUCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzczMworICAgICAgICAKKyAgICAgICAgVGhp
cyB0ZXN0cyBzdXNwZW5kIGFuZCByZXN1bWUgb2YgYW5pbWF0aW9ucy4gVHJhbnNpdGlvbnMgYXJl
IGN1cnJlbnRseSBicm9rZW4KKyAgICAgICAgZHVlIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Mzc5Mi4gSSB3aWxsIGFkZCB0cmFuc2l0aW9uCisgICAgICAgIHRl
c3RzIGFuZCB0ZXN0cyBvZiB0cmFuc2l0aW9uIGFuZCBhbmltYXRpb24gaW50ZXJhY3Rpb24gd2l0
aCB0aGF0IGZpeC4KKworICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVy
cy5qczoKKyAgICAgICAgKG1hdHJpeFN0cmluZ1RvQXJyYXkpOgorICAgICAgICAqIGFuaW1hdGlv
bnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1hbmltYXRpb24uaHRtbDogQWRkZWQuCisKIDIw
MTAtMDgtMTAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGVzdC1oZWxwZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMv
YW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwkocmV2aXNpb24gNjQ5OTMpCisrKyBMYXlvdXRUZXN0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAgZnVuY3Rpb24gaXNDbG9zZUVub3VnaChhY3R1YWwsIGRlc2lyZWQsIAog
CiBmdW5jdGlvbiBtYXRyaXhTdHJpbmdUb0FycmF5KHMpCiB7CisgICAgaWYgKHMgPT0gIm5vbmUi
KQorICAgICAgICByZXR1cm4gWyAxLCAwLCAwLCAxLCAwLCAwIF07CiAgICAgdmFyIG0gPSBzLnNw
bGl0KCIoIik7CiAgICAgbSA9IG1bMV0uc3BsaXQoIikiKTsKICAgICByZXR1cm4gbVswXS5zcGxp
dCgiLCIpOwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMv
c3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3Qgc2hvd3Mgc3VzcGVuZCBh
bmQgcmVzdW1lIG9mIGEgYm94IG1vdmluZyB0byB0aGUgcmlnaHQgNTAwcHguIElmIHJ1bm5pbmcg
aW5zaWRlIER1bXBSZW5kZXJUZXN0IHRoZSBib3ggc2hvdWxkIHN0b3AgYXQgMjAwcHggYWZ0ZXIg
NTAwbXMgYW5kIHRoZW4gY29udGludWUgdG8gY29tcGxldGUgdGhlIG1vdmUgaW4gYW5vdGhlciA3
NTBtcworCitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1l
bnQgYXQgMC42cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxLDAsMCwxLDIwMCwwCitQQVNTIC0g
IndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC45cyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAxLDAsMCwxLDIwMCwwCitQQVNTIC0gIndlYmtpdFRyYW5zZm9y
bSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMS41cyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiAxLDAsMCwxLDQwMCwwCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Fu
aW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1
bWUtYW5pbWF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9z
dXNwZW5kLXJlc3VtZS1hbmltYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2FuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5k
dGQiPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRl
c3Qgc3VzcGVuZEFuaW1hdGlvbnMoKS9yZXN1bWVBbmltYXRpb25zKCkgZm9yIGFuaW1hdGlvbnM8
L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICNi
b3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjog
MS4yNXM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsK
KyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ICJtb3ZlIjsKKyAgICB9CisgICAgQC13ZWJr
aXQta2V5ZnJhbWVzICJtb3ZlIiB7CisgICAgICAgIGZyb20geyAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWCgwKTsgfQorICAgICAgICB0byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZVgoNTAwcHgpOyB9CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0
aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5p
bWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwg
dG9sZXJhbmNlXQorICAgICAgWyJyb3RhdGUiLCAwLjYsICJib3giLCAid2Via2l0VHJhbnNmb3Jt
IiwgWzEsMCwwLDEsIDIwMCwgMF0sIDMwXSwKKyAgICAgIFsicm90YXRlIiwgMC45LCAiYm94Iiwg
IndlYmtpdFRyYW5zZm9ybSIsIFsxLDAsMCwxLCAyMDAsIDBdLCAzMF0sCisgICAgICBbInJvdGF0
ZSIsIDEuNSwgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbMSwwLDAsMSwgNDAwLCAwXSwgMzBd
LAorICAgIF07CisgICAgCisgICAgZnVuY3Rpb24gc3VzcGVuZCgpCisgICAgeworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
cmVzdW1lKCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZXN1bWVBbmltYXRpb25zKCk7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHNldFRpbWVycygpCisgICAgeworICAgICAgICBzZXRU
aW1lb3V0KHN1c3BlbmQsIDUwMCk7CisgICAgICAgIHNldFRpbWVvdXQocmVzdW1lLCAxMDAwKTsK
KyAgICB9CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzLCBzZXRUaW1lcnMs
IHVuZGVmaW5lZCwgdHJ1ZSk7CisgICAgCisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD4KK1RoaXMgdGVzdCBzaG93cyBzdXNwZW5kIGFuZCByZXN1bWUgb2YgYSBib3ggbW92aW5nIHRv
IHRoZSByaWdodCA1MDBweC4gSWYgcnVubmluZyBpbnNpZGUgRHVtcFJlbmRlclRlc3QgdGhlIGJv
eCBzaG91bGQgc3RvcCBhdCAyMDBweAorYWZ0ZXIgNTAwbXMgYW5kIHRoZW4gY29udGludWUgdG8g
Y29tcGxldGUgdGhlIG1vdmUgaW4gYW5vdGhlciA3NTBtcworPGRpdiBpZD0iYm94Ij4KKzwvZGl2
PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1hbmltYXRp
b24uaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>
<flag name="review"
          id="52514"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>