<?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>39979</bug_id>
          
          <creation_ts>2010-05-31 20:23:59 -0700</creation_ts>
          <short_desc>Generate TransformAction events from touch gestures</short_desc>
          <delta_ts>2012-02-23 02:01:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39757</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kim Grönholm">kim.1.gronholm</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ademar</cc>
    
    <cc>benm</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232597</commentid>
    <comment_count>0</comment_count>
    <who name="Kim Grönholm">kim.1.gronholm</who>
    <bug_when>2010-05-31 20:23:59 -0700</bug_when>
    <thetext>Dispatch appropriate TransformAction events from touch gestures.

For more details about TransformActionEvent, see: http://portaali.org/~ilkkao/w3c/manipulate/Transformaction.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232599</commentid>
    <comment_count>1</comment_count>
      <attachid>57513</attachid>
    <who name="Kim Grönholm">kim.1.gronholm</who>
    <bug_when>2010-05-31 20:28:59 -0700</bug_when>
    <thetext>Created attachment 57513
Generate TransformAction events from touch gestures

This patch enables transformaction events to be generated from touch 
gestures by adding gesture handling machinery based on PlatformTouchEvents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239340</commentid>
    <comment_count>2</comment_count>
      <attachid>58982</attachid>
    <who name="Kim Grönholm">kim.1.gronholm</who>
    <bug_when>2010-06-17 05:16:24 -0700</bug_when>
    <thetext>Created attachment 58982
Generate TransformAction events from touch gestures

Rebased the patch and did some minor improvements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269817</commentid>
    <comment_count>3</comment_count>
      <attachid>58982</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-26 04:41:26 -0700</bug_when>
    <thetext>Comment on attachment 58982
Generate TransformAction events from touch gestures

This patch is included in the qtwebkit-2.1 branch with commit 5472c61287b584c180800572d5549fde0839953c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333861</commentid>
    <comment_count>4</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-01-13 12:06:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 58982 [details])
&gt; This patch is included in the qtwebkit-2.1 branch with commit 5472c61287b584c180800572d5549fde0839953c

This has been reverted. Nobody is requiring this anymore, so we&apos;ll wait for it to be standardized and get into trunk first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562971</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-23 02:01:25 -0800</bug_when>
    <thetext>Resolving this bug, too. It&apos;s not active anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57513</attachid>
            <date>2010-05-31 20:28:59 -0700</date>
            <delta_ts>2010-06-17 05:16:24 -0700</delta_ts>
            <desc>Generate TransformAction events from touch gestures</desc>
            <filename>gesturesupport2.patch</filename>
            <type>text/plain</type>
            <size>28929</size>
            <attacher name="Kim Grönholm">kim.1.gronholm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZWUwOWIwLi41MDIzNmZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDUt
MjcgIEtpbSBHcsO2bmhvbG0gIDxraW0uMS5ncm9uaG9sbUBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFRyYW5zZm9ybUFjdGlv
bkV2ZW50IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NzU3CisKKyAgICAgICAgVGVzdHMgYmFzaWMgc2luZ2xlLSBhbmQgbXVsdGktdG91
Y2ggc2VxdWVuY2VzIGFuZCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBUcmFuc2Zvcm1BY3Rp
b24gZXZlbnRzIHRoYXQgYXJlIGdlbmVyYXRlZC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3Ry
YW5zZm9ybWFjdGlvbi9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdHJhbnNmb3JtYWN0aW9uL2Jhc2ljLXRyYW5z
Zm9ybWFjdGlvbi1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdHJh
bnNmb3JtYWN0aW9uL3Jlc291cmNlcy9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlQ2xvc2UpOgorICAgICAgICAoYXBwZW5kRXZlbnRMb2cp
OgorICAgICAgICAodmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQpOgorICAgICAgICAoc2luZ2xl
VG91Y2hTZXF1ZW5jZSk6CisgICAgICAgIChtdWx0aVRvdWNoU2VxdWVuY2UpOgorCiAyMDEwLTA1
LTMxICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQyNzQ1YS4uOTQ2MThjZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBA
QAorMjAxMC0wNS0yNyAgS2ltIEdyw7ZuaG9sbSAgPGtpbS4xLmdyb25ob2xtQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVHJh
bnNmb3JtQWN0aW9uRXZlbnQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3NTcKKworICAgICAgICBFbmFibGluZyB0cmFuc2Zvcm1hY3Rp
b24gZXZlbnRzIHRvIGJlIGdlbmVyYXRlZCBmcm9tIG11bHRpLXRvdWNoCisgICAgICAgIGdlc3R1
cmVzIGJ5IGFkZGluZyBnZXN0dXJlIGhhbmRsaW5nIG1hY2hpbmVyeSBhbmQgZXZlbnRoYW5kbGVy
IGhvb2tzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3RyYW5zZm9ybWFjdGlvbi9iYXNp
Yy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLmh0bWwKKyAgICAgICAgVGVzdHMgYmFzaWMgc2luZ2xl
LSBhbmQgbXVsdGktdG91Y2ggc2VxdWVuY2VzIGFuZCB0aGUgY29ycmVzcG9uZGluZworICAgICAg
ICBUcmFuc2Zvcm1BY3Rpb24gZXZlbnRzIHRoYXQgYXJlIGdlbmVyYXRlZC4KKworICAgICAgICBB
IG1hbnVhbCB0ZXN0IGNhbiBiZSBmb3VuZCBmcm9tOgorICAgICAgICBodHRwczovL2J1Zy0zOTc1
Ny1hdHRhY2htZW50cy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTU3MjI2CisKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYXNUcmFuc2Zvcm1BY3Rpb25FdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1RvdWNoR2VzdHVyZUhhbmRsZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OlRvdWNoR2Vz
dHVyZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hHZXN0dXJlSGFuZGxlcjo6dXBk
YXRlUmVmcmVzaE5lZWRlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhh
bmRsZXI6OnVwZGF0ZVRvdWNoUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVy
ZUhhbmRsZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6
OmNhbGNBbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEdlc3R1cmVIYW5kbGVyOjpkaWZm
QW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hHZXN0dXJlSGFuZGxlcjo6Y2FsY1Bvcyk6
CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEdlc3R1cmVIYW5kbGVyOjpjYWxjRGlzdGFuY2UpOgor
ICAgICAgICAqIHBhZ2UvVG91Y2hHZXN0dXJlSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OnRyYW5zbGF0ZVgpOgorICAgICAgICAoV2ViQ29y
ZTo6VG91Y2hHZXN0dXJlSGFuZGxlcjo6dHJhbnNsYXRlWSk6CisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEdlc3R1cmVIYW5kbGVyOjpwb3MpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hHZXN0dXJl
SGFuZGxlcjo6c2NyZWVuUG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRs
ZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OnJvdGF0
ZSk6CisKIDIwMTAtMDUtMzEgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNDUwZWYxOC4uNDdi
YTJlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC0yOTU5LDYgKzI5NTksMTEgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NZ
TUJJQU5fRElBTE9HX1BST1ZJREVSUykgewogICAgIH0KIH0KIAorY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1RSQU5TRk9STUFDVElPTl9FVkVOVFM9MSkgeworICAgIEhFQURFUlMgKz0gcGFnZS9U
b3VjaEdlc3R1cmVIYW5kbGVyLmgKKyAgICBTT1VSQ0VTICs9IHBhZ2UvVG91Y2hHZXN0dXJlSGFu
ZGxlci5jcHAKK30KKwogaW5jbHVkZSgkJFBXRC8uLi9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJp
KQogSEVBREVSUyArPSAkJFdFQktJVF9BUElfSEVBREVSUwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDg1MjU4YzIuLjAxOTkxMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04Myw2ICs4Mywx
MCBAQAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2
ZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorCisjaWYgRU5BQkxFKFRSQU5TRk9STUFD
VElPTl9FVkVOVFMpCisjaW5jbHVkZSAiVHJhbnNmb3JtQWN0aW9uRXZlbnQuaCIKKyNlbmRpZgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3MzcsNyArMjc0MSw2IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjp1cGRhdGVMYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZShTY3JvbGxiYXIqIHNj
cm9sbGJhciwgYm9vbCBzZXRMCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotCiBzdGF0
aWMgUGFzc1JlZlB0cjxUb3VjaExpc3Q+IGFzc2VtYmxlVGFyZ2V0VG91Y2hlcyhUb3VjaCogdG91
Y2hUYXJnZXQsIFRvdWNoTGlzdCogdG91Y2hlcykKIHsKICAgICBSZWZQdHI8VG91Y2hMaXN0PiB0
YXJnZXRUb3VjaGVzID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKQEAgLTI3NTYsNiArMjc1OSwxOSBA
QCBzdGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3IoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiB2
aWV3ID8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSA6IDEuMGY7CiB9CiAKKyNpZiBFTkFCTEUoVFJB
TlNGT1JNQUNUSU9OX0VWRU5UUykKK3N0YXRpYyBib29sIGhhc1RyYW5zZm9ybUFjdGlvbkV2ZW50
TGlzdGVuZXIoTm9kZSogdGFyZ2V0KQoreworICAgIGZvciAoTm9kZSogbiA9IHRhcmdldDsgbjsg
biA9IG4tPmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChuLT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkudHJhbnNmb3JtYWN0aW9uc3RhcnRFdmVudCkKKyAgICAgICAgICAg
IHx8IG4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50cmFuc2Zvcm1hY3Rpb251cGRh
dGVFdmVudCkKKyAgICAgICAgICAgIHx8IG4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS50cmFuc2Zvcm1hY3Rpb25lbmRFdmVudCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAg
UmVmUHRyPFRvdWNoTGlzdD4gdG91Y2hlcyA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CkBAIC0yNzY5
LDYgKzI3ODUsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKIAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAKKyNpZiBF
TkFCTEUoVFJBTlNGT1JNQUNUSU9OX0VWRU5UUykKKyAgICBWZWN0b3I8Y29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50Kj4gZ2VzdHVyZVRvdWNoUG9pbnRzOworICAgIGJvb2wgZ2VzdHVyZVRvdWNoUG9p
bnRPblRhcmdldCA9IGZhbHNlOworICAgIGJvb2wgZ2VzdHVyZVRvdWNoUG9pbnRSZWxlYXNlZCA9
IGZhbHNlOworI2VuZGlmCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQgPSBw
b2ludHNbaV07CiAgICAgICAgIEludFBvaW50IHBhZ2VQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JX
aW5kb3dQb2ludChtX2ZyYW1lLCBwb2ludC5wb3MoKSk7CkBAIC0yNzgyLDYgKzI4MDQsNDIgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiBldmVudCkKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHRhcmdldC0+ZG9jdW1lbnQoKTsK
ICAgICAgICAgaWYgKCFkb2MpCiAgICAgICAgICAgICBjb250aW51ZTsKKworI2lmIEVOQUJMRShU
UkFOU0ZPUk1BQ1RJT05fRVZFTlRTKQorICAgICAgICBpZiAoZG9jLT5oYXNMaXN0ZW5lclR5cGUo
RG9jdW1lbnQ6OlRSQU5TRk9STUFDVElPTl9MSVNURU5FUikpIHsKKyAgICAgICAgICAgIGlmIChw
b2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkCisgICAgICAg
ICAgICAgICAgJiYgbV9nZXN0dXJlVG91Y2hQb2ludElkcy5zaXplKCkgPCAyKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHMuc2l6ZSgpID09IDEpCisgICAgICAg
ICAgICAgICAgICAgIG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHMuYXBwZW5kKHBvaW50LmlkKCkpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBvaW50cy5zaXplKCkgPCAzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChoYXNUcmFuc2Zvcm1BY3Rpb25FdmVudExpc3RlbmVyKHRhcmdldCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fdHJhbnNmb3JtQWN0aW9uVGFyZ2V0ID0gdGFyZ2V0
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9nZXN0dXJlVG91Y2hQb2ludElkcy5hcHBlbmQo
cG9pbnQuaWQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgdHdv
IHRvdWNocG9pbnRzLCBhZGQgdGhlIG90aGVyIG9uZSB0b28KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwb2ludHMuc2l6ZSgpID09IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9nZXN0dXJlVG91Y2hQb2ludElkcy5hcHBlbmQocG9pbnRzWzEgLSBpXS5pZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKChtX2dlc3R1cmVUb3VjaFBvaW50SWRzLnNpemUoKSA+IDAgJiYgbV9nZXN0
dXJlVG91Y2hQb2ludElkc1swXSA9PSBwb2ludC5pZCgpKQorICAgICAgICAgICAgICAgIHx8ICht
X2dlc3R1cmVUb3VjaFBvaW50SWRzLnNpemUoKSA+IDEgJiYgbV9nZXN0dXJlVG91Y2hQb2ludElk
c1sxXSA9PSBwb2ludC5pZCgpKSkgeworICAgICAgICAgICAgICAgIGdlc3R1cmVUb3VjaFBvaW50
cy5hcHBlbmQoJnBvaW50KTsKKyAgICAgICAgICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQKKyAgICAgICAgICAgICAgICAgICAgfHwg
cG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChwb2ludC5pZCgpID09IG1fZ2VzdHVyZVRvdWNoUG9pbnRJ
ZHNbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHMu
cmVtb3ZlKDApOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VzdHVyZVRvdWNoUG9pbnRSZWxl
YXNlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9nZXN0dXJlVG91
Y2hQb2ludElkcy5zaXplKCkgPiAxICYmIHBvaW50LmlkKCkgPT0gbV9nZXN0dXJlVG91Y2hQb2lu
dElkc1sxXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9nZXN0dXJlVG91Y2hQb2ludElk
cy5yZW1vdmUoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnZXN0dXJlVG91Y2hQb2ludFJl
bGVhc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV90cmFuc2Zvcm1BY3Rpb25UYXJnZXQgPT0gdGFyZ2V0KQorICAgICAgICAgICAg
ICAgICAgICBnZXN0dXJlVG91Y2hQb2ludE9uVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShUUkFOU0ZPUk1BQ1RJT05fRVZFTlRTKQorCiAg
ICAgICAgIGlmICghZG9jLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlRPVUNIX0xJU1RFTkVS
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yOTE3LDYgKzI5NzUsNDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBl
dmVudCkKICAgICAgICAgZGVmYXVsdFByZXZlbnRlZCB8PSBtb3ZlRXYtPmRlZmF1bHRQcmV2ZW50
ZWQoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoVFJBTlNGT1JNQUNUSU9OX0VWRU5UUykKKyAgICBp
ZiAoZ2VzdHVyZVRvdWNoUG9pbnRzLnNpemUoKSA+IDAgJiYgbV90cmFuc2Zvcm1BY3Rpb25UYXJn
ZXQuZ2V0KCkpIHsKKyAgICAgICAgLy8gSWYgYSBnZXN0dXJlIHRvdWNocG9pbnQgd2FzIHJlbGVh
c2VkIGFuZCB0aGUgb3RoZXIgdG91Y2hwb2ludCBpcworICAgICAgICAvLyBub3Qgb24gdGhlIHRh
cmdldCwgZW5kIHRoZSBnZXN0dXJlCisgICAgICAgIGlmIChnZXN0dXJlVG91Y2hQb2ludFJlbGVh
c2VkICYmICFnZXN0dXJlVG91Y2hQb2ludE9uVGFyZ2V0KQorICAgICAgICAgICAgbV9nZXN0dXJl
VG91Y2hQb2ludElkcy5jbGVhcigpOworCisgICAgICAgIGV2ZW50TmFtZSA9ICZldmVudE5hbWVz
KCkudHJhbnNmb3JtYWN0aW9udXBkYXRlRXZlbnQ7CisgICAgICAgIGlmICghbV90cmFuc2Zvcm1B
Y3Rpb25BY3RpdmUpIHsKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9ICZldmVudE5hbWVzKCkudHJh
bnNmb3JtYWN0aW9uc3RhcnRFdmVudDsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtQWN0aW9uQWN0
aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fdG91Y2hHZXN0dXJlLnJlc2V0KCk7CisgICAgICAg
IH0gZWxzZSBpZiAobV9nZXN0dXJlVG91Y2hQb2ludElkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIGV2ZW50TmFtZSA9ICZldmVudE5hbWVzKCkudHJhbnNmb3JtYWN0aW9uZW5kRXZlbnQ7Cisg
ICAgICAgICAgICBtX3RyYW5zZm9ybUFjdGlvbkFjdGl2ZSA9IGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgbV90b3VjaEdlc3R1cmUudXBkYXRlVG91Y2hQb2ludHMoZ2VzdHVyZVRvdWNoUG9p
bnRzKTsKKworICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3RyYW5zZm9ybUFjdGlvblRh
cmdldC0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgICAgIEludFBvaW50IHBh
Z2VQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludCh0YXJnZXRGcmFtZSwgbV90b3Vj
aEdlc3R1cmUucG9zKCkpOworICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWCA9IGxyb3VuZGYocGFn
ZVBvaW50LngoKSAvIHBhZ2Vab29tRmFjdG9yKG1fZnJhbWUpKTsKKyAgICAgICAgaW50IGFkanVz
dGVkUGFnZVkgPSBscm91bmRmKHBhZ2VQb2ludC55KCkgLyBwYWdlWm9vbUZhY3RvcihtX2ZyYW1l
KSk7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1BY3Rpb25FdmVudD4gdHJhbnNmb3JtQWN0aW9u
RXYgPQorICAgICAgICAgICAgVHJhbnNmb3JtQWN0aW9uRXZlbnQ6OmNyZWF0ZSgqZXZlbnROYW1l
LCB0cnVlLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3RyYW5zZm9ybUFjdGlvblRhcmdldC0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG91Y2hHZXN0
dXJlLnNjcmVlblBvcygpLngoKSwgbV90b3VjaEdlc3R1cmUuc2NyZWVuUG9zKCkueSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VYLCBhZGp1
c3RlZFBhZ2VZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
dC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRh
S2V5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG91Y2hH
ZXN0dXJlLnRyYW5zbGF0ZVgoKSwgbV90b3VjaEdlc3R1cmUudHJhbnNsYXRlWSgpLCAwLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvdWNoR2VzdHVyZS5z
Y2FsZSgpLCAwLCBtX3RvdWNoR2VzdHVyZS5yb3RhdGUoKSwgMCk7CisgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgICAgICBtX3RyYW5zZm9ybUFjdGlvblRhcmdldC0+ZGlzcGF0Y2hF
dmVudCh0cmFuc2Zvcm1BY3Rpb25Fdi5nZXQoKSwgZWMpOworICAgICAgICBkZWZhdWx0UHJldmVu
dGVkIHw9IHRyYW5zZm9ybUFjdGlvbkV2LT5kZWZhdWx0UHJldmVudGVkKCk7CisKKyAgICAgICAg
Ly8gQ2xlYXIgdGhlIHRyYW5zZm9ybWFjdGlvbiB0YXJnZXQgaWYgdHJhbnNmb3JtYWN0aW9uIGlz
IG5vdCBhY3RpdmUgYW55bW9yZQorICAgICAgICBpZiAoIW1fdHJhbnNmb3JtQWN0aW9uQWN0aXZl
ICYmIG1fdHJhbnNmb3JtQWN0aW9uVGFyZ2V0LmdldCgpKQorICAgICAgICAgICAgbV90cmFuc2Zv
cm1BY3Rpb25UYXJnZXQuY2xlYXIoKTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKFRSQU5TRk9S
TUFDVElPTl9FVkVOVFMpCisKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCmluZGV4IDJmOTcyZmMuLjc2ODAyMWIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTQwLDYgKzQwLDEwIEBAIGNsYXNzIE5TVmlldzsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworI2lmIEVOQUJMRShUUkFOU0ZPUk1BQ1RJ
T05fRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoR2VzdHVyZUhhbmRsZXIuaCIKKyNlbmRpZgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzMCw2ICs0MzQsMTIgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0
cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdldE1hcDsKICAgICBUb3VjaFRhcmdldE1hcCBtX29y
aWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CisjaWYgRU5BQkxFKFRSQU5TRk9STUFDVElPTl9F
VkVOVFMpCisgICAgVG91Y2hHZXN0dXJlSGFuZGxlciBtX3RvdWNoR2VzdHVyZTsKKyAgICBWZWN0
b3I8aW50PiBtX2dlc3R1cmVUb3VjaFBvaW50SWRzOworICAgIFJlZlB0cjxFdmVudFRhcmdldD4g
bV90cmFuc2Zvcm1BY3Rpb25UYXJnZXQ7CisgICAgYm9vbCBtX3RyYW5zZm9ybUFjdGlvbkFjdGl2
ZTsKKyNlbmRpZgogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90cmFuc2Zvcm1hY3Rpb24vYmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2ZW50cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90cmFuc2Zvcm1hY3Rpb24vYmFzaWMtdHJh
bnNmb3JtYWN0aW9uLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZjI2YTNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RyYW5zZm9ybWFjdGlvbi9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcxIEBACitUaGlzIHRlc3RzIGJhc2ljIHRyYW5zZm9ybWFjdGlv
biBldmVudCBzdXBwb3J0LgordHJhbnNmb3JtYWN0aW9uIHNlcXVlbmNlIHdpdGggYSBzaW5nbGUg
dG91Y2hwb2ludAorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJhbnNmb3JtYWN0aW9uc3RhcnQi
CitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVYIGlzIE1hdGguZmxvb3IoMCkKK1BBU1MgbGFzdEV2
ZW50LnRyYW5zbGF0ZVkgaXMgTWF0aC5mbG9vcigwKQorUEFTUyBsYXN0RXZlbnQucm90YXRlIGlz
IGNsb3NlIHRvIDAKK1BBU1MgbGFzdEV2ZW50LnNjYWxlIGlzIGNsb3NlIHRvIDEKK1BBU1MgbGFz
dEV2ZW50LnNoaWZ0S2V5IGlzIGZhbHNlCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0cmFuc2Zv
cm1hY3Rpb251cGRhdGUiCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVYIGlzIE1hdGguZmxvb3Io
NSkKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVkgaXMgTWF0aC5mbG9vcigxMCkKK1BBU1MgbGFz
dEV2ZW50LnJvdGF0ZSBpcyBjbG9zZSB0byAwCitQQVNTIGxhc3RFdmVudC5zY2FsZSBpcyBjbG9z
ZSB0byAxCitQQVNTIGxhc3RFdmVudC5zaGlmdEtleSBpcyB0cnVlCitQQVNTIGxhc3RFdmVudC5h
bHRLZXkgaXMgdHJ1ZQorUEFTUyBsYXN0RXZlbnQuY3RybEtleSBpcyBmYWxzZQorUEFTUyBsYXN0
RXZlbnQubWV0YUtleSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJhbnNmb3Jt
YWN0aW9uZW5kIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29yKDUpCitQ
QVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMTApCitQQVNTIGxhc3RFdmVu
dC5yb3RhdGUgaXMgY2xvc2UgdG8gMAorUEFTUyBsYXN0RXZlbnQuc2NhbGUgaXMgY2xvc2UgdG8g
MQorUEFTUyBsYXN0RXZlbnQuc2hpZnRLZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50LmFsdEtl
eSBpcyBmYWxzZQordHJhbnNmb3JtYWN0aW9uIHNlcXVlbmNlIHdpdGggdHdvIHRvdWNocG9pbnRz
CitGaXJzdCB0b3VjaHBvaW50IHByZXNzZWQKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRyYW5z
Zm9ybWFjdGlvbnN0YXJ0IgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29y
KDApCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMCkKK1BBU1MgbGFz
dEV2ZW50LnJvdGF0ZSBpcyBjbG9zZSB0byAwCitQQVNTIGxhc3RFdmVudC5zY2FsZSBpcyBjbG9z
ZSB0byAxCitTZWNvbmQgdG91Y2hwb2ludCBwcmVzc2VkCitQQVNTIGxhc3RFdmVudC50eXBlIGlz
ICJ0cmFuc2Zvcm1hY3Rpb251cGRhdGUiCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVYIGlzIE1h
dGguZmxvb3IoMCkKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVkgaXMgTWF0aC5mbG9vcigwKQor
UEFTUyBsYXN0RXZlbnQucm90YXRlIGlzIGNsb3NlIHRvIDAKK1BBU1MgbGFzdEV2ZW50LnNjYWxl
IGlzIGNsb3NlIHRvIDEKK0ZpcnN0IHRvdWNocG9pbnQgdXBkYXRlZAorUEFTUyBsYXN0RXZlbnQu
dHlwZSBpcyAidHJhbnNmb3JtYWN0aW9udXBkYXRlIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRl
WCBpcyBNYXRoLmZsb29yKDIuNSkKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVkgaXMgTWF0aC5m
bG9vcigxMCkKK1BBU1MgbGFzdEV2ZW50LnJvdGF0ZSBpcyBjbG9zZSB0byAtMC4wNzExMDQ5OTQ2
NTI0MDIwNQorUEFTUyBsYXN0RXZlbnQuc2NhbGUgaXMgY2xvc2UgdG8gMC44NzEwMTI4MzkzNjM4
MjU4CitTZWNvbmQgdG91Y2hwb2ludCBpcyByZWxlYXNlZAorUEFTUyBsYXN0RXZlbnQudHlwZSBp
cyAidHJhbnNmb3JtYWN0aW9udXBkYXRlIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBN
YXRoLmZsb29yKDIuNSkKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVkgaXMgTWF0aC5mbG9vcigx
MCkKK1BBU1MgbGFzdEV2ZW50LnJvdGF0ZSBpcyBjbG9zZSB0byAtMC4wNzExMDQ5OTQ2NTI0MDIw
NQorUEFTUyBsYXN0RXZlbnQuc2NhbGUgaXMgY2xvc2UgdG8gMC44NzEwMTI4MzkzNjM4MjU4CitT
ZWNvbmQgdG91Y2hwb2ludCBwcmVzc2VkIGFnYWluCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0
cmFuc2Zvcm1hY3Rpb251cGRhdGUiCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVYIGlzIE1hdGgu
Zmxvb3IoMi41KQorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWSBpcyBNYXRoLmZsb29yKDEwKQor
UEFTUyBsYXN0RXZlbnQucm90YXRlIGlzIGNsb3NlIHRvIC0wLjA3MTEwNDk5NDY1MjQwMjA1CitQ
QVNTIGxhc3RFdmVudC5zY2FsZSBpcyBjbG9zZSB0byAwLjg3MTAxMjgzOTM2MzgyNTgKK0JvdGgg
dG91Y2ggcG9pbnRzIHVwZGF0ZQorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJhbnNmb3JtYWN0
aW9udXBkYXRlIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29yKC03LjUp
CitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMTApCitQQVNTIGxhc3RF
dmVudC5yb3RhdGUgaXMgY2xvc2UgdG8gLTAuMDcxMTA0OTk0NjUyNDAyMDUKK1BBU1MgbGFzdEV2
ZW50LnNjYWxlIGlzIGNsb3NlIHRvIDAuODcxMDEyODM5MzYzODI1OAorUmVsZWFzZSBib3RoIHRv
dWNoIHBvaW50cworUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJhbnNmb3JtYWN0aW9uZW5kIgor
UEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29yKC03LjUpCitQQVNTIGxhc3RF
dmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMTApCitQQVNTIGxhc3RFdmVudC5yb3RhdGUg
aXMgY2xvc2UgdG8gLTAuMDcxMTA0OTk0NjUyNDAyMDUKK1BBU1MgbGFzdEV2ZW50LnNjYWxlIGlz
IGNsb3NlIHRvIDAuODcxMDEyODM5MzYzODI1OAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RyYW5zZm9ybWFjdGlvbi9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90cmFuc2Zvcm1hY3Rpb24vYmFzaWMtdHJhbnNmb3JtYWN0
aW9uLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MGRm
YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90cmFuc2Zvcm1h
Y3Rpb24vYmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
YmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2ZW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90cmFuc2Zvcm1hY3Rp
b24vcmVzb3VyY2VzL2Jhc2ljLXRyYW5zZm9ybWFjdGlvbi1ldmVudHMuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90cmFuc2Zvcm1hY3Rpb24vcmVzb3VyY2VzL2Jhc2ljLXRyYW5zZm9ybWFj
dGlvbi1ldmVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU3YjJk
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RyYW5zZm9ybWFj
dGlvbi9yZXNvdXJjZXMvYmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2ZW50cy5qcwpAQCAtMCwwICsx
LDE3MCBAQAorZGVzY3JpcHRpb24gPSAiVGhpcyB0ZXN0cyBiYXNpYyB0cmFuc2Zvcm1hY3Rpb24g
ZXZlbnQgc3VwcG9ydC4iOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CitkaXYuaWQgPSAidG91Y2h0YXJnZXQiOworZGl2LnN0eWxlLndpZHRoID0gIjEwMHB4IjsK
K2Rpdi5zdHlsZS5oZWlnaHQgPSAiMTAwcHgiOworZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJibHVlIjsKKwordmFyIGxhc3RFdmVudCA9IG51bGw7CisKK2Z1bmN0aW9uIHNob3VsZEJlQ2xv
c2UoX2EsIF9iLCBfZXBzaWxvbikKK3sKKyAgICAvLyBMaWtlIHNob3VsZEJlLCBldmFsdWF0ZSBf
YSBhbmQgY29tcGFyZSBpdCB0byBfYi4gX2IgYW5kIF9lcHNpbG9uIHNob3VsZCBiZSBudW1iZXJz
IGFuZAorICAgIC8vIHRoZSByZXN1bHRpbmcgdmFsdWUgb2YgX2EgZXZhbHVhdGVkIHNob3VsZCBi
ZSB3aXRoaW4gX2Vwc2lsb24gZnJvbSBfYi4KKworICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmci
IHx8IHR5cGVvZiBfYiAhPSAibnVtYmVyIiB8fCB0eXBlb2YgX2Vwc2lsb24gIT0gIm51bWJlciIp
CisgICAgZGVidWcoIldBUk46IHNob3VsZEJlQ2xvc2UoKSBleHBlY3RzIGEgc3RyaW5nIGFuZCB0
d28gbnVtYmVycyBhcyBhcmd1bWVudHMiKTsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsK
KyAgdHJ5IHsKKyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhj
ZXB0aW9uID0gZTsKKyAgfQorCisgIGlmIChleGNlcHRpb24pCisgICAgdGVzdEZhaWxlZChfYSAr
ICIgc2hvdWxkIGJlIGNsb3NlIHRvICIgKyBfYiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhj
ZXB0aW9uKTsKKyAgZWxzZSBpZiAodHlwZW9mKF9hdikgIT0gIm51bWJlciIpCisgICAgdGVzdEZh
aWxlZChfYSArICIgc2hvdWxkIGJlIGEgbnVtYmVyLiBXYXMgIiArIHR5cGVvZihfYXYpKTsKKyAg
ZWxzZSBpZiAoTWF0aC5hYnMoX2F2IC0gX2IpIDwgX2Vwc2lsb24pCisgICAgdGVzdFBhc3NlZChf
YSArICIgaXMgY2xvc2UgdG8gIiArIF9iKTsKKyAgZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAi
IHNob3VsZCBiZSBjbG9zZSB0byAiICsgX2IgKyAiLiBXYXMgIiArIF9hdiArICIuIik7Cit9CisK
K2Z1bmN0aW9uIGFwcGVuZEV2ZW50TG9nKCkgeworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgbGFzdEV2ZW50ID0gZXZlbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVi
dWcoZXZlbnQudHlwZSk7CisgICAgfQorfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNm
b3JtYWN0aW9uc3RhcnQiLCBhcHBlbmRFdmVudExvZywgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlz
dGVuZXIoInRyYW5zZm9ybWFjdGlvbnVwZGF0ZSIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7Citk
aXYuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNmb3JtYWN0aW9uZW5kIiwgYXBwZW5kRXZlbnRMb2cs
IGZhbHNlKTsKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5m
aXJzdENoaWxkKTsKKworZnVuY3Rpb24gdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQodHlwZSwg
dHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgcm90YXRlLCBzY2FsZSkKK3sKKyAgICB2YXIgdG9sZXJh
bmNlID0gMC4wMDAwMDE7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50
eXBlIiwgdHlwZSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC50cmFuc2xhdGVYIiwgIk1hdGgu
Zmxvb3IoIiArIHRyYW5zbGF0ZVggKyAiKSIpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQudHJh
bnNsYXRlWSIsICJNYXRoLmZsb29yKCIgKyB0cmFuc2xhdGVZICsgIikiKTsKKyAgICBzaG91bGRC
ZUNsb3NlKCJsYXN0RXZlbnQucm90YXRlIiwgcm90YXRlLCB0b2xlcmFuY2UpOworICAgIHNob3Vs
ZEJlQ2xvc2UoImxhc3RFdmVudC5zY2FsZSIsIHNjYWxlLCB0b2xlcmFuY2UpOworfQorCitmdW5j
dGlvbiBzaW5nbGVUb3VjaFNlcXVlbmNlKCkKK3sKKyAgICBkZWJ1ZygidHJhbnNmb3JtYWN0aW9u
IHNlcXVlbmNlIHdpdGggYSBzaW5nbGUgdG91Y2hwb2ludCIpOworCisgICAgZXZlbnRTZW5kZXIu
YWRkVG91Y2hQb2ludCgxMCwgMTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKwor
ICAgIHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50KCJ0cmFuc2Zvcm1hY3Rpb25zdGFydCIsIDAs
IDAsIDAsIDEpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuc2hpZnRLZXkiLCAiZmFsc2UiKTsK
KworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgMTUsIDIwKTsKKyAgICBldmVu
dFNlbmRlci5zZXRUb3VjaE1vZGlmaWVyKCJzaGlmdCIsIHRydWUpOworICAgIGV2ZW50U2VuZGVy
LnNldFRvdWNoTW9kaWZpZXIoImFsdCIsIHRydWUpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92
ZSgpOworCisgICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQoInRyYW5zZm9ybWFjdGlvbnVw
ZGF0ZSIsIDUsIDEwLCAwLCAxKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LnNoaWZ0S2V5Iiwg
InRydWUiKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LmFsdEtleSIsICJ0cnVlIik7CisgICAg
c2hvdWxkQmUoImxhc3RFdmVudC5jdHJsS2V5IiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImxh
c3RFdmVudC5tZXRhS2V5IiwgImZhbHNlIik7CisKKyAgICBldmVudFNlbmRlci5zZXRUb3VjaE1v
ZGlmaWVyKCJzaGlmdCIsIGZhbHNlKTsKKyAgICBldmVudFNlbmRlci5zZXRUb3VjaE1vZGlmaWVy
KCJhbHQiLCBmYWxzZSk7CisKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsK
KyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworCisgICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9u
RXZlbnQoInRyYW5zZm9ybWFjdGlvbmVuZCIsIDUsIDEwLCAwLCAxKTsKKyAgICBzaG91bGRCZSgi
bGFzdEV2ZW50LnNoaWZ0S2V5IiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5h
bHRLZXkiLCAiZmFsc2UiKTsKK30KKworZnVuY3Rpb24gbXVsdGlUb3VjaFNlcXVlbmNlKCkKK3sK
KyAgICBkZWJ1ZygidHJhbnNmb3JtYWN0aW9uIHNlcXVlbmNlIHdpdGggdHdvIHRvdWNocG9pbnRz
Iik7CisKKyAgICBkZWJ1ZygiRmlyc3QgdG91Y2hwb2ludCBwcmVzc2VkIik7CisgICAgZXZlbnRT
ZW5kZXIuYWRkVG91Y2hQb2ludCgxMCwgMTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQo
KTsKKyAgICB2ZXJpZnl0cmFuc2Zvcm1hY3Rpb25FdmVudCgidHJhbnNmb3JtYWN0aW9uc3RhcnQi
LCAwLCAwLCAwLCAxKTsKKworICAgIGRlYnVnKCJTZWNvbmQgdG91Y2hwb2ludCBwcmVzc2VkIik7
CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCgxMDAsIDEyMCk7CisgICAgZXZlbnRTZW5k
ZXIudG91Y2hNb3ZlKCk7CisgICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQoInRyYW5zZm9y
bWFjdGlvbnVwZGF0ZSIsIDAsIDAsIDAsIDEpOworCisgICAgZGVidWcoIkZpcnN0IHRvdWNocG9p
bnQgdXBkYXRlZCIpOworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgMTUsIDMw
KTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKyAgICB2ZXJpZnl0cmFuc2Zvcm1hY3Rp
b25FdmVudCgidHJhbnNmb3JtYWN0aW9udXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKDE1LTEwMCkvMi0oMTAtMTAwKS8yLCAvLyB0cmFuc2xhdGVYCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICgzMC0xMjApLzItKDEwLTEyMCkvMiwgLy8gdHJhbnNsYXRlWQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRoLmF0YW4oKDMwLTEyMCkvKDE1LTEwMCkpIC0gTWF0aC5hdGFu
KCgxMC0xMjApLygxMC0xMDApKSwgLy8gcm90YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg
IE1hdGguc3FydCgoMTUtMTAwKSooMTUtMTAwKSsoMzAtMTIwKSooMzAtMTIwKSkgLyBNYXRoLnNx
cnQoKDEwLTEwMCkqKDEwLTEwMCkrKDEwLTEyMCkqKDEwLTEyMCkpKTsgLy8gc2NhbGUKKworICAg
IGRlYnVnKCJTZWNvbmQgdG91Y2hwb2ludCBpcyByZWxlYXNlZCIpOworICAgIGV2ZW50U2VuZGVy
LnJlbGVhc2VUb3VjaFBvaW50KDEpOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworICAg
IHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50KCJ0cmFuc2Zvcm1hY3Rpb251cGRhdGUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAoMTUtMTAwKS8yLSgxMC0xMDApLzIsIC8vIHRyYW5zbGF0
ZVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDMwLTEyMCkvMi0oMTAtMTIwKS8yLCAvLyB0
cmFuc2xhdGVZCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYXRhbigoMzAtMTIwKS8o
MTUtMTAwKSkgLSBNYXRoLmF0YW4oKDEwLTEyMCkvKDEwLTEwMCkpLCAvLyByb3RhdGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWF0aC5zcXJ0KCgxNS0xMDApKigxNS0xMDApKygzMC0xMjAp
KigzMC0xMjApKSAvIE1hdGguc3FydCgoMTAtMTAwKSooMTAtMTAwKSsoMTAtMTIwKSooMTAtMTIw
KSkpOyAvLyBzY2FsZQorCisgICAgZGVidWcoIlNlY29uZCB0b3VjaHBvaW50IHByZXNzZWQgYWdh
aW4iKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDIwMCwgMTApOworICAgIGV2ZW50
U2VuZGVyLnRvdWNoTW92ZSgpOworICAgIC8vIFNob3VsZCBzdGlsbCBoYXZlIHRoZSBzYW1lIHZh
bHVlcyBhcyBhYm92ZSwgYXMgdGhlIG1hbmlwdWxhdGlvbiBpcyBzdGlsbCBvbmdvaW5nIGFuZCBu
b3RoaW5nIGhhcyB1cGRhdGVkCisgICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQoInRyYW5z
Zm9ybWFjdGlvbnVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgxNS0xMDApLzIt
KDEwLTEwMCkvMiwgLy8gdHJhbnNsYXRlWAorICAgICAgICAgICAgICAgICAgICAgICAgICAoMzAt
MTIwKS8yLSgxMC0xMjApLzIsIC8vIHRyYW5zbGF0ZVkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5hdGFuKCgzMC0xMjApLygxNS0xMDApKSAtIE1hdGguYXRhbigoMTAtMTIwKS8oMTAt
MTAwKSksIC8vIHJvdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLnNxcnQoKDE1
LTEwMCkqKDE1LTEwMCkrKDMwLTEyMCkqKDMwLTEyMCkpIC8gTWF0aC5zcXJ0KCgxMC0xMDApKigx
MC0xMDApKygxMC0xMjApKigxMC0xMjApKSk7IC8vIHNjYWxlCisKKyAgICBkZWJ1ZygiQm90aCB0
b3VjaCBwb2ludHMgdXBkYXRlIik7CisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgw
LCA1LCAzMCk7CisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgxLCAxOTAsIDEwKTsK
KyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKyAgICB2ZXJpZnl0cmFuc2Zvcm1hY3Rpb25F
dmVudCgidHJhbnNmb3JtYWN0aW9udXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KDE1LTEwMCkvMi0oMTAtMTAwKS8yIC0gMTAsIC8vIHRyYW5zbGF0ZVgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDMwLTEyMCkvMi0oMTAtMTIwKS8yLCAvLyB0cmFuc2xhdGVZCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hdGguYXRhbigoMzAtMTIwKS8oMTUtMTAwKSkgLSBNYXRoLmF0
YW4oKDEwLTEyMCkvKDEwLTEwMCkpLCAvLyByb3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5zcXJ0KCgxNS0xMDApKigxNS0xMDApKygzMC0xMjApKigzMC0xMjApKSAvIE1hdGgu
c3FydCgoMTAtMTAwKSooMTAtMTAwKSsoMTAtMTIwKSooMTAtMTIwKSkpOyAvLyBzY2FsZQorCisg
ICAgZGVidWcoIlJlbGVhc2UgYm90aCB0b3VjaCBwb2ludHMiKTsKKyAgICBldmVudFNlbmRlci5y
ZWxlYXNlVG91Y2hQb2ludCgxKTsKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgw
KTsKKyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworICAgIHZlcmlmeXRyYW5zZm9ybWFjdGlv
bkV2ZW50KCJ0cmFuc2Zvcm1hY3Rpb25lbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAo
MTUtMTAwKS8yLSgxMC0xMDApLzIgLSAxMCwgLy8gdHJhbnNsYXRlWAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAoMzAtMTIwKS8yLSgxMC0xMjApLzIsIC8vIHRyYW5zbGF0ZVkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5hdGFuKCgzMC0xMjApLygxNS0xMDApKSAtIE1hdGguYXRh
bigoMTAtMTIwKS8oMTAtMTAwKSksIC8vIHJvdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRoLnNxcnQoKDE1LTEwMCkqKDE1LTEwMCkrKDMwLTEyMCkqKDMwLTEyMCkpIC8gTWF0aC5z
cXJ0KCgxMC0xMDApKigxMC0xMDApKygxMC0xMjApKigxMC0xMjApKSk7IC8vIHNjYWxlCit9CisK
K2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBkZWJ1ZyhkZXNjcmlwdGlvbik7CisKKyAg
ICBsYXN0RXZlbnQgPSBudWxsOworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsK
KyAgICBzaW5nbGVUb3VjaFNlcXVlbmNlKCk7CisKKyAgICBsYXN0RXZlbnQgPSBudWxsOworICAg
IGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBtdWx0aVRvdWNoU2VxdWVuY2Uo
KTsKKworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJU
cmVlLiAgVGFwIG9uIHRoZSBibHVlIHJlY3QgdG8gbG9nLiIpCit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1RvdWNoR2VzdHVyZUhh
bmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL1RvdWNoR2VzdHVyZUhhbmRsZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ODAxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3BhZ2UvVG91Y2hHZXN0dXJlSGFuZGxlci5jcHAKQEAgLTAsMCArMSwxNDUgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUb3VjaEdl
c3R1cmVIYW5kbGVyLmgiCisKKyNpbmNsdWRlIDxtYXRoLmg+CisKKyNpZm5kZWYgTV9QSQorI2Rl
ZmluZSBNX1BJIDMuMTQxNTkyNjUzNgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VG91Y2hHZXN0dXJlSGFuZGxlcjo6VG91Y2hHZXN0dXJlSGFuZGxlcigpCit7CisgICAgcmVzZXQo
KTsKK30KKwordm9pZCBUb3VjaEdlc3R1cmVIYW5kbGVyOjp1cGRhdGVSZWZyZXNoTmVlZGVkU3Rh
dGUoY29uc3QgVmVjdG9yPGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCo+JiB0b3VjaFBvaW50cykK
K3sKKyAgICAvLyBOdW1iZXIgb2YgdG91Y2hwb2ludHMgY2hhbmdlZAorICAgIGlmICh0b3VjaFBv
aW50cy5zaXplKCkgIT0gbV9wcmV2U2l6ZSkKKyAgICAgICAgbV9yZWZyZXNoTmVlZGVkID0gdHJ1
ZTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgLy8gVG91Y2hwb2ludHMgaW4gcHJlc3NlZCBzdGF0
ZSBvciBpZHMgbWlzbWF0Y2gKKyAgICAgICAgICAgIGlmICh0b3VjaFBvaW50c1tpXS0+c3RhdGUo
KSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZAorICAgICAgICAgICAgICAgIHx8
IHRvdWNoUG9pbnRzW2ldLT5pZCgpICE9IG1fcHJldklkc1tpXSkgbV9yZWZyZXNoTmVlZGVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcHJldlNpemUgPSB0b3VjaFBvaW50cy5z
aXplKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkK
KyAgICAgICAgbV9wcmV2SWRzW2ldID0gdG91Y2hQb2ludHNbaV0tPmlkKCk7Cit9CisKK3ZvaWQg
VG91Y2hHZXN0dXJlSGFuZGxlcjo6dXBkYXRlVG91Y2hQb2ludHMoY29uc3QgVmVjdG9yPGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCo+JiB0b3VjaFBvaW50cykKK3sKKyAgICBpZiAodG91Y2hQb2lu
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVSZWZyZXNoTmVlZGVk
U3RhdGUodG91Y2hQb2ludHMpOworCisgICAgaWYgKG1fcmVmcmVzaE5lZWRlZCkgeworICAgICAg
ICBtX3BvcyA9IGNhbGNQb3ModG91Y2hQb2ludHMpOworICAgICAgICBJbnRTaXplIGNsaWVudE9m
ZnNldCA9IHRvdWNoUG9pbnRzWzBdLT5zY3JlZW5Qb3MoKSAtIHRvdWNoUG9pbnRzWzBdLT5wb3Mo
KTsKKyAgICAgICAgbV9zY3JlZW5Qb3MgPSBtX3BvcyArIGNsaWVudE9mZnNldDsKKworICAgICAg
ICBpZiAodG91Y2hQb2ludHMuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgbV9wcmV2QW5nbGUg
PSBjYWxjQW5nbGUodG91Y2hQb2ludHNbMF0tPnBvcygpLCB0b3VjaFBvaW50c1sxXS0+cG9zKCkp
OworICAgICAgICAgICAgbV9wcmV2RGlzdGFuY2UgPSBjYWxjRGlzdGFuY2UodG91Y2hQb2ludHNb
MF0tPnBvcygpLCB0b3VjaFBvaW50c1sxXS0+cG9zKCkpOworICAgICAgICB9CisgICAgICAgIG1f
cmVmcmVzaE5lZWRlZCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
UGFuCisgICAgSW50UG9pbnQgbmV4dFBvcyA9IGNhbGNQb3ModG91Y2hQb2ludHMpOworICAgIG1f
dHJhbnNsYXRlWCArPSAobmV4dFBvcy54KCkgLSBtX3Bvcy54KCkpOworICAgIG1fdHJhbnNsYXRl
WSArPSAobmV4dFBvcy55KCkgLSBtX3Bvcy55KCkpOworICAgIG1fcG9zID0gbmV4dFBvczsKKyAg
ICBJbnRTaXplIGNsaWVudE9mZnNldCA9IHRvdWNoUG9pbnRzWzBdLT5zY3JlZW5Qb3MoKSAtIHRv
dWNoUG9pbnRzWzBdLT5wb3MoKTsKKyAgICBtX3NjcmVlblBvcyA9IG1fcG9zICsgY2xpZW50T2Zm
c2V0OworCisgICAgaWYgKHRvdWNoUG9pbnRzLnNpemUoKSA+IDEpIHsKKyAgICAgICAgLy8gUm90
YXRlCisgICAgICAgIGZsb2F0IGFuZ2xlID0gY2FsY0FuZ2xlKHRvdWNoUG9pbnRzWzBdLT5wb3Mo
KSwgdG91Y2hQb2ludHNbMV0tPnBvcygpKTsKKyAgICAgICAgbV9yb3RhdGUgKz0gZGlmZkFuZ2xl
KG1fcHJldkFuZ2xlLCBhbmdsZSk7CisgICAgICAgIG1fcHJldkFuZ2xlID0gYW5nbGU7CisKKyAg
ICAgICAgLy8gUGluY2gKKyAgICAgICAgZmxvYXQgZGlzdGFuY2UgPSBjYWxjRGlzdGFuY2UodG91
Y2hQb2ludHNbMF0tPnBvcygpLCB0b3VjaFBvaW50c1sxXS0+cG9zKCkpOworICAgICAgICBmbG9h
dCBuZXh0U2NhbGUgPSBtX3NjYWxlICogKGRpc3RhbmNlIC8gKG1fcHJldkRpc3RhbmNlID8gbV9w
cmV2RGlzdGFuY2UgOiAwLjAwMDFmKSk7CisgICAgICAgIG1fc2NhbGUgPSBuZXh0U2NhbGU7Cisg
ICAgICAgIG1fcHJldkRpc3RhbmNlID0gZGlzdGFuY2U7CisgICAgfQorfQorCit2b2lkIFRvdWNo
R2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAgICBtX3JlZnJlc2hOZWVkZWQgPSB0cnVlOwor
ICAgIG1fc2NhbGUgPSAxLjA7CisgICAgbV9yb3RhdGUgPSAwOworICAgIG1fdHJhbnNsYXRlWCA9
IDA7CisgICAgbV90cmFuc2xhdGVZID0gMDsKKyAgICBtX3BvcyA9IEludFBvaW50KDAsIDApOwor
ICAgIG1fc2NyZWVuUG9zID0gSW50UG9pbnQoMCwgMCk7CisgICAgbV9wcmV2U2l6ZSA9IDA7Cit9
CisKK2Zsb2F0IFRvdWNoR2VzdHVyZUhhbmRsZXI6OmNhbGNBbmdsZShjb25zdCBJbnRQb2ludCYg
cDEsIGNvbnN0IEludFBvaW50JiBwMikgY29uc3QKK3sKKyAgICBmbG9hdCBkZWx0YVggPSBwMS54
KCkgLSBwMi54KCk7CisgICAgZmxvYXQgZGVsdGFZID0gcDEueSgpIC0gcDIueSgpOworICAgIHJl
dHVybiBhdGFuMihkZWx0YVksIGRlbHRhWCk7Cit9CisKK2Zsb2F0IFRvdWNoR2VzdHVyZUhhbmRs
ZXI6OmRpZmZBbmdsZShmbG9hdCBhbHBoYSwgZmxvYXQgYmV0YSkgY29uc3QKK3sKKyAgICBmbG9h
dCBiZXR3ZWVuID0gYmV0YSAtIGFscGhhOworCisgICAgaWYgKGJldHdlZW4gPiBNX1BJKQorICAg
ICAgICBiZXR3ZWVuIC09IDIgKiBNX1BJOworICAgIGVsc2UgaWYgKGJldHdlZW4gPCAtTV9QSSkK
KyAgICAgICAgYmV0d2VlbiArPSAyICogTV9QSTsKKworICAgIHJldHVybiBiZXR3ZWVuOworfQor
CitJbnRQb2ludCBUb3VjaEdlc3R1cmVIYW5kbGVyOjpjYWxjUG9zKGNvbnN0IFZlY3Rvcjxjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQqPiYgdG91Y2hQb2ludHMpIGNvbnN0Cit7CisgICAgaWYgKHRv
dWNoUG9pbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gdG91Y2hQb2ludHNbMF0tPnBv
cygpOworCisgICAgSW50UG9pbnQgcG9zOworICAgIHBvcy5zZXRYKCh0b3VjaFBvaW50c1swXS0+
cG9zKCkueCgpICsgdG91Y2hQb2ludHNbMV0tPnBvcygpLngoKSkgLyAyKTsKKyAgICBwb3Muc2V0
WSgodG91Y2hQb2ludHNbMF0tPnBvcygpLnkoKSArIHRvdWNoUG9pbnRzWzFdLT5wb3MoKS55KCkp
IC8gMik7CisgICAgcmV0dXJuIHBvczsKK30KKworZmxvYXQgVG91Y2hHZXN0dXJlSGFuZGxlcjo6
Y2FsY0Rpc3RhbmNlKGNvbnN0IEludFBvaW50JiBwMSwgY29uc3QgSW50UG9pbnQmIHAyKSBjb25z
dAoreworICAgIGZsb2F0IGR4ID0gcDEueCgpIC0gcDIueCgpOworICAgIGZsb2F0IGR5ID0gcDEu
eSgpIC0gcDIueSgpOworICAgIHJldHVybiBzcXJ0KGR4ICogZHggKyBkeSAqIGR5KTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1RvdWNoR2VzdHVyZUhhbmRsZXIuaCBiL1dlYkNv
cmUvcGFnZS9Ub3VjaEdlc3R1cmVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmM3NThkMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9Ub3VjaEdl
c3R1cmVIYW5kbGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBUb3VjaEdlc3R1cmVIYW5kbGVyX2gKKyNkZWZpbmUgVG91Y2hHZXN0dXJlSGFuZGxlcl9o
CisKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBUb3VjaEdlc3R1cmVIYW5kbGVyIHsKKworcHVibGljOgorICAgIFRvdWNoR2Vz
dHVyZUhhbmRsZXIoKTsKKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNo
UG9pbnRzKGNvbnN0IFZlY3Rvcjxjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQqPiYgdG91Y2hQb2lu
dHMpOworCisgICAgaW50IHRyYW5zbGF0ZVgoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zbGF0ZVg7
IH0KKyAgICBpbnQgdHJhbnNsYXRlWSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNsYXRlWTsgfQor
ICAgIGNvbnN0IEludFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBtX3BvczsgfQorICAgIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Qb3MoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblBvczsgfQor
ICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQorICAgIGZsb2F0IHJv
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRlOyB9CisKK3ByaXZhdGU6CisgICAgZmxvYXQg
Y2FsY0FuZ2xlKGNvbnN0IEludFBvaW50JiBwMSwgY29uc3QgSW50UG9pbnQmIHAyKSBjb25zdDsK
KyAgICBmbG9hdCBkaWZmQW5nbGUoZmxvYXQgYWxwaGEsIGZsb2F0IGJldGEpIGNvbnN0OworICAg
IEludFBvaW50IGNhbGNQb3MoY29uc3QgVmVjdG9yPGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCo+
JiB0b3VjaFBvaW50cykgY29uc3Q7CisgICAgZmxvYXQgY2FsY0Rpc3RhbmNlKGNvbnN0IEludFBv
aW50JiBwMSwgY29uc3QgSW50UG9pbnQmIHAyKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVJlZnJl
c2hOZWVkZWRTdGF0ZShjb25zdCBWZWN0b3I8Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Kj4mIHRv
dWNoUG9pbnRzKTsKKworICAgIGJvb2wgbV9yZWZyZXNoTmVlZGVkOworICAgIGludCBtX3RyYW5z
bGF0ZVg7CisgICAgaW50IG1fdHJhbnNsYXRlWTsKKyAgICBmbG9hdCBtX3NjYWxlOworICAgIGZs
b2F0IG1fcm90YXRlOworICAgIEludFBvaW50IG1fcG9zOworICAgIEludFBvaW50IG1fc2NyZWVu
UG9zOworICAgIGZsb2F0IG1fcHJldkFuZ2xlOworICAgIGludCBtX3ByZXZTaXplOworICAgIGlu
dCBtX3ByZXZJZHNbMl07CisgICAgZmxvYXQgbV9wcmV2RGlzdGFuY2U7Cit9OworCit9CisKKyNl
bmRpZiAvLyBUb3VjaEdlc3R1cmVIYW5kbGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58982</attachid>
            <date>2010-06-17 05:16:24 -0700</date>
            <delta_ts>2010-08-26 04:41:26 -0700</delta_ts>
            <desc>Generate TransformAction events from touch gestures</desc>
            <filename>gesturesupport3.patch</filename>
            <type>text/plain</type>
            <size>28216</size>
            <attacher name="Kim Grönholm">kim.1.gronholm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2U0NTQ0Li5mNmUwOTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYt
MTcgIEtpbSBHcsO2bmhvbG0gIDxraW0uMS5ncm9uaG9sbUBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgVHJhbnNmb3Jt
QWN0aW9uIGV2ZW50cyBmcm9tIHRvdWNoIGdlc3R1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk3OQorCisgICAgICAgIFRlc3RzIGJhc2ljIHNp
bmdsZS0gYW5kIG11bHRpLXRvdWNoIHNlcXVlbmNlcyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKKyAg
ICAgICAgVHJhbnNmb3JtQWN0aW9uIGV2ZW50cyB0aGF0IGFyZSBnZW5lcmF0ZWQuCisKKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90cmFuc2Zvcm1hY3Rpb24vYmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2
ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RyYW5zZm9y
bWFjdGlvbi9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL3RyYW5zZm9ybWFjdGlvbi9yZXNvdXJjZXMvYmFzaWMtdHJhbnNmb3Jt
YWN0aW9uLWV2ZW50cy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZUNsb3NlKToKKyAgICAg
ICAgKGFwcGVuZEV2ZW50TG9nKToKKyAgICAgICAgKHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50
KToKKyAgICAgICAgKHNpbmdsZVRvdWNoU2VxdWVuY2UpOgorICAgICAgICAobXVsdGlUb3VjaFNl
cXVlbmNlKToKKwogMjAxMC0wNi0xNiAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MDg0MGY4Li43Yzk1MzQ4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQyIEBACisyMDEwLTA2LTE3ICBLaW0gR3LDtm5ob2xtICA8a2ltLjEuZ3JvbmhvbG1A
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIFRyYW5zZm9ybUFjdGlvbiBldmVudHMgZnJvbSB0b3VjaCBnZXN0dXJlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NzkKKwor
ICAgICAgICBFbmFibGluZyB0cmFuc2Zvcm1hY3Rpb24gZXZlbnRzIHRvIGJlIGdlbmVyYXRlZCBm
cm9tIG11bHRpLXRvdWNoCisgICAgICAgIGdlc3R1cmVzIGJ5IGFkZGluZyBnZXN0dXJlIGhhbmRs
aW5nIG1hY2hpbmVyeSBhbmQgZXZlbnRoYW5kbGVyIGhvb2tzLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZXZlbnRzL3RyYW5zZm9ybWFjdGlvbi9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLmh0
bWwKKyAgICAgICAgVGVzdHMgYmFzaWMgc2luZ2xlLSBhbmQgbXVsdGktdG91Y2ggc2VxdWVuY2Vz
IGFuZCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBUcmFuc2Zvcm1BY3Rpb24gZXZlbnRzIHRo
YXQgYXJlIGdlbmVyYXRlZC4KKworICAgICAgICBBIG1hbnVhbCB0ZXN0IGNhbiBiZSBmb3VuZCBm
cm9tOgorICAgICAgICBodHRwczovL2J1Zy0zOTc1Ny1hdHRhY2htZW50cy53ZWJraXQub3JnL2F0
dGFjaG1lbnQuY2dpP2lkPTU3MjI2CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNUcmFuc2Zvcm1B
Y3Rpb25FdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAg
KiBwYWdlL1RvdWNoR2VzdHVyZUhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRvdWNoR2VzdHVyZUhhbmRsZXI6OlRvdWNoR2VzdHVyZUhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VG91Y2hHZXN0dXJlSGFuZGxlcjo6dXBkYXRlUmVmcmVzaE5lZWRlZFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OnVwZGF0ZVRvdWNoUG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OmNhbGNBbmdsZSk6CisgICAgICAgIChXZWJD
b3JlOjpUb3VjaEdlc3R1cmVIYW5kbGVyOjpkaWZmQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6
VG91Y2hHZXN0dXJlSGFuZGxlcjo6Y2FsY1Bvcyk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEdl
c3R1cmVIYW5kbGVyOjpjYWxjRGlzdGFuY2UpOgorICAgICAgICAqIHBhZ2UvVG91Y2hHZXN0dXJl
SGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6
OnRyYW5zbGF0ZVgpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hHZXN0dXJlSGFuZGxlcjo6dHJh
bnNsYXRlWSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEdlc3R1cmVIYW5kbGVyOjpwb3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VG91Y2hHZXN0dXJlSGFuZGxlcjo6c2NyZWVuUG9zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRvdWNoR2VzdHVyZUhhbmRsZXI6OnJvdGF0ZSk6CisKIDIwMTAtMDYtMTYgIERhd2l0IEFs
ZW1heWVodSAgPGFkYXdpdEBrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KaW5kZXggMDM4YzEwOC4uZDJhZDA0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yOTc1LDYgKzI5NzUsMTEgQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1NZTUJJQU5fRElBTE9HX1BST1ZJREVSUykgewogICAgIH0K
IH0KIAorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1RSQU5TRk9STUFDVElPTl9FVkVOVFM9MSkg
eworICAgIEhFQURFUlMgKz0gcGFnZS9Ub3VjaEdlc3R1cmVIYW5kbGVyLmgKKyAgICBTT1VSQ0VT
ICs9IHBhZ2UvVG91Y2hHZXN0dXJlSGFuZGxlci5jcHAKK30KKwogaW5jbHVkZSgkJFBXRC8uLi9X
ZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpKQogSEVBREVSUyArPSAkJFdFQktJVF9BUElfSEVBREVS
UwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGMwMmMwZGIuLmQ0OWJkMzQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC04NCw2ICs4NCwxMCBAQAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAj
aW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgor
CisjaWYgRU5BQkxFKFRSQU5TRk9STUFDVElPTl9FVkVOVFMpCisjaW5jbHVkZSAiVHJhbnNmb3Jt
QWN0aW9uRXZlbnQuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTI3MzAsNyArMjczNCw2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVMYXN0U2Nyb2xsYmFy
VW5kZXJNb3VzZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBzZXRMCiB9CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotCiBzdGF0aWMgUGFzc1JlZlB0cjxUb3VjaExpc3Q+IGFzc2VtYmxl
VGFyZ2V0VG91Y2hlcyhUb3VjaCogdG91Y2hUYXJnZXQsIFRvdWNoTGlzdCogdG91Y2hlcykKIHsK
ICAgICBSZWZQdHI8VG91Y2hMaXN0PiB0YXJnZXRUb3VjaGVzID0gVG91Y2hMaXN0OjpjcmVhdGUo
KTsKQEAgLTI3NDksNiArMjc1MiwxOSBAQCBzdGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3IoRnJh
bWUqIGZyYW1lKQogICAgIHJldHVybiB2aWV3ID8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSA6IDEu
MGY7CiB9CiAKKyNpZiBFTkFCTEUoVFJBTlNGT1JNQUNUSU9OX0VWRU5UUykKK3N0YXRpYyBib29s
IGhhc1RyYW5zZm9ybUFjdGlvbkV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0KQoreworICAgIGZv
ciAoTm9kZSogbiA9IHRhcmdldDsgbjsgbiA9IG4tPmV2ZW50UGFyZW50Tm9kZSgpKSB7CisgICAg
ICAgIGlmIChuLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudHJhbnNmb3JtYWN0aW9u
c3RhcnRFdmVudCkKKyAgICAgICAgICAgIHx8IG4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS50cmFuc2Zvcm1hY3Rpb251cGRhdGVFdmVudCkKKyAgICAgICAgICAgIHx8IG4tPmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50cmFuc2Zvcm1hY3Rpb25lbmRFdmVudCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAgUmVmUHRyPFRvdWNoTGlzdD4gdG91Y2hlcyA9IFRvdWNo
TGlzdDo6Y3JlYXRlKCk7CkBAIC0yNzYyLDYgKzI3NzgsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKIAogICAg
IFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3Np
bmdVc2VyR2VzdHVyZSk7CiAKKyNpZiBFTkFCTEUoVFJBTlNGT1JNQUNUSU9OX0VWRU5UUykKKyAg
ICBWZWN0b3I8Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Kj4gZ2VzdHVyZVRvdWNoUG9pbnRzOwor
I2VuZGlmCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQgPSBwb2ludHNbaV07
CiAgICAgICAgIEludFBvaW50IHBhZ2VQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2lu
dChtX2ZyYW1lLCBwb2ludC5wb3MoKSk7CkBAIC0yNzc1LDYgKzI3OTUsMzggQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVu
dCkKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHRhcmdldC0+ZG9jdW1lbnQoKTsKICAgICAgICAg
aWYgKCFkb2MpCiAgICAgICAgICAgICBjb250aW51ZTsKKworI2lmIEVOQUJMRShUUkFOU0ZPUk1B
Q1RJT05fRVZFTlRTKQorICAgICAgICBpZiAoZG9jLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6
OlRSQU5TRk9STUFDVElPTl9MSVNURU5FUikpIHsKKyAgICAgICAgICAgIGlmIChwb2ludC5zdGF0
ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkCisgICAgICAgICAgICAgICAg
JiYgbV9nZXN0dXJlVG91Y2hQb2ludElkcy5zaXplKCkgPCAyKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICAgICAg
ICAgIG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHMuYXBwZW5kKHBvaW50LmlkKCkpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHBvaW50cy5zaXplKCkgPCAzKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChoYXNUcmFuc2Zvcm1BY3Rpb25FdmVudExpc3RlbmVyKHRhcmdldCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdHJhbnNmb3JtQWN0aW9uVGFyZ2V0ID0gdGFyZ2V0OworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9nZXN0dXJlVG91Y2hQb2ludElkcy5hcHBlbmQocG9pbnQuaWQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgdHdvIHRvdWNocG9p
bnRzLCBhZGQgdGhlIG90aGVyIG9uZSB0b28KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw
b2ludHMuc2l6ZSgpID09IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9nZXN0dXJl
VG91Y2hQb2ludElkcy5hcHBlbmQocG9pbnRzWzEgLSBpXS5pZCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKChtX2dlc3R1cmVUb3VjaFBvaW50SWRzLnNpemUoKSA+IDAgJiYgbV9nZXN0dXJlVG91Y2hQ
b2ludElkc1swXSA9PSBwb2ludC5pZCgpKQorICAgICAgICAgICAgICAgIHx8IChtX2dlc3R1cmVU
b3VjaFBvaW50SWRzLnNpemUoKSA+IDEgJiYgbV9nZXN0dXJlVG91Y2hQb2ludElkc1sxXSA9PSBw
b2ludC5pZCgpKSkgeworICAgICAgICAgICAgICAgIGdlc3R1cmVUb3VjaFBvaW50cy5hcHBlbmQo
JnBvaW50KTsKKyAgICAgICAgICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQKKyAgICAgICAgICAgICAgICAgICAgfHwgcG9pbnQuc3Rh
dGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwb2ludC5pZCgpID09IG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHNbMF0pCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dlc3R1cmVUb3VjaFBvaW50SWRzLnJlbW92ZSgwKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9nZXN0
dXJlVG91Y2hQb2ludElkcy5yZW1vdmUoMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKFRSQU5TRk9STUFDVElPTl9FVkVOVFMp
CisKICAgICAgICAgaWYgKCFkb2MtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6VE9VQ0hfTElT
VEVORVIpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI5MTAsNiArMjk2Miw0MiBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZl
bnQmIGV2ZW50KQogICAgICAgICBkZWZhdWx0UHJldmVudGVkIHw9IG1vdmVFdi0+ZGVmYXVsdFBy
ZXZlbnRlZCgpOwogICAgIH0KIAorI2lmIEVOQUJMRShUUkFOU0ZPUk1BQ1RJT05fRVZFTlRTKQor
ICAgIGlmIChnZXN0dXJlVG91Y2hQb2ludHMuc2l6ZSgpID4gMCAmJiBtX3RyYW5zZm9ybUFjdGlv
blRhcmdldC5nZXQoKSkgeworICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRyYW5z
Zm9ybWFjdGlvbnVwZGF0ZUV2ZW50OworICAgICAgICBpZiAoIW1fdHJhbnNmb3JtQWN0aW9uQWN0
aXZlKSB7CisgICAgICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRyYW5zZm9ybWFj
dGlvbnN0YXJ0RXZlbnQ7CisgICAgICAgICAgICBtX3RyYW5zZm9ybUFjdGlvbkFjdGl2ZSA9IHRy
dWU7CisgICAgICAgICAgICBtX3RvdWNoR2VzdHVyZS5yZXNldCgpOworICAgICAgICB9IGVsc2Ug
aWYgKG1fZ2VzdHVyZVRvdWNoUG9pbnRJZHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBldmVu
dE5hbWUgPSAmZXZlbnROYW1lcygpLnRyYW5zZm9ybWFjdGlvbmVuZEV2ZW50OworICAgICAgICAg
ICAgbV90cmFuc2Zvcm1BY3Rpb25BY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IG1fdG91Y2hHZXN0dXJlLnVwZGF0ZVRvdWNoUG9pbnRzKGdlc3R1cmVUb3VjaFBvaW50cyk7CisK
KyAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gbV90cmFuc2Zvcm1BY3Rpb25UYXJnZXQtPnRv
Tm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgICAgICBJbnRQb2ludCBwYWdlUG9pbnQg
PSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQodGFyZ2V0RnJhbWUsIG1fdG91Y2hHZXN0dXJl
LnBvcygpKTsKKyAgICAgICAgaW50IGFkanVzdGVkUGFnZVggPSBscm91bmRmKHBhZ2VQb2ludC54
KCkgLyBwYWdlWm9vbUZhY3RvcihtX2ZyYW1lKSk7CisgICAgICAgIGludCBhZGp1c3RlZFBhZ2VZ
ID0gbHJvdW5kZihwYWdlUG9pbnQueSgpIC8gcGFnZVpvb21GYWN0b3IobV9mcmFtZSkpOworICAg
ICAgICBSZWZQdHI8VHJhbnNmb3JtQWN0aW9uRXZlbnQ+IHRyYW5zZm9ybUFjdGlvbkV2ID0KKyAg
ICAgICAgICAgIFRyYW5zZm9ybUFjdGlvbkV2ZW50OjpjcmVhdGUoKmV2ZW50TmFtZSwgdHJ1ZSwg
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90cmFuc2Zv
cm1BY3Rpb25UYXJnZXQtPnRvTm9kZSgpLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvdWNoR2VzdHVyZS5zY3Jl
ZW5Qb3MoKS54KCksIG1fdG91Y2hHZXN0dXJlLnNjcmVlblBvcygpLnkoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdlWCwgYWRqdXN0ZWRQYWdl
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3RybEtl
eSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvdWNoR2VzdHVyZS50
cmFuc2xhdGVYKCksIG1fdG91Y2hHZXN0dXJlLnRyYW5zbGF0ZVkoKSwgMCwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90b3VjaEdlc3R1cmUuc2NhbGUoKSwg
MS4wZiwgbV90b3VjaEdlc3R1cmUucm90YXRlKCksIDApOworICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICAgICAgbV90cmFuc2Zvcm1BY3Rpb25UYXJnZXQtPmRpc3BhdGNoRXZlbnQo
dHJhbnNmb3JtQWN0aW9uRXYuZ2V0KCksIGVjKTsKKyAgICAgICAgZGVmYXVsdFByZXZlbnRlZCB8
PSB0cmFuc2Zvcm1BY3Rpb25Fdi0+ZGVmYXVsdFByZXZlbnRlZCgpOworCisgICAgICAgIC8vIENs
ZWFyIHRoZSB0cmFuc2Zvcm1hY3Rpb24gdGFyZ2V0IGlmIHRyYW5zZm9ybWFjdGlvbiBpcyBub3Qg
YWN0aXZlIGFueW1vcmUKKyAgICAgICAgaWYgKCFtX3RyYW5zZm9ybUFjdGlvbkFjdGl2ZSAmJiBt
X3RyYW5zZm9ybUFjdGlvblRhcmdldC5nZXQoKSkKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtQWN0
aW9uVGFyZ2V0LmNsZWFyKCk7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShUUkFOU0ZPUk1BQ1RJ
T05fRVZFTlRTKQorCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCAyZjk3MmZjLi43NjgwMjFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC00
MCw2ICs0MCwxMCBAQCBjbGFzcyBOU1ZpZXc7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKKyNpZiBFTkFCTEUoVFJBTlNGT1JNQUNUSU9OX0VW
RU5UUykKKyNpbmNsdWRlICJUb3VjaEdlc3R1cmVIYW5kbGVyLmgiCisjZW5kaWYKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MzAsNiArNDM0LDEyIEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8RXZl
bnRUYXJnZXQ+ID4gVG91Y2hUYXJnZXRNYXA7CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5h
dGluZ1RvdWNoUG9pbnRUYXJnZXRzOworI2lmIEVOQUJMRShUUkFOU0ZPUk1BQ1RJT05fRVZFTlRT
KQorICAgIFRvdWNoR2VzdHVyZUhhbmRsZXIgbV90b3VjaEdlc3R1cmU7CisgICAgVmVjdG9yPGlu
dD4gbV9nZXN0dXJlVG91Y2hQb2ludElkczsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdHJh
bnNmb3JtQWN0aW9uVGFyZ2V0OworICAgIGJvb2wgbV90cmFuc2Zvcm1BY3Rpb25BY3RpdmU7Cisj
ZW5kaWYKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dHJhbnNmb3JtYWN0aW9uL2Jhc2ljLXRyYW5zZm9ybWFjdGlvbi1ldmVudHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdHJhbnNmb3JtYWN0aW9uL2Jhc2ljLXRyYW5zZm9y
bWFjdGlvbi1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmYyNmEzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90cmFuc2Zvcm1hY3Rpb24vYmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2ZW50cy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3MSBAQAorVGhpcyB0ZXN0cyBiYXNpYyB0cmFuc2Zvcm1hY3Rpb24gZXZl
bnQgc3VwcG9ydC4KK3RyYW5zZm9ybWFjdGlvbiBzZXF1ZW5jZSB3aXRoIGEgc2luZ2xlIHRvdWNo
cG9pbnQKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRyYW5zZm9ybWFjdGlvbnN0YXJ0IgorUEFT
UyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29yKDApCitQQVNTIGxhc3RFdmVudC50
cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMCkKK1BBU1MgbGFzdEV2ZW50LnJvdGF0ZSBpcyBjbG9z
ZSB0byAwCitQQVNTIGxhc3RFdmVudC5zY2FsZSBpcyBjbG9zZSB0byAxCitQQVNTIGxhc3RFdmVu
dC5zaGlmdEtleSBpcyBmYWxzZQorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJhbnNmb3JtYWN0
aW9udXBkYXRlIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29yKDUpCitQ
QVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMTApCitQQVNTIGxhc3RFdmVu
dC5yb3RhdGUgaXMgY2xvc2UgdG8gMAorUEFTUyBsYXN0RXZlbnQuc2NhbGUgaXMgY2xvc2UgdG8g
MQorUEFTUyBsYXN0RXZlbnQuc2hpZnRLZXkgaXMgdHJ1ZQorUEFTUyBsYXN0RXZlbnQuYWx0S2V5
IGlzIHRydWUKK1BBU1MgbGFzdEV2ZW50LmN0cmxLZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50
Lm1ldGFLZXkgaXMgZmFsc2UKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRyYW5zZm9ybWFjdGlv
bmVuZCIKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVggaXMgTWF0aC5mbG9vcig1KQorUEFTUyBs
YXN0RXZlbnQudHJhbnNsYXRlWSBpcyBNYXRoLmZsb29yKDEwKQorUEFTUyBsYXN0RXZlbnQucm90
YXRlIGlzIGNsb3NlIHRvIDAKK1BBU1MgbGFzdEV2ZW50LnNjYWxlIGlzIGNsb3NlIHRvIDEKK1BB
U1MgbGFzdEV2ZW50LnNoaWZ0S2V5IGlzIGZhbHNlCitQQVNTIGxhc3RFdmVudC5hbHRLZXkgaXMg
ZmFsc2UKK3RyYW5zZm9ybWFjdGlvbiBzZXF1ZW5jZSB3aXRoIHR3byB0b3VjaHBvaW50cworRmly
c3QgdG91Y2hwb2ludCBwcmVzc2VkCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0cmFuc2Zvcm1h
Y3Rpb25zdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVggaXMgTWF0aC5mbG9vcigwKQor
UEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWSBpcyBNYXRoLmZsb29yKDApCitQQVNTIGxhc3RFdmVu
dC5yb3RhdGUgaXMgY2xvc2UgdG8gMAorUEFTUyBsYXN0RXZlbnQuc2NhbGUgaXMgY2xvc2UgdG8g
MQorU2Vjb25kIHRvdWNocG9pbnQgcHJlc3NlZAorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJh
bnNmb3JtYWN0aW9udXBkYXRlIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZs
b29yKDApCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMCkKK1BBU1Mg
bGFzdEV2ZW50LnJvdGF0ZSBpcyBjbG9zZSB0byAwCitQQVNTIGxhc3RFdmVudC5zY2FsZSBpcyBj
bG9zZSB0byAxCitGaXJzdCB0b3VjaHBvaW50IHVwZGF0ZWQKK1BBU1MgbGFzdEV2ZW50LnR5cGUg
aXMgInRyYW5zZm9ybWFjdGlvbnVwZGF0ZSIKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVggaXMg
TWF0aC5mbG9vcigyLjUpCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3Io
MTApCitQQVNTIGxhc3RFdmVudC5yb3RhdGUgaXMgY2xvc2UgdG8gLTAuMDcxMTA0OTk0NjUyNDAy
MDUKK1BBU1MgbGFzdEV2ZW50LnNjYWxlIGlzIGNsb3NlIHRvIDAuODcxMDEyODM5MzYzODI1OAor
U2Vjb25kIHRvdWNocG9pbnQgaXMgcmVsZWFzZWQKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRy
YW5zZm9ybWFjdGlvbnVwZGF0ZSIKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVggaXMgTWF0aC5m
bG9vcigyLjUpCitQQVNTIGxhc3RFdmVudC50cmFuc2xhdGVZIGlzIE1hdGguZmxvb3IoMTApCitQ
QVNTIGxhc3RFdmVudC5yb3RhdGUgaXMgY2xvc2UgdG8gLTAuMDcxMTA0OTk0NjUyNDAyMDUKK1BB
U1MgbGFzdEV2ZW50LnNjYWxlIGlzIGNsb3NlIHRvIDAuODcxMDEyODM5MzYzODI1OAorU2Vjb25k
IHRvdWNocG9pbnQgcHJlc3NlZCBhZ2FpbgorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidHJhbnNm
b3JtYWN0aW9udXBkYXRlIgorUEFTUyBsYXN0RXZlbnQudHJhbnNsYXRlWCBpcyBNYXRoLmZsb29y
KDIuNSkKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVkgaXMgTWF0aC5mbG9vcigxMCkKK1BBU1Mg
bGFzdEV2ZW50LnJvdGF0ZSBpcyBjbG9zZSB0byAtMC4wNzExMDQ5OTQ2NTI0MDIwNQorUEFTUyBs
YXN0RXZlbnQuc2NhbGUgaXMgY2xvc2UgdG8gMC44NzEwMTI4MzkzNjM4MjU4CitCb3RoIHRvdWNo
IHBvaW50cyB1cGRhdGUKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRyYW5zZm9ybWFjdGlvbnVw
ZGF0ZSIKK1BBU1MgbGFzdEV2ZW50LnRyYW5zbGF0ZVggaXMgTWF0aC5mbG9vcigtNy41KQorUEFT
UyBsYXN0RXZlbnQudHJhbnNsYXRlWSBpcyBNYXRoLmZsb29yKDEwKQorUEFTUyBsYXN0RXZlbnQu
cm90YXRlIGlzIGNsb3NlIHRvIC0wLjA3MTEwNDk5NDY1MjQwMjA1CitQQVNTIGxhc3RFdmVudC5z
Y2FsZSBpcyBjbG9zZSB0byAwLjg3MTAxMjgzOTM2MzgyNTgKK1JlbGVhc2UgYm90aCB0b3VjaCBw
b2ludHMKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRyYW5zZm9ybWFjdGlvbmVuZCIKK1BBU1Mg
bGFzdEV2ZW50LnRyYW5zbGF0ZVggaXMgTWF0aC5mbG9vcigtNy41KQorUEFTUyBsYXN0RXZlbnQu
dHJhbnNsYXRlWSBpcyBNYXRoLmZsb29yKDEwKQorUEFTUyBsYXN0RXZlbnQucm90YXRlIGlzIGNs
b3NlIHRvIC0wLjA3MTEwNDk5NDY1MjQwMjA1CitQQVNTIGxhc3RFdmVudC5zY2FsZSBpcyBjbG9z
ZSB0byAwLjg3MTAxMjgzOTM2MzgyNTgKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
cmFuc2Zvcm1hY3Rpb24vYmFzaWMtdHJhbnNmb3JtYWN0aW9uLWV2ZW50cy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdHJhbnNmb3JtYWN0aW9uL2Jhc2ljLXRyYW5zZm9ybWFjdGlvbi1l
dmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzBkZmIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdHJhbnNmb3JtYWN0aW9u
L2Jhc2ljLXRyYW5zZm9ybWFjdGlvbi1ldmVudHMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jhc2lj
LXRyYW5zZm9ybWFjdGlvbi1ldmVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdHJhbnNmb3JtYWN0aW9uL3Jl
c291cmNlcy9iYXNpYy10cmFuc2Zvcm1hY3Rpb24tZXZlbnRzLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdHJhbnNmb3JtYWN0aW9uL3Jlc291cmNlcy9iYXNpYy10cmFuc2Zvcm1hY3Rpb24t
ZXZlbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1N2IyZDkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90cmFuc2Zvcm1hY3Rpb24v
cmVzb3VyY2VzL2Jhc2ljLXRyYW5zZm9ybWFjdGlvbi1ldmVudHMuanMKQEAgLTAsMCArMSwxNzAg
QEAKK2Rlc2NyaXB0aW9uID0gIlRoaXMgdGVzdHMgYmFzaWMgdHJhbnNmb3JtYWN0aW9uIGV2ZW50
IHN1cHBvcnQuIjsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ZGl2LmlkID0gInRvdWNodGFyZ2V0IjsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYu
c3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1
ZSI7CisKK3ZhciBsYXN0RXZlbnQgPSBudWxsOworCitmdW5jdGlvbiBzaG91bGRCZUNsb3NlKF9h
LCBfYiwgX2Vwc2lsb24pCit7CisgICAgLy8gTGlrZSBzaG91bGRCZSwgZXZhbHVhdGUgX2EgYW5k
IGNvbXBhcmUgaXQgdG8gX2IuIF9iIGFuZCBfZXBzaWxvbiBzaG91bGQgYmUgbnVtYmVycyBhbmQK
KyAgICAvLyB0aGUgcmVzdWx0aW5nIHZhbHVlIG9mIF9hIGV2YWx1YXRlZCBzaG91bGQgYmUgd2l0
aGluIF9lcHNpbG9uIGZyb20gX2IuCisKKyAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0
eXBlb2YgX2IgIT0gIm51bWJlciIgfHwgdHlwZW9mIF9lcHNpbG9uICE9ICJudW1iZXIiKQorICAg
IGRlYnVnKCJXQVJOOiBzaG91bGRCZUNsb3NlKCkgZXhwZWN0cyBhIHN0cmluZyBhbmQgdHdvIG51
bWJlcnMgYXMgYXJndW1lbnRzIik7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRy
eSB7CisgICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlv
biA9IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNo
b3VsZCBiZSBjbG9zZSB0byAiICsgX2IgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlv
bik7CisgIGVsc2UgaWYgKHR5cGVvZihfYXYpICE9ICJudW1iZXIiKQorICAgIHRlc3RGYWlsZWQo
X2EgKyAiIHNob3VsZCBiZSBhIG51bWJlci4gV2FzICIgKyB0eXBlb2YoX2F2KSk7CisgIGVsc2Ug
aWYgKE1hdGguYWJzKF9hdiAtIF9iKSA8IF9lcHNpbG9uKQorICAgIHRlc3RQYXNzZWQoX2EgKyAi
IGlzIGNsb3NlIHRvICIgKyBfYik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91
bGQgYmUgY2xvc2UgdG8gIiArIF9iICsgIi4gV2FzICIgKyBfYXYgKyAiLiIpOworfQorCitmdW5j
dGlvbiBhcHBlbmRFdmVudExvZygpIHsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgIGxhc3RFdmVudCA9IGV2ZW50OworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKGV2
ZW50LnR5cGUpOworICAgIH0KK30KKworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zZm9ybWFj
dGlvbnN0YXJ0IiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVy
KCJ0cmFuc2Zvcm1hY3Rpb251cGRhdGUiLCBhcHBlbmRFdmVudExvZywgZmFsc2UpOworZGl2LmFk
ZEV2ZW50TGlzdGVuZXIoInRyYW5zZm9ybWFjdGlvbmVuZCIsIGFwcGVuZEV2ZW50TG9nLCBmYWxz
ZSk7Citkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RD
aGlsZCk7CisKK2Z1bmN0aW9uIHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50KHR5cGUsIHRyYW5z
bGF0ZVgsIHRyYW5zbGF0ZVksIHJvdGF0ZSwgc2NhbGUpCit7CisgICAgdmFyIHRvbGVyYW5jZSA9
IDAuMDAwMDAxOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudHlwZSIs
IHR5cGUpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQudHJhbnNsYXRlWCIsICJNYXRoLmZsb29y
KCIgKyB0cmFuc2xhdGVYICsgIikiKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LnRyYW5zbGF0
ZVkiLCAiTWF0aC5mbG9vcigiICsgdHJhbnNsYXRlWSArICIpIik7CisgICAgc2hvdWxkQmVDbG9z
ZSgibGFzdEV2ZW50LnJvdGF0ZSIsIHJvdGF0ZSwgdG9sZXJhbmNlKTsKKyAgICBzaG91bGRCZUNs
b3NlKCJsYXN0RXZlbnQuc2NhbGUiLCBzY2FsZSwgdG9sZXJhbmNlKTsKK30KKworZnVuY3Rpb24g
c2luZ2xlVG91Y2hTZXF1ZW5jZSgpCit7CisgICAgZGVidWcoInRyYW5zZm9ybWFjdGlvbiBzZXF1
ZW5jZSB3aXRoIGEgc2luZ2xlIHRvdWNocG9pbnQiKTsKKworICAgIGV2ZW50U2VuZGVyLmFkZFRv
dWNoUG9pbnQoMTAsIDEwKTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICB2
ZXJpZnl0cmFuc2Zvcm1hY3Rpb25FdmVudCgidHJhbnNmb3JtYWN0aW9uc3RhcnQiLCAwLCAwLCAw
LCAxKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LnNoaWZ0S2V5IiwgImZhbHNlIik7CisKKyAg
ICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIDE1LCAyMCk7CisgICAgZXZlbnRTZW5k
ZXIuc2V0VG91Y2hNb2RpZmllcigic2hpZnQiLCB0cnVlKTsKKyAgICBldmVudFNlbmRlci5zZXRU
b3VjaE1vZGlmaWVyKCJhbHQiLCB0cnVlKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsK
KworICAgIHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50KCJ0cmFuc2Zvcm1hY3Rpb251cGRhdGUi
LCA1LCAxMCwgMCwgMSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5zaGlmdEtleSIsICJ0cnVl
Iik7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC5hbHRLZXkiLCAidHJ1ZSIpOworICAgIHNob3Vs
ZEJlKCJsYXN0RXZlbnQuY3RybEtleSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJsYXN0RXZl
bnQubWV0YUtleSIsICJmYWxzZSIpOworCisgICAgZXZlbnRTZW5kZXIuc2V0VG91Y2hNb2RpZmll
cigic2hpZnQiLCBmYWxzZSk7CisgICAgZXZlbnRTZW5kZXIuc2V0VG91Y2hNb2RpZmllcigiYWx0
IiwgZmFsc2UpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKworICAgIHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50
KCJ0cmFuc2Zvcm1hY3Rpb25lbmQiLCA1LCAxMCwgMCwgMSk7CisgICAgc2hvdWxkQmUoImxhc3RF
dmVudC5zaGlmdEtleSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuYWx0S2V5
IiwgImZhbHNlIik7Cit9CisKK2Z1bmN0aW9uIG11bHRpVG91Y2hTZXF1ZW5jZSgpCit7CisgICAg
ZGVidWcoInRyYW5zZm9ybWFjdGlvbiBzZXF1ZW5jZSB3aXRoIHR3byB0b3VjaHBvaW50cyIpOwor
CisgICAgZGVidWcoIkZpcnN0IHRvdWNocG9pbnQgcHJlc3NlZCIpOworICAgIGV2ZW50U2VuZGVy
LmFkZFRvdWNoUG9pbnQoMTAsIDEwKTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7Cisg
ICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQoInRyYW5zZm9ybWFjdGlvbnN0YXJ0IiwgMCwg
MCwgMCwgMSk7CisKKyAgICBkZWJ1ZygiU2Vjb25kIHRvdWNocG9pbnQgcHJlc3NlZCIpOworICAg
IGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoMTAwLCAxMjApOworICAgIGV2ZW50U2VuZGVyLnRv
dWNoTW92ZSgpOworICAgIHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50KCJ0cmFuc2Zvcm1hY3Rp
b251cGRhdGUiLCAwLCAwLCAwLCAxKTsKKworICAgIGRlYnVnKCJGaXJzdCB0b3VjaHBvaW50IHVw
ZGF0ZWQiKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIDE1LCAzMCk7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisgICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZl
bnQoInRyYW5zZm9ybWFjdGlvbnVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgx
NS0xMDApLzItKDEwLTEwMCkvMiwgLy8gdHJhbnNsYXRlWAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAoMzAtMTIwKS8yLSgxMC0xMjApLzIsIC8vIHRyYW5zbGF0ZVkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWF0aC5hdGFuKCgzMC0xMjApLygxNS0xMDApKSAtIE1hdGguYXRhbigoMTAt
MTIwKS8oMTAtMTAwKSksIC8vIHJvdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRo
LnNxcnQoKDE1LTEwMCkqKDE1LTEwMCkrKDMwLTEyMCkqKDMwLTEyMCkpIC8gTWF0aC5zcXJ0KCgx
MC0xMDApKigxMC0xMDApKygxMC0xMjApKigxMC0xMjApKSk7IC8vIHNjYWxlCisKKyAgICBkZWJ1
ZygiU2Vjb25kIHRvdWNocG9pbnQgaXMgcmVsZWFzZWQiKTsKKyAgICBldmVudFNlbmRlci5yZWxl
YXNlVG91Y2hQb2ludCgxKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKyAgICB2ZXJp
Znl0cmFuc2Zvcm1hY3Rpb25FdmVudCgidHJhbnNmb3JtYWN0aW9udXBkYXRlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKDE1LTEwMCkvMi0oMTAtMTAwKS8yLCAvLyB0cmFuc2xhdGVYCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICgzMC0xMjApLzItKDEwLTEyMCkvMiwgLy8gdHJhbnNs
YXRlWQorICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmF0YW4oKDMwLTEyMCkvKDE1LTEw
MCkpIC0gTWF0aC5hdGFuKCgxMC0xMjApLygxMC0xMDApKSwgLy8gcm90YXRlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1hdGguc3FydCgoMTUtMTAwKSooMTUtMTAwKSsoMzAtMTIwKSooMzAt
MTIwKSkgLyBNYXRoLnNxcnQoKDEwLTEwMCkqKDEwLTEwMCkrKDEwLTEyMCkqKDEwLTEyMCkpKTsg
Ly8gc2NhbGUKKworICAgIGRlYnVnKCJTZWNvbmQgdG91Y2hwb2ludCBwcmVzc2VkIGFnYWluIik7
CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCgyMDAsIDEwKTsKKyAgICBldmVudFNlbmRl
ci50b3VjaE1vdmUoKTsKKyAgICAvLyBTaG91bGQgc3RpbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMg
YXMgYWJvdmUsIGFzIHRoZSBtYW5pcHVsYXRpb24gaXMgc3RpbGwgb25nb2luZyBhbmQgbm90aGlu
ZyBoYXMgdXBkYXRlZAorICAgIHZlcmlmeXRyYW5zZm9ybWFjdGlvbkV2ZW50KCJ0cmFuc2Zvcm1h
Y3Rpb251cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoMTUtMTAwKS8yLSgxMC0x
MDApLzIsIC8vIHRyYW5zbGF0ZVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDMwLTEyMCkv
Mi0oMTAtMTIwKS8yLCAvLyB0cmFuc2xhdGVZCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGguYXRhbigoMzAtMTIwKS8oMTUtMTAwKSkgLSBNYXRoLmF0YW4oKDEwLTEyMCkvKDEwLTEwMCkp
LCAvLyByb3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5zcXJ0KCgxNS0xMDAp
KigxNS0xMDApKygzMC0xMjApKigzMC0xMjApKSAvIE1hdGguc3FydCgoMTAtMTAwKSooMTAtMTAw
KSsoMTAtMTIwKSooMTAtMTIwKSkpOyAvLyBzY2FsZQorCisgICAgZGVidWcoIkJvdGggdG91Y2gg
cG9pbnRzIHVwZGF0ZSIpOworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNSwg
MzApOworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMSwgMTkwLCAxMCk7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisgICAgdmVyaWZ5dHJhbnNmb3JtYWN0aW9uRXZlbnQo
InRyYW5zZm9ybWFjdGlvbnVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgxNS0x
MDApLzItKDEwLTEwMCkvMiAtIDEwLCAvLyB0cmFuc2xhdGVYCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICgzMC0xMjApLzItKDEwLTEyMCkvMiwgLy8gdHJhbnNsYXRlWQorICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRoLmF0YW4oKDMwLTEyMCkvKDE1LTEwMCkpIC0gTWF0aC5hdGFuKCgx
MC0xMjApLygxMC0xMDApKSwgLy8gcm90YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGguc3FydCgoMTUtMTAwKSooMTUtMTAwKSsoMzAtMTIwKSooMzAtMTIwKSkgLyBNYXRoLnNxcnQo
KDEwLTEwMCkqKDEwLTEwMCkrKDEwLTEyMCkqKDEwLTEyMCkpKTsgLy8gc2NhbGUKKworICAgIGRl
YnVnKCJSZWxlYXNlIGJvdGggdG91Y2ggcG9pbnRzIik7CisgICAgZXZlbnRTZW5kZXIucmVsZWFz
ZVRvdWNoUG9pbnQoMSk7CisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKyAgICB2ZXJpZnl0cmFuc2Zvcm1hY3Rpb25FdmVu
dCgidHJhbnNmb3JtYWN0aW9uZW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDE1LTEw
MCkvMi0oMTAtMTAwKS8yIC0gMTAsIC8vIHRyYW5zbGF0ZVgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgKDMwLTEyMCkvMi0oMTAtMTIwKS8yLCAvLyB0cmFuc2xhdGVZCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1hdGguYXRhbigoMzAtMTIwKS8oMTUtMTAwKSkgLSBNYXRoLmF0YW4oKDEw
LTEyMCkvKDEwLTEwMCkpLCAvLyByb3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0
aC5zcXJ0KCgxNS0xMDApKigxNS0xMDApKygzMC0xMjApKigzMC0xMjApKSAvIE1hdGguc3FydCgo
MTAtMTAwKSooMTAtMTAwKSsoMTAtMTIwKSooMTAtMTIwKSkpOyAvLyBzY2FsZQorfQorCitpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZGVidWcoZGVzY3JpcHRpb24pOworCisgICAgbGFz
dEV2ZW50ID0gbnVsbDsKKyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAg
c2luZ2xlVG91Y2hTZXF1ZW5jZSgpOworCisgICAgbGFzdEV2ZW50ID0gbnVsbDsKKyAgICBldmVu
dFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgbXVsdGlUb3VjaFNlcXVlbmNlKCk7CisK
K30gZWxzZSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4g
IFRhcCBvbiB0aGUgYmx1ZSByZWN0IHRvIGxvZy4iKQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Ub3VjaEdlc3R1cmVIYW5kbGVy
LmNwcCBiL1dlYkNvcmUvcGFnZS9Ub3VjaEdlc3R1cmVIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWNmOTliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wYWdlL1RvdWNoR2VzdHVyZUhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVG91Y2hHZXN0dXJl
SGFuZGxlci5oIgorCisjaW5jbHVkZSA8bWF0aC5oPgorCisjaWZuZGVmIE1fUEkKKyNkZWZpbmUg
TV9QSSAzLjE0MTU5MjY1MzYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RvdWNo
R2VzdHVyZUhhbmRsZXI6OlRvdWNoR2VzdHVyZUhhbmRsZXIoKQoreworICAgIHJlc2V0KCk7Cit9
CisKK3ZvaWQgVG91Y2hHZXN0dXJlSGFuZGxlcjo6dXBkYXRlUmVmcmVzaE5lZWRlZFN0YXRlKGNv
bnN0IFZlY3Rvcjxjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQqPiYgdG91Y2hQb2ludHMpCit7Cisg
ICAgLy8gTnVtYmVyIG9mIHRvdWNocG9pbnRzIGNoYW5nZWQKKyAgICBpZiAodG91Y2hQb2ludHMu
c2l6ZSgpICE9IG1fcHJldlNpemUpCisgICAgICAgIG1fcmVmcmVzaE5lZWRlZCA9IHRydWU7Cisg
ICAgZWxzZSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIC8vIFRvdWNocG9pbnRzIGluIHByZXNzZWQgc3RhdGUgb3Ig
aWRzIG1pc21hdGNoCisgICAgICAgICAgICBpZiAodG91Y2hQb2ludHNbaV0tPnN0YXRlKCkgPT0g
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQKKyAgICAgICAgICAgICAgICB8fCB0b3Vj
aFBvaW50c1tpXS0+aWQoKSAhPSBtX3ByZXZJZHNbaV0pIG1fcmVmcmVzaE5lZWRlZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3ByZXZTaXplID0gdG91Y2hQb2ludHMuc2l6ZSgp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fcHJldklkc1tpXSA9IHRvdWNoUG9pbnRzW2ldLT5pZCgpOworfQorCit2b2lkIFRvdWNo
R2VzdHVyZUhhbmRsZXI6OnVwZGF0ZVRvdWNoUG9pbnRzKGNvbnN0IFZlY3Rvcjxjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQqPiYgdG91Y2hQb2ludHMpCit7CisgICAgaWYgKHRvdWNoUG9pbnRzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlUmVmcmVzaE5lZWRlZFN0YXRl
KHRvdWNoUG9pbnRzKTsKKworICAgIGlmIChtX3JlZnJlc2hOZWVkZWQpIHsKKyAgICAgICAgbV9w
b3MgPSBjYWxjUG9zKHRvdWNoUG9pbnRzKTsKKyAgICAgICAgSW50U2l6ZSBjbGllbnRPZmZzZXQg
PSB0b3VjaFBvaW50c1swXS0+c2NyZWVuUG9zKCkgLSB0b3VjaFBvaW50c1swXS0+cG9zKCk7Cisg
ICAgICAgIG1fc2NyZWVuUG9zID0gbV9wb3MgKyBjbGllbnRPZmZzZXQ7CisKKyAgICAgICAgaWYg
KHRvdWNoUG9pbnRzLnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIG1fcHJldkFuZ2xlID0gY2Fs
Y0FuZ2xlKHRvdWNoUG9pbnRzWzBdLT5wb3MoKSwgdG91Y2hQb2ludHNbMV0tPnBvcygpKTsKKyAg
ICAgICAgICAgIG1fcHJldkRpc3RhbmNlID0gY2FsY0Rpc3RhbmNlKHRvdWNoUG9pbnRzWzBdLT5w
b3MoKSwgdG91Y2hQb2ludHNbMV0tPnBvcygpKTsKKyAgICAgICAgfQorICAgICAgICBtX3JlZnJl
c2hOZWVkZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFBhbgor
ICAgIEludFBvaW50IG5leHRQb3MgPSBjYWxjUG9zKHRvdWNoUG9pbnRzKTsKKyAgICBtX3RyYW5z
bGF0ZSArPSAobmV4dFBvcyAtIG1fcG9zKTsKKyAgICBtX3BvcyA9IG5leHRQb3M7CisgICAgSW50
U2l6ZSBjbGllbnRPZmZzZXQgPSB0b3VjaFBvaW50c1swXS0+c2NyZWVuUG9zKCkgLSB0b3VjaFBv
aW50c1swXS0+cG9zKCk7CisgICAgbV9zY3JlZW5Qb3MgPSBtX3BvcyArIGNsaWVudE9mZnNldDsK
KworICAgIGlmICh0b3VjaFBvaW50cy5zaXplKCkgPiAxKSB7CisgICAgICAgIC8vIFJvdGF0ZQor
ICAgICAgICBmbG9hdCBhbmdsZSA9IGNhbGNBbmdsZSh0b3VjaFBvaW50c1swXS0+cG9zKCksIHRv
dWNoUG9pbnRzWzFdLT5wb3MoKSk7CisgICAgICAgIG1fcm90YXRlICs9IGRpZmZBbmdsZShtX3By
ZXZBbmdsZSwgYW5nbGUpOworICAgICAgICBtX3ByZXZBbmdsZSA9IGFuZ2xlOworCisgICAgICAg
IC8vIFBpbmNoCisgICAgICAgIGZsb2F0IGRpc3RhbmNlID0gY2FsY0Rpc3RhbmNlKHRvdWNoUG9p
bnRzWzBdLT5wb3MoKSwgdG91Y2hQb2ludHNbMV0tPnBvcygpKTsKKyAgICAgICAgZmxvYXQgbmV4
dFNjYWxlID0gbV9zY2FsZSAqIChkaXN0YW5jZSAvIChtX3ByZXZEaXN0YW5jZSA/IG1fcHJldkRp
c3RhbmNlIDogMC4wMDAxZikpOworICAgICAgICBtX3NjYWxlID0gbmV4dFNjYWxlOworICAgICAg
ICBtX3ByZXZEaXN0YW5jZSA9IGRpc3RhbmNlOworICAgIH0KK30KKwordm9pZCBUb3VjaEdlc3R1
cmVIYW5kbGVyOjpyZXNldCgpCit7CisgICAgbV9yZWZyZXNoTmVlZGVkID0gdHJ1ZTsKKyAgICBt
X3NjYWxlID0gMS4wOworICAgIG1fcm90YXRlID0gMDsKKyAgICBtX3RyYW5zbGF0ZSA9IEludFBv
aW50KDAsIDApOworICAgIG1fcG9zID0gSW50UG9pbnQoMCwgMCk7CisgICAgbV9zY3JlZW5Qb3Mg
PSBJbnRQb2ludCgwLCAwKTsKKyAgICBtX3ByZXZTaXplID0gMDsKK30KKworZmxvYXQgVG91Y2hH
ZXN0dXJlSGFuZGxlcjo6Y2FsY0FuZ2xlKGNvbnN0IEludFBvaW50JiBwMSwgY29uc3QgSW50UG9p
bnQmIHAyKSBjb25zdAoreworICAgIGZsb2F0IGRlbHRhWCA9IHAxLngoKSAtIHAyLngoKTsKKyAg
ICBmbG9hdCBkZWx0YVkgPSBwMS55KCkgLSBwMi55KCk7CisgICAgcmV0dXJuIGF0YW4yKGRlbHRh
WSwgZGVsdGFYKTsKK30KKworZmxvYXQgVG91Y2hHZXN0dXJlSGFuZGxlcjo6ZGlmZkFuZ2xlKGZs
b2F0IGFscGhhLCBmbG9hdCBiZXRhKSBjb25zdAoreworICAgIGZsb2F0IGJldHdlZW4gPSBiZXRh
IC0gYWxwaGE7CisKKyAgICBpZiAoYmV0d2VlbiA+IE1fUEkpCisgICAgICAgIGJldHdlZW4gLT0g
MiAqIE1fUEk7CisgICAgZWxzZSBpZiAoYmV0d2VlbiA8IC1NX1BJKQorICAgICAgICBiZXR3ZWVu
ICs9IDIgKiBNX1BJOworCisgICAgcmV0dXJuIGJldHdlZW47Cit9CisKK0ludFBvaW50IFRvdWNo
R2VzdHVyZUhhbmRsZXI6OmNhbGNQb3MoY29uc3QgVmVjdG9yPGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCo+JiB0b3VjaFBvaW50cykgY29uc3QKK3sKKyAgICBpZiAodG91Y2hQb2ludHMuc2l6ZSgp
ID09IDEpCisgICAgICAgIHJldHVybiB0b3VjaFBvaW50c1swXS0+cG9zKCk7CisKKyAgICBJbnRQ
b2ludCBwb3M7CisgICAgcG9zLnNldFgoKHRvdWNoUG9pbnRzWzBdLT5wb3MoKS54KCkgKyB0b3Vj
aFBvaW50c1sxXS0+cG9zKCkueCgpKSAvIDIpOworICAgIHBvcy5zZXRZKCh0b3VjaFBvaW50c1sw
XS0+cG9zKCkueSgpICsgdG91Y2hQb2ludHNbMV0tPnBvcygpLnkoKSkgLyAyKTsKKyAgICByZXR1
cm4gcG9zOworfQorCitmbG9hdCBUb3VjaEdlc3R1cmVIYW5kbGVyOjpjYWxjRGlzdGFuY2UoY29u
c3QgSW50UG9pbnQmIHAxLCBjb25zdCBJbnRQb2ludCYgcDIpIGNvbnN0Cit7CisgICAgZmxvYXQg
ZHggPSBwMS54KCkgLSBwMi54KCk7CisgICAgZmxvYXQgZHkgPSBwMS55KCkgLSBwMi55KCk7Cisg
ICAgcmV0dXJuIHNxcnQoZHggKiBkeCArIGR5ICogZHkpOworfQorCit9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvVG91Y2hHZXN0dXJlSGFuZGxlci5oIGIvV2ViQ29yZS9wYWdlL1RvdWNoR2Vz
dHVyZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDlhYTEz
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL1RvdWNoR2VzdHVyZUhhbmRsZXIuaApA
QCAtMCwwICsxLDYzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFRvdWNoR2VzdHVy
ZUhhbmRsZXJfaAorI2RlZmluZSBUb3VjaEdlc3R1cmVIYW5kbGVyX2gKKworI2luY2x1ZGUgIlBs
YXRmb3JtVG91Y2hFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRvdWNo
R2VzdHVyZUhhbmRsZXIgeworCitwdWJsaWM6CisgICAgVG91Y2hHZXN0dXJlSGFuZGxlcigpOwor
CisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgdXBkYXRlVG91Y2hQb2ludHMoY29uc3QgVmVj
dG9yPGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCo+JiB0b3VjaFBvaW50cyk7CisKKyAgICBpbnQg
dHJhbnNsYXRlWCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNsYXRlLngoKTsgfQorICAgIGludCB0
cmFuc2xhdGVZKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2xhdGUueSgpOyB9CisgICAgY29uc3Qg
SW50UG9pbnQmIHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9CisgICAgY29uc3QgSW50UG9p
bnQmIHNjcmVlblBvcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuUG9zOyB9CisgICAgZmxvYXQg
c2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CisgICAgZmxvYXQgcm90YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9yb3RhdGU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBjYWxjQW5nbGUo
Y29uc3QgSW50UG9pbnQmIHAxLCBjb25zdCBJbnRQb2ludCYgcDIpIGNvbnN0OworICAgIGZsb2F0
IGRpZmZBbmdsZShmbG9hdCBhbHBoYSwgZmxvYXQgYmV0YSkgY29uc3Q7CisgICAgSW50UG9pbnQg
Y2FsY1Bvcyhjb25zdCBWZWN0b3I8Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Kj4mIHRvdWNoUG9p
bnRzKSBjb25zdDsKKyAgICBmbG9hdCBjYWxjRGlzdGFuY2UoY29uc3QgSW50UG9pbnQmIHAxLCBj
b25zdCBJbnRQb2ludCYgcDIpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlUmVmcmVzaE5lZWRlZFN0
YXRlKGNvbnN0IFZlY3Rvcjxjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQqPiYgdG91Y2hQb2ludHMp
OworCisgICAgYm9vbCBtX3JlZnJlc2hOZWVkZWQ7CisgICAgSW50UG9pbnQgbV90cmFuc2xhdGU7
CisgICAgZmxvYXQgbV9zY2FsZTsKKyAgICBmbG9hdCBtX3JvdGF0ZTsKKyAgICBJbnRQb2ludCBt
X3BvczsKKyAgICBJbnRQb2ludCBtX3NjcmVlblBvczsKKyAgICBmbG9hdCBtX3ByZXZBbmdsZTsK
KyAgICBpbnQgbV9wcmV2U2l6ZTsKKyAgICBpbnQgbV9wcmV2SWRzWzJdOworICAgIGZsb2F0IG1f
cHJldkRpc3RhbmNlOworfTsKKworfQorCisjZW5kaWYgLy8gVG91Y2hHZXN0dXJlSGFuZGxlcl9o
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>