<?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>134819</bug_id>
          
          <creation_ts>2014-07-10 17:06:46 -0700</creation_ts>
          <short_desc>[iOS WK2] Move WKInspectorHighlightView to its own file</short_desc>
          <delta_ts>2014-07-14 23:06:26 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1021742</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-10 17:06:46 -0700</bug_when>
    <thetext>[iOS WK2] Move WKInspectorHighlightView to its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021743</commentid>
    <comment_count>1</comment_count>
      <attachid>234733</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-10 17:07:20 -0700</bug_when>
    <thetext>Created attachment 234733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021744</commentid>
    <comment_count>2</comment_count>
      <attachid>234733</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-07-10 17:08:57 -0700</bug_when>
    <thetext>Comment on attachment 234733
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022415</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-14 23:06:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170987</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234733</attachid>
            <date>2014-07-10 17:07:20 -0700</date>
            <delta_ts>2014-07-10 17:08:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134819-20140710170702.patch</filename>
            <type>text/plain</type>
            <size>29898</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwOTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjBjNzI3MGRjNWY2ODQy
MmVlMTI2YmRhOWFlNjMwNjhkZjgzMzRiYi4uYTdmYWJmY2Q2NTc0ZjQ0MDUxY2Q1ZTMzMGJjNDA3
Zjc4N2QwYjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA3LTEwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBN
b3ZlIFdLSW5zcGVjdG9ySGlnaGxpZ2h0VmlldyB0byBpdHMgb3duIGZpbGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDgxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV0tJbnNwZWN0b3JI
aWdobGlnaHRWaWV3IGJyb3VnaHQgYSBsb3Qgb2YgcGF0aC9xdWFkLXJlbGF0ZWQgY29kZSBpbnRv
IFdLQ29udGVudFZpZXcubW0sCisgICAgICAgIHNvIG1vdmUgaXQgaW50byBpdHMgb3duIGZpbGUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW06IEFkZGVk
LgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgZGVhbGxvY10pOgorICAgICAg
ICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX3JlbW92ZUFsbExheWVyc10pOgorICAgICAg
ICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2NyZWF0ZUxheWVyczpdKToKKyAgICAgICAg
KGZpbmRJbnRlcnNlY3Rpb25PbkxpbmVCZXR3ZWVuUG9pbnRzKToKKyAgICAgICAgKHF1YWRJbnRl
cnNlY3Rpb24pOgorICAgICAgICAobGF5ZXJQYXRoV2l0aEhvbGUpOgorICAgICAgICAobGF5ZXJQ
YXRoKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3IF9sYXlvdXRGb3JOb2Rl
SGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2xheW91
dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgdXBkYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToK
KyAgICAgICAgKC1bV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3IGluaXRXaXRoRnJhbWU6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0VmlldyBkZWFsbG9jXSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0VmlldyBfcmVtb3ZlQWxsTGF5
ZXJzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0VmlldyBfY3Jl
YXRlTGF5ZXJzOl0pOiBEZWxldGVkLgorICAgICAgICAoZmluZEludGVyc2VjdGlvbk9uTGluZUJl
dHdlZW5Qb2ludHMpOiBEZWxldGVkLgorICAgICAgICAocXVhZEludGVyc2VjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChsYXllclBhdGhXaXRoSG9sZSk6IERlbGV0ZWQuCisgICAgICAgIChsYXll
clBhdGgpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcgX2xh
eW91dEZvck5vZGVIaWdobGlnaHQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9y
SGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLSW5zcGVjdG9ySGlnaGxpZ2h0VmlldyB1cGRhdGU6XSk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTA3LTEwICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgaU9TIGJ1aWxkIGZpeC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdo
dFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMTc2NjBjYjNkZDRmYjY5ZDhjZTc5OGEyNjdkOWYxNzYxNmVmOWNh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5zcGVjdG9y
SGlnaGxpZ2h0Vmlldy5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZP
Uk0oSU9TKQorCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgSGlnaGxpZ2h0OworfQorCitAaW50ZXJmYWNlIFdLSW5zcGVjdG9ySGlnaGxpZ2h0
VmlldyA6IFVJVmlldyB7CisgICAgTlNNdXRhYmxlQXJyYXkgKl9sYXllcnM7IC8vIENBU2hhcGVM
YXllcnMuCit9CistICh2b2lkKXVwZGF0ZTooY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0JiloaWdo
bGlnaHQ7CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkZTAyOTVkM2I1OWQw
ODU0ZTI5N2MyZTI4NzAwZTJkMjZiZGFlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KQEAgLTAsMCArMSwyNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLSW5zcGVjdG9y
SGlnaGxpZ2h0Vmlldy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxXZWJDb3Jl
L0Zsb2F0UXVhZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JPdmVybGF5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitAaW1wbGVtZW50YXRpb24gV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3CisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKK3sKKyAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICBfbGF5ZXJzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzZWxmIF9yZW1vdmVBbGxMYXllcnNd
OworICAgIFtfbGF5ZXJzIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAo
dm9pZClfcmVtb3ZlQWxsTGF5ZXJzCit7CisgICAgZm9yIChDQVNoYXBlTGF5ZXIgKmxheWVyIGlu
IF9sYXllcnMpCisgICAgICAgIFtsYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgW19s
YXllcnMgcmVtb3ZlQWxsT2JqZWN0c107Cit9CisKKy0gKHZvaWQpX2NyZWF0ZUxheWVyczooTlNV
SW50ZWdlciludW1MYXllcnMKK3sKKyAgICBpZiAoW19sYXllcnMgY291bnRdID09IG51bUxheWVy
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYgX3JlbW92ZUFsbExheWVyc107CisKKyAg
ICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1MYXllcnM7ICsraSkgeworICAgICAgICBD
QVNoYXBlTGF5ZXIgKmxheWVyID0gW1tDQVNoYXBlTGF5ZXIgYWxsb2NdIGluaXRdOworICAgICAg
ICBbX2xheWVycyBhZGRPYmplY3Q6bGF5ZXJdOworICAgICAgICBbc2VsZi5sYXllciBhZGRTdWJs
YXllcjpsYXllcl07CisgICAgICAgIFtsYXllciByZWxlYXNlXTsKKyAgICB9Cit9CisKK3N0YXRp
YyBib29sIGZpbmRJbnRlcnNlY3Rpb25PbkxpbmVCZXR3ZWVuUG9pbnRzKGNvbnN0IEZsb2F0UG9p
bnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMiwgY29uc3QgRmxvYXRQb2ludCYgZDEsIGNvbnN0
IEZsb2F0UG9pbnQmIGQyLCBGbG9hdFBvaW50JiBpbnRlcnNlY3Rpb24pIAoreworICAgIC8vIERv
IHRoZSBsaW5lcyBpbnRlcnNlY3Q/CisgICAgRmxvYXRQb2ludCB0ZW1wb3JhcnlJbnRlcnNlY3Rp
b25Qb2ludDsKKyAgICBpZiAoIWZpbmRJbnRlcnNlY3Rpb24ocDEsIHAyLCBkMSwgZDIsIHRlbXBv
cmFyeUludGVyc2VjdGlvblBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
SXMgdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzIG9uIHRoZSBsaW5lPwor
ICAgIGlmIChwMS54KCkgPj0gcDIueCgpKSB7CisgICAgICAgIGlmICh0ZW1wb3JhcnlJbnRlcnNl
Y3Rpb25Qb2ludC54KCkgPiBwMS54KCkgfHwgdGVtcG9yYXJ5SW50ZXJzZWN0aW9uUG9pbnQueCgp
IDwgcDIueCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmICh0ZW1wb3JhcnlJbnRlcnNlY3Rpb25Qb2ludC54KCkgPiBwMi54KCkgfHwgdGVtcG9y
YXJ5SW50ZXJzZWN0aW9uUG9pbnQueCgpIDwgcDEueCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBpZiAocDEueSgpID49IHAyLnkoKSkgeworICAgICAgICBpZiAodGVt
cG9yYXJ5SW50ZXJzZWN0aW9uUG9pbnQueSgpID4gcDEueSgpIHx8IHRlbXBvcmFyeUludGVyc2Vj
dGlvblBvaW50LnkoKSA8IHAyLnkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAodGVtcG9yYXJ5SW50ZXJzZWN0aW9uUG9pbnQueSgpID4gcDIu
eSgpIHx8IHRlbXBvcmFyeUludGVyc2VjdGlvblBvaW50LnkoKSA8IHAxLnkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnRlcnNlY3Rpb24gPSB0ZW1wb3JhcnlJ
bnRlcnNlY3Rpb25Qb2ludDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVGhpcyBxdWFkIGlu
dGVyc2VjdGlvbiB3b3JrcyBiZWNhdXNlIHRoZSB0d28gcXVhZHMgYXJlIGtub3duIHRvIGJlIGF0
IHRoZSBzYW1lCisvLyByb3RhdGlvbiBhbmQgY2xvY2t3aXNlLW5lc3MuCitzdGF0aWMgRmxvYXRR
dWFkIHF1YWRJbnRlcnNlY3Rpb24oRmxvYXRRdWFkIGJvdW5kcywgRmxvYXRRdWFkIHRvQ2xhbXAp
Cit7CisgICAgLy8gUmVzdWx0aW5nIHBvaW50cy4KKyAgICBGbG9hdFBvaW50IHAxLCBwMiwgcDMs
IHA0OworICAgIGJvb2wgY29udGFpbnNQb2ludDEgPSBmYWxzZTsKKyAgICBib29sIGNvbnRhaW5z
UG9pbnQyID0gZmFsc2U7CisgICAgYm9vbCBjb250YWluc1BvaW50MyA9IGZhbHNlOworICAgIGJv
b2wgY29udGFpbnNQb2ludDQgPSBmYWxzZTsKKyAgICBib29sIGludGVyc2VjdEZvclBvaW50MSA9
IGZhbHNlOworICAgIGJvb2wgaW50ZXJzZWN0Rm9yUG9pbnQyID0gZmFsc2U7CisgICAgYm9vbCBp
bnRlcnNlY3RGb3JQb2ludDMgPSBmYWxzZTsKKyAgICBib29sIGludGVyc2VjdEZvclBvaW50NCA9
IGZhbHNlOworCisgICAgLy8gVG9wIC8gYm90dG9tIHZlcnRpY2FsIGNsYW1waW5nLgorICAgIGlm
IChib3VuZHMuY29udGFpbnNQb2ludCh0b0NsYW1wLnAxKCkpKSB7CisgICAgICAgIGNvbnRhaW5z
UG9pbnQxID0gdHJ1ZTsKKyAgICAgICAgcDEgPSB0b0NsYW1wLnAxKCk7CisgICAgfSBlbHNlIGlm
ICghKGludGVyc2VjdEZvclBvaW50MSA9IGZpbmRJbnRlcnNlY3Rpb25PbkxpbmVCZXR3ZWVuUG9p
bnRzKGJvdW5kcy5wMSgpLCBib3VuZHMucDIoKSwgdG9DbGFtcC5wMSgpLCB0b0NsYW1wLnA0KCks
IHAxKSkpCisgICAgICAgIHAxID0gdG9DbGFtcC5wMSgpOworCisgICAgaWYgKGJvdW5kcy5jb250
YWluc1BvaW50KHRvQ2xhbXAucDIoKSkpIHsKKyAgICAgICAgY29udGFpbnNQb2ludDIgPSB0cnVl
OworICAgICAgICBwMiA9IHRvQ2xhbXAucDIoKTsKKyAgICB9IGVsc2UgaWYgKCEoaW50ZXJzZWN0
Rm9yUG9pbnQyID0gZmluZEludGVyc2VjdGlvbk9uTGluZUJldHdlZW5Qb2ludHMoYm91bmRzLnAx
KCksIGJvdW5kcy5wMigpLCB0b0NsYW1wLnAyKCksIHRvQ2xhbXAucDMoKSwgcDIpKSkKKyAgICAg
ICAgcDIgPSB0b0NsYW1wLnAyKCk7CisKKyAgICBpZiAoYm91bmRzLmNvbnRhaW5zUG9pbnQodG9D
bGFtcC5wMygpKSkgeworICAgICAgICBjb250YWluc1BvaW50MyA9IHRydWU7CisgICAgICAgIHAz
ID0gdG9DbGFtcC5wMygpOworICAgIH0gZWxzZSBpZiAoIShpbnRlcnNlY3RGb3JQb2ludDMgPSBm
aW5kSW50ZXJzZWN0aW9uT25MaW5lQmV0d2VlblBvaW50cyhib3VuZHMucDQoKSwgYm91bmRzLnAz
KCksIHRvQ2xhbXAucDIoKSwgdG9DbGFtcC5wMygpLCBwMykpKQorICAgICAgICBwMyA9IHRvQ2xh
bXAucDMoKTsKKworICAgIGlmIChib3VuZHMuY29udGFpbnNQb2ludCh0b0NsYW1wLnA0KCkpKSB7
CisgICAgICAgIGNvbnRhaW5zUG9pbnQ0ID0gdHJ1ZTsKKyAgICAgICAgcDQgPSB0b0NsYW1wLnA0
KCk7CisgICAgfSBlbHNlIGlmICghKGludGVyc2VjdEZvclBvaW50NCA9IGZpbmRJbnRlcnNlY3Rp
b25PbkxpbmVCZXR3ZWVuUG9pbnRzKGJvdW5kcy5wNCgpLCBib3VuZHMucDMoKSwgdG9DbGFtcC5w
MSgpLCB0b0NsYW1wLnA0KCksIHA0KSkpCisgICAgICAgIHA0ID0gdG9DbGFtcC5wNCgpOworCisg
ICAgLy8gSWYgb25seSBvbmUgb2YgdGhlIHBvaW50cyBpbnRlcnNlY3RlZCBvbiBlaXRoZXIgdGhl
IHRvcCBvciBib3R0b20gbGluZSB0aGVuIHdlCisgICAgLy8gY2FuIGNsYW1wIHRoZSBvdGhlciBw
b2ludCBvbiB0aGF0IGxpbmUgdG8gdGhlIGNvcm5lciBvZiB0aGUgYm91bmRzLgorICAgIGlmICgh
Y29udGFpbnNQb2ludDEgJiYgaW50ZXJzZWN0Rm9yUG9pbnQyICYmICFpbnRlcnNlY3RGb3JQb2lu
dDEpIHsKKyAgICAgICAgY29udGFpbnNQb2ludDEgPSB0cnVlOworICAgICAgICBwMSA9IGJvdW5k
cy5wMSgpOworICAgIH0gZWxzZSBpZiAoIWNvbnRhaW5zUG9pbnQyICYmIGludGVyc2VjdEZvclBv
aW50MSAmJiAhaW50ZXJzZWN0Rm9yUG9pbnQyKSB7CisgICAgICAgIGNvbnRhaW5zUG9pbnQyID0g
dHJ1ZTsKKyAgICAgICAgcDIgPSBib3VuZHMucDIoKTsKKyAgICB9CisgICAgaWYgKCFjb250YWlu
c1BvaW50NCAmJiBpbnRlcnNlY3RGb3JQb2ludDMgJiYgIWludGVyc2VjdEZvclBvaW50NCkgewor
ICAgICAgICBjb250YWluc1BvaW50NCA9IHRydWU7CisgICAgICAgIHA0ID0gYm91bmRzLnA0KCk7
CisgICAgfSBlbHNlIGlmICghY29udGFpbnNQb2ludDMgJiYgaW50ZXJzZWN0Rm9yUG9pbnQ0ICYm
ICFpbnRlcnNlY3RGb3JQb2ludDMpIHsKKyAgICAgICAgY29udGFpbnNQb2ludDMgPSB0cnVlOwor
ICAgICAgICBwMyA9IGJvdW5kcy5wMygpOworICAgIH0KKworICAgIC8vIE5vdyB3ZSBvbmx5IG5l
ZWQgdG8gcGVyZm9ybSBob3Jpem9udGFsIGNsYW1waW5nIGZvciB1bmFkanVzdGVkIHBvaW50cy4K
KyAgICBpZiAoIWNvbnRhaW5zUG9pbnQyICYmICFpbnRlcnNlY3RGb3JQb2ludDIpCisgICAgICAg
IGZpbmRJbnRlcnNlY3Rpb25PbkxpbmVCZXR3ZWVuUG9pbnRzKGJvdW5kcy5wMigpLCBib3VuZHMu
cDMoKSwgcDEsIHAyLCBwMik7CisgICAgaWYgKCFjb250YWluc1BvaW50MyAmJiAhaW50ZXJzZWN0
Rm9yUG9pbnQzKQorICAgICAgICBmaW5kSW50ZXJzZWN0aW9uT25MaW5lQmV0d2VlblBvaW50cyhi
b3VuZHMucDIoKSwgYm91bmRzLnAzKCksIHA0LCBwMywgcDMpOworICAgIGlmICghY29udGFpbnNQ
b2ludDEgJiYgIWludGVyc2VjdEZvclBvaW50MSkKKyAgICAgICAgZmluZEludGVyc2VjdGlvbk9u
TGluZUJldHdlZW5Qb2ludHMoYm91bmRzLnAxKCksIGJvdW5kcy5wNCgpLCBwMSwgcDIsIHAxKTsK
KyAgICBpZiAoIWNvbnRhaW5zUG9pbnQ0ICYmICFpbnRlcnNlY3RGb3JQb2ludDQpCisgICAgICAg
IGZpbmRJbnRlcnNlY3Rpb25PbkxpbmVCZXR3ZWVuUG9pbnRzKGJvdW5kcy5wMSgpLCBib3VuZHMu
cDQoKSwgcDQsIHAzLCBwNCk7CisKKyAgICByZXR1cm4gRmxvYXRRdWFkKHAxLCBwMiwgcDMsIHA0
KTsKK30KKworc3RhdGljIHZvaWQgbGF5ZXJQYXRoV2l0aEhvbGUoQ0FTaGFwZUxheWVyICpsYXll
ciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgaG9sZVF1YWQp
Cit7CisgICAgLy8gTm90aGluZyB0byBzaG93LgorICAgIGlmIChvdXRlclF1YWQgPT0gaG9sZVF1
YWQgfHwgaG9sZVF1YWQuY29udGFpbnNRdWFkKG91dGVyUXVhZCkpIHsKKyAgICAgICAgbGF5ZXIu
cGF0aCA9IE5VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJZiB0aGVyZSBp
cyBhIG5lZ2F0aXZlIG1hcmdpbiAvIHBhZGRpbmcgdGhlbiB0aGUgb3V0ZXIgYm94IG1pZ2h0IG5v
dAorICAgIC8vIGZ1bGx5IGNvbnRhaW4gdGhlIGhvbGUgYm94LiBJbiBzdWNoIGNhc2VzIHdlIHJl
Y2FsY3VsYXRlIHRoZSBob2xlIHRvCisgICAgLy8gYmUgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUg
dHdvIHF1YWRzLgorICAgIEZsb2F0UXVhZCBpbm5lckhvbGU7CisgICAgaWYgKG91dGVyUXVhZC5j
b250YWluc1F1YWQoaG9sZVF1YWQpKQorICAgICAgICBpbm5lckhvbGUgPSBob2xlUXVhZDsKKyAg
ICBlbHNlCisgICAgICAgIGlubmVySG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBo
b2xlUXVhZCk7CisKKyAgICAvLyBDbG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVy
LUNsb2Nrd2lzZSBvdXRzaWRlIHJlY3QgKGZpbGwpLgorICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0
aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAw
LCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55
KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngo
KSwgaW5uZXJIb2xlLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAw
LCBpbm5lckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7CisgICAgQ0dQYXRoTW92
ZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkp
OworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwg
b3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBv
dXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGlu
ZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkp
OworICAgIGxheWVyLnBhdGggPSBwYXRoOworICAgIENHUGF0aFJlbGVhc2UocGF0aCk7Cit9CisK
K3N0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1
YWQmIG91dGVyUXVhZCkKK3sKKyAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVh
dGVNdXRhYmxlKCk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAx
KCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1Bh
dGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5w
MygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAy
KCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoOworICAg
IENHUGF0aFJlbGVhc2UocGF0aCk7Cit9CisKKy0gKHZvaWQpX2xheW91dEZvck5vZGVIaWdobGln
aHQ6KGNvbnN0IEhpZ2hsaWdodCYpaGlnaGxpZ2h0Cit7CisgICAgW3NlbGYgX2NyZWF0ZUxheWVy
czo0XTsKKworICAgIENBU2hhcGVMYXllciAqbWFyZ2luTGF5ZXIgPSBbX2xheWVycyBvYmplY3RB
dEluZGV4OjBdOworICAgIENBU2hhcGVMYXllciAqYm9yZGVyTGF5ZXIgPSBbX2xheWVycyBvYmpl
Y3RBdEluZGV4OjFdOworICAgIENBU2hhcGVMYXllciAqcGFkZGluZ0xheWVyID0gW19sYXllcnMg
b2JqZWN0QXRJbmRleDoyXTsKKyAgICBDQVNoYXBlTGF5ZXIgKmNvbnRlbnRMYXllciA9IFtfbGF5
ZXJzIG9iamVjdEF0SW5kZXg6M107CisKKyAgICBGbG9hdFF1YWQgbWFyZ2luUXVhZCA9IGhpZ2hs
aWdodC5xdWFkc1swXTsKKyAgICBGbG9hdFF1YWQgYm9yZGVyUXVhZCA9IGhpZ2hsaWdodC5xdWFk
c1sxXTsKKyAgICBGbG9hdFF1YWQgcGFkZGluZ1F1YWQgPSBoaWdobGlnaHQucXVhZHNbMl07Cisg
ICAgRmxvYXRRdWFkIGNvbnRlbnRRdWFkID0gaGlnaGxpZ2h0LnF1YWRzWzNdOworCisgICAgbWFy
Z2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGJvcmRlckxheWVyLmZpbGxDb2xvciA9IGNhY2hl
ZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFkZGlu
Z0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9y
ID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKworICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxheWVyLCBtYXJnaW5RdWFkLCBi
b3JkZXJRdWFkKTsKKyAgICBsYXllclBhdGhXaXRoSG9sZShib3JkZXJMYXllciwgYm9yZGVyUXVh
ZCwgcGFkZGluZ1F1YWQpOworICAgIGxheWVyUGF0aFdpdGhIb2xlKHBhZGRpbmdMYXllciwgcGFk
ZGluZ1F1YWQsIGNvbnRlbnRRdWFkKTsKKyAgICBsYXllclBhdGgoY29udGVudExheWVyLCBjb250
ZW50UXVhZCk7Cit9CisKKy0gKHZvaWQpX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Oihjb25zdCBI
aWdobGlnaHQmKWhpZ2hsaWdodAoreworICAgIE5TVUludGVnZXIgbnVtTGF5ZXJzID0gKE5TVUlu
dGVnZXIpaGlnaGxpZ2h0LnF1YWRzLnNpemUoKTsKKyAgICBpZiAoIW51bUxheWVycykgeworICAg
ICAgICBbc2VsZiBfcmVtb3ZlQWxsTGF5ZXJzXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFtzZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5ZXJzXTsKKworICAgIENHQ29sb3JSZWYgY29u
dGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1MYXllcnM7
ICsraSkgeworICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVyID0gW19sYXllcnMgb2JqZWN0QXRJ
bmRleDppXTsKKyAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVudENvbG9yOworICAgICAg
ICBsYXllclBhdGgobGF5ZXIsIGhpZ2hsaWdodC5xdWFkc1tpXSk7CisgICAgfQorfQorCistICh2
b2lkKXVwZGF0ZTooY29uc3QgSGlnaGxpZ2h0JiloaWdobGlnaHQKK3sKKyAgICBpZiAoaGlnaGxp
Z2h0LnR5cGUgPT0gSGlnaGxpZ2h0VHlwZU5vZGUpCisgICAgICAgIFtzZWxmIF9sYXlvdXRGb3JO
b2RlSGlnaGxpZ2h0OmhpZ2hsaWdodF07CisgICAgZWxzZSBpZiAoaGlnaGxpZ2h0LnR5cGUgPT0g
SGlnaGxpZ2h0VHlwZVJlY3RzKQorICAgICAgICBbc2VsZiBfbGF5b3V0Rm9yUmVjdHNIaWdobGln
aHQ6aGlnaGxpZ2h0XTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCA3ODQ2NzM4OTVkNDliYzJkNGM5N2Vi
Mzk1NzliMzE3ZTA3Y2Y0ODQ1Li45NzVmOGJiOTQ0ODUzNjMxMDU0NzQxNmMyZjY0YTYwMTIyMzIy
YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRHcm91cFByaXZhdGUuaCIKICNp
bXBvcnQgIldLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIgorI2ltcG9ydCAiV0tJbnNwZWN0b3JI
aWdobGlnaHRWaWV3LmgiCiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbEludGVy
bmFsLmgiCkBAIC01MCw3ICs1MSw2IEBACiAjaW1wb3J0IDxVSUtpdC9VSVdpbmRvd19Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xNzMsMjQ1ICsxNzMsNiBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAKIEBlbmQKIAot
Ci1AaW50ZXJmYWNlIFdLSW5zcGVjdG9ySGlnaGxpZ2h0VmlldyA6IFVJVmlldyB7Ci0gICAgTlNN
dXRhYmxlQXJyYXkgKl9sYXllcnM7IC8vIENBU2hhcGVMYXllcnMuCi19Ci0tICh2b2lkKXVwZGF0
ZTooY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0JiloaWdobGlnaHQ7Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KENHUmVjdClmcmFtZQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZV0pKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIF9sYXllcnMgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9p
ZClkZWFsbG9jCi17Ci0gICAgW3NlbGYgX3JlbW92ZUFsbExheWVyc107Ci0gICAgW19sYXllcnMg
cmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKV9yZW1vdmVBbGxM
YXllcnMKLXsKLSAgICBmb3IgKENBU2hhcGVMYXllciAqbGF5ZXIgaW4gX2xheWVycykKLSAgICAg
ICAgW2xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbX2xheWVycyByZW1vdmVBbGxP
YmplY3RzXTsKLX0KLQotLSAodm9pZClfY3JlYXRlTGF5ZXJzOihOU1VJbnRlZ2VyKW51bUxheWVy
cwotewotICAgIGlmIChbX2xheWVycyBjb3VudF0gPT0gbnVtTGF5ZXJzKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbc2VsZiBfcmVtb3ZlQWxsTGF5ZXJzXTsKLQotICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IG51bUxheWVyczsgKytpKSB7Ci0gICAgICAgIENBU2hhcGVMYXllciAqbGF5
ZXIgPSBbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtfbGF5ZXJzIGFkZE9i
amVjdDpsYXllcl07Ci0gICAgICAgIFtzZWxmLmxheWVyIGFkZFN1YmxheWVyOmxheWVyXTsKLSAg
ICAgICAgW2xheWVyIHJlbGVhc2VdOwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgZmluZEludGVy
c2VjdGlvbk9uTGluZUJldHdlZW5Qb2ludHMoY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZs
b2F0UG9pbnQmIHAyLCBjb25zdCBGbG9hdFBvaW50JiBkMSwgY29uc3QgRmxvYXRQb2ludCYgZDIs
IEZsb2F0UG9pbnQmIGludGVyc2VjdGlvbikgCi17Ci0gICAgLy8gRG8gdGhlIGxpbmVzIGludGVy
c2VjdD8KLSAgICBGbG9hdFBvaW50IHRlbXBvcmFyeUludGVyc2VjdGlvblBvaW50OwotICAgIGlm
ICghZmluZEludGVyc2VjdGlvbihwMSwgcDIsIGQxLCBkMiwgdGVtcG9yYXJ5SW50ZXJzZWN0aW9u
UG9pbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJcyB0aGUgaW50ZXJzZWN0
aW9uIGJldHdlZW4gdGhlIHR3byBwb2ludHMgb24gdGhlIGxpbmU/Ci0gICAgaWYgKHAxLngoKSA+
PSBwMi54KCkpIHsKLSAgICAgICAgaWYgKHRlbXBvcmFyeUludGVyc2VjdGlvblBvaW50LngoKSA+
IHAxLngoKSB8fCB0ZW1wb3JhcnlJbnRlcnNlY3Rpb25Qb2ludC54KCkgPCBwMi54KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHRlbXBvcmFy
eUludGVyc2VjdGlvblBvaW50LngoKSA+IHAyLngoKSB8fCB0ZW1wb3JhcnlJbnRlcnNlY3Rpb25Q
b2ludC54KCkgPCBwMS54KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IGlmIChwMS55KCkgPj0gcDIueSgpKSB7Ci0gICAgICAgIGlmICh0ZW1wb3JhcnlJbnRlcnNlY3Rp
b25Qb2ludC55KCkgPiBwMS55KCkgfHwgdGVtcG9yYXJ5SW50ZXJzZWN0aW9uUG9pbnQueSgpIDwg
cDIueSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICh0ZW1wb3JhcnlJbnRlcnNlY3Rpb25Qb2ludC55KCkgPiBwMi55KCkgfHwgdGVtcG9yYXJ5
SW50ZXJzZWN0aW9uUG9pbnQueSgpIDwgcDEueSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGludGVyc2VjdGlvbiA9IHRlbXBvcmFyeUludGVyc2VjdGlvblBvaW50
OwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBUaGlzIHF1YWQgaW50ZXJzZWN0aW9uIHdvcmtz
IGJlY2F1c2UgdGhlIHR3byBxdWFkcyBhcmUga25vd24gdG8gYmUgYXQgdGhlIHNhbWUKLS8vIHJv
dGF0aW9uIGFuZCBjbG9ja3dpc2UtbmVzcy4KLXN0YXRpYyBGbG9hdFF1YWQgcXVhZEludGVyc2Vj
dGlvbihGbG9hdFF1YWQgYm91bmRzLCBGbG9hdFF1YWQgdG9DbGFtcCkKLXsKLSAgICAvLyBSZXN1
bHRpbmcgcG9pbnRzLgotICAgIEZsb2F0UG9pbnQgcDEsIHAyLCBwMywgcDQ7Ci0gICAgYm9vbCBj
b250YWluc1BvaW50MSA9IGZhbHNlOwotICAgIGJvb2wgY29udGFpbnNQb2ludDIgPSBmYWxzZTsK
LSAgICBib29sIGNvbnRhaW5zUG9pbnQzID0gZmFsc2U7Ci0gICAgYm9vbCBjb250YWluc1BvaW50
NCA9IGZhbHNlOwotICAgIGJvb2wgaW50ZXJzZWN0Rm9yUG9pbnQxID0gZmFsc2U7Ci0gICAgYm9v
bCBpbnRlcnNlY3RGb3JQb2ludDIgPSBmYWxzZTsKLSAgICBib29sIGludGVyc2VjdEZvclBvaW50
MyA9IGZhbHNlOwotICAgIGJvb2wgaW50ZXJzZWN0Rm9yUG9pbnQ0ID0gZmFsc2U7Ci0KLSAgICAv
LyBUb3AgLyBib3R0b20gdmVydGljYWwgY2xhbXBpbmcuCi0gICAgaWYgKGJvdW5kcy5jb250YWlu
c1BvaW50KHRvQ2xhbXAucDEoKSkpIHsKLSAgICAgICAgY29udGFpbnNQb2ludDEgPSB0cnVlOwot
ICAgICAgICBwMSA9IHRvQ2xhbXAucDEoKTsKLSAgICB9IGVsc2UgaWYgKCEoaW50ZXJzZWN0Rm9y
UG9pbnQxID0gZmluZEludGVyc2VjdGlvbk9uTGluZUJldHdlZW5Qb2ludHMoYm91bmRzLnAxKCks
IGJvdW5kcy5wMigpLCB0b0NsYW1wLnAxKCksIHRvQ2xhbXAucDQoKSwgcDEpKSkKLSAgICAgICAg
cDEgPSB0b0NsYW1wLnAxKCk7Ci0KLSAgICBpZiAoYm91bmRzLmNvbnRhaW5zUG9pbnQodG9DbGFt
cC5wMigpKSkgewotICAgICAgICBjb250YWluc1BvaW50MiA9IHRydWU7Ci0gICAgICAgIHAyID0g
dG9DbGFtcC5wMigpOwotICAgIH0gZWxzZSBpZiAoIShpbnRlcnNlY3RGb3JQb2ludDIgPSBmaW5k
SW50ZXJzZWN0aW9uT25MaW5lQmV0d2VlblBvaW50cyhib3VuZHMucDEoKSwgYm91bmRzLnAyKCks
IHRvQ2xhbXAucDIoKSwgdG9DbGFtcC5wMygpLCBwMikpKQotICAgICAgICBwMiA9IHRvQ2xhbXAu
cDIoKTsKLQotICAgIGlmIChib3VuZHMuY29udGFpbnNQb2ludCh0b0NsYW1wLnAzKCkpKSB7Ci0g
ICAgICAgIGNvbnRhaW5zUG9pbnQzID0gdHJ1ZTsKLSAgICAgICAgcDMgPSB0b0NsYW1wLnAzKCk7
Ci0gICAgfSBlbHNlIGlmICghKGludGVyc2VjdEZvclBvaW50MyA9IGZpbmRJbnRlcnNlY3Rpb25P
bkxpbmVCZXR3ZWVuUG9pbnRzKGJvdW5kcy5wNCgpLCBib3VuZHMucDMoKSwgdG9DbGFtcC5wMigp
LCB0b0NsYW1wLnAzKCksIHAzKSkpCi0gICAgICAgIHAzID0gdG9DbGFtcC5wMygpOwotCi0gICAg
aWYgKGJvdW5kcy5jb250YWluc1BvaW50KHRvQ2xhbXAucDQoKSkpIHsKLSAgICAgICAgY29udGFp
bnNQb2ludDQgPSB0cnVlOwotICAgICAgICBwNCA9IHRvQ2xhbXAucDQoKTsKLSAgICB9IGVsc2Ug
aWYgKCEoaW50ZXJzZWN0Rm9yUG9pbnQ0ID0gZmluZEludGVyc2VjdGlvbk9uTGluZUJldHdlZW5Q
b2ludHMoYm91bmRzLnA0KCksIGJvdW5kcy5wMygpLCB0b0NsYW1wLnAxKCksIHRvQ2xhbXAucDQo
KSwgcDQpKSkKLSAgICAgICAgcDQgPSB0b0NsYW1wLnA0KCk7Ci0KLSAgICAvLyBJZiBvbmx5IG9u
ZSBvZiB0aGUgcG9pbnRzIGludGVyc2VjdGVkIG9uIGVpdGhlciB0aGUgdG9wIG9yIGJvdHRvbSBs
aW5lIHRoZW4gd2UKLSAgICAvLyBjYW4gY2xhbXAgdGhlIG90aGVyIHBvaW50IG9uIHRoYXQgbGlu
ZSB0byB0aGUgY29ybmVyIG9mIHRoZSBib3VuZHMuCi0gICAgaWYgKCFjb250YWluc1BvaW50MSAm
JiBpbnRlcnNlY3RGb3JQb2ludDIgJiYgIWludGVyc2VjdEZvclBvaW50MSkgewotICAgICAgICBj
b250YWluc1BvaW50MSA9IHRydWU7Ci0gICAgICAgIHAxID0gYm91bmRzLnAxKCk7Ci0gICAgfSBl
bHNlIGlmICghY29udGFpbnNQb2ludDIgJiYgaW50ZXJzZWN0Rm9yUG9pbnQxICYmICFpbnRlcnNl
Y3RGb3JQb2ludDIpIHsKLSAgICAgICAgY29udGFpbnNQb2ludDIgPSB0cnVlOwotICAgICAgICBw
MiA9IGJvdW5kcy5wMigpOwotICAgIH0KLSAgICBpZiAoIWNvbnRhaW5zUG9pbnQ0ICYmIGludGVy
c2VjdEZvclBvaW50MyAmJiAhaW50ZXJzZWN0Rm9yUG9pbnQ0KSB7Ci0gICAgICAgIGNvbnRhaW5z
UG9pbnQ0ID0gdHJ1ZTsKLSAgICAgICAgcDQgPSBib3VuZHMucDQoKTsKLSAgICB9IGVsc2UgaWYg
KCFjb250YWluc1BvaW50MyAmJiBpbnRlcnNlY3RGb3JQb2ludDQgJiYgIWludGVyc2VjdEZvclBv
aW50MykgewotICAgICAgICBjb250YWluc1BvaW50MyA9IHRydWU7Ci0gICAgICAgIHAzID0gYm91
bmRzLnAzKCk7Ci0gICAgfQotCi0gICAgLy8gTm93IHdlIG9ubHkgbmVlZCB0byBwZXJmb3JtIGhv
cml6b250YWwgY2xhbXBpbmcgZm9yIHVuYWRqdXN0ZWQgcG9pbnRzLgotICAgIGlmICghY29udGFp
bnNQb2ludDIgJiYgIWludGVyc2VjdEZvclBvaW50MikKLSAgICAgICAgZmluZEludGVyc2VjdGlv
bk9uTGluZUJldHdlZW5Qb2ludHMoYm91bmRzLnAyKCksIGJvdW5kcy5wMygpLCBwMSwgcDIsIHAy
KTsKLSAgICBpZiAoIWNvbnRhaW5zUG9pbnQzICYmICFpbnRlcnNlY3RGb3JQb2ludDMpCi0gICAg
ICAgIGZpbmRJbnRlcnNlY3Rpb25PbkxpbmVCZXR3ZWVuUG9pbnRzKGJvdW5kcy5wMigpLCBib3Vu
ZHMucDMoKSwgcDQsIHAzLCBwMyk7Ci0gICAgaWYgKCFjb250YWluc1BvaW50MSAmJiAhaW50ZXJz
ZWN0Rm9yUG9pbnQxKQotICAgICAgICBmaW5kSW50ZXJzZWN0aW9uT25MaW5lQmV0d2VlblBvaW50
cyhib3VuZHMucDEoKSwgYm91bmRzLnA0KCksIHAxLCBwMiwgcDEpOwotICAgIGlmICghY29udGFp
bnNQb2ludDQgJiYgIWludGVyc2VjdEZvclBvaW50NCkKLSAgICAgICAgZmluZEludGVyc2VjdGlv
bk9uTGluZUJldHdlZW5Qb2ludHMoYm91bmRzLnAxKCksIGJvdW5kcy5wNCgpLCBwNCwgcDMsIHA0
KTsKLQotICAgIHJldHVybiBGbG9hdFF1YWQocDEsIHAyLCBwMywgcDQpOwotfQotCi1zdGF0aWMg
dm9pZCBsYXllclBhdGhXaXRoSG9sZShDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1
YWQmIG91dGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBob2xlUXVhZCkKLXsKLSAgICAvLyBOb3Ro
aW5nIHRvIHNob3cuCi0gICAgaWYgKG91dGVyUXVhZCA9PSBob2xlUXVhZCB8fCBob2xlUXVhZC5j
b250YWluc1F1YWQob3V0ZXJRdWFkKSkgewotICAgICAgICBsYXllci5wYXRoID0gTlVMTDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbmVnYXRpdmUgbWFy
Z2luIC8gcGFkZGluZyB0aGVuIHRoZSBvdXRlciBib3ggbWlnaHQgbm90Ci0gICAgLy8gZnVsbHkg
Y29udGFpbiB0aGUgaG9sZSBib3guIEluIHN1Y2ggY2FzZXMgd2UgcmVjYWxjdWxhdGUgdGhlIGhv
bGUgdG8KLSAgICAvLyBiZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSB0d28gcXVhZHMuCi0gICAg
RmxvYXRRdWFkIGlubmVySG9sZTsKLSAgICBpZiAob3V0ZXJRdWFkLmNvbnRhaW5zUXVhZChob2xl
UXVhZCkpCi0gICAgICAgIGlubmVySG9sZSA9IGhvbGVRdWFkOwotICAgIGVsc2UKLSAgICAgICAg
aW5uZXJIb2xlID0gcXVhZEludGVyc2VjdGlvbihvdXRlclF1YWQsIGhvbGVRdWFkKTsKLQotICAg
IC8vIENsb2Nrd2lzZSBpbnNpZGUgcmVjdCAoaG9sZSksIENvdW50ZXItQ2xvY2t3aXNlIG91dHNp
ZGUgcmVjdCAoZmlsbCkuCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMSgp
LngoKSwgaW5uZXJIb2xlLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRo
LCAwLCBpbm5lckhvbGUucDIoKS54KCksIGlubmVySG9sZS5wMigpLnkoKSk7Ci0gICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMo
KS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wNCgp
LngoKSwgaW5uZXJIb2xlLnA0KCkueSgpKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAw
LCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55
KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMygpLngo
KSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAw
LCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Ci0gICAgbGF5ZXIucGF0
aCA9IHBhdGg7Ci0gICAgQ0dQYXRoUmVsZWFzZShwYXRoKTsKLX0KLQotc3RhdGljIHZvaWQgbGF5
ZXJQYXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQot
ewotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAg
ICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVh
ZC5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFk
LnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50
KHBhdGgsIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKLSAgICBD
R1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVh
ZC5wMigpLnkoKSk7Ci0gICAgbGF5ZXIucGF0aCA9IHBhdGg7Ci0gICAgQ0dQYXRoUmVsZWFzZShw
YXRoKTsKLX0KLQotLSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooY29uc3QgSGlnaGxp
Z2h0JiloaWdobGlnaHQKLXsKLSAgICBbc2VsZiBfY3JlYXRlTGF5ZXJzOjRdOwotCi0gICAgQ0FT
aGFwZUxheWVyICptYXJnaW5MYXllciA9IFtfbGF5ZXJzIG9iamVjdEF0SW5kZXg6MF07Ci0gICAg
Q0FTaGFwZUxheWVyICpib3JkZXJMYXllciA9IFtfbGF5ZXJzIG9iamVjdEF0SW5kZXg6MV07Ci0g
ICAgQ0FTaGFwZUxheWVyICpwYWRkaW5nTGF5ZXIgPSBbX2xheWVycyBvYmplY3RBdEluZGV4OjJd
OwotICAgIENBU2hhcGVMYXllciAqY29udGVudExheWVyID0gW19sYXllcnMgb2JqZWN0QXRJbmRl
eDozXTsKLQotICAgIEZsb2F0UXVhZCBtYXJnaW5RdWFkID0gaGlnaGxpZ2h0LnF1YWRzWzBdOwot
ICAgIEZsb2F0UXVhZCBib3JkZXJRdWFkID0gaGlnaGxpZ2h0LnF1YWRzWzFdOwotICAgIEZsb2F0
UXVhZCBwYWRkaW5nUXVhZCA9IGhpZ2hsaWdodC5xdWFkc1syXTsKLSAgICBGbG9hdFF1YWQgY29u
dGVudFF1YWQgPSBoaWdobGlnaHQucXVhZHNbM107Ci0KLSAgICBtYXJnaW5MYXllci5maWxsQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5tYXJnaW5Db2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0gICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGln
aHQuYm9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhZGRpbmdMYXllci5m
aWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5wYWRkaW5nQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgIGNvbnRlbnRMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9y
KGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotCi0gICAgbGF5
ZXJQYXRoV2l0aEhvbGUobWFyZ2luTGF5ZXIsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQpOwotICAg
IGxheWVyUGF0aFdpdGhIb2xlKGJvcmRlckxheWVyLCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCk7
Ci0gICAgbGF5ZXJQYXRoV2l0aEhvbGUocGFkZGluZ0xheWVyLCBwYWRkaW5nUXVhZCwgY29udGVu
dFF1YWQpOwotICAgIGxheWVyUGF0aChjb250ZW50TGF5ZXIsIGNvbnRlbnRRdWFkKTsKLX0KLQot
LSAodm9pZClfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6KGNvbnN0IEhpZ2hsaWdodCYpaGlnaGxp
Z2h0Ci17Ci0gICAgTlNVSW50ZWdlciBudW1MYXllcnMgPSAoTlNVSW50ZWdlciloaWdobGlnaHQu
cXVhZHMuc2l6ZSgpOwotICAgIGlmICghbnVtTGF5ZXJzKSB7Ci0gICAgICAgIFtzZWxmIF9yZW1v
dmVBbGxMYXllcnNdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW3NlbGYgX2NyZWF0
ZUxheWVyczpudW1MYXllcnNdOwotCi0gICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBjYWNo
ZWRDR0NvbG9yKGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVyczsgKytpKSB7Ci0gICAgICAg
IENBU2hhcGVMYXllciAqbGF5ZXIgPSBbX2xheWVycyBvYmplY3RBdEluZGV4OmldOwotICAgICAg
ICBsYXllci5maWxsQ29sb3IgPSBjb250ZW50Q29sb3I7Ci0gICAgICAgIGxheWVyUGF0aChsYXll
ciwgaGlnaGxpZ2h0LnF1YWRzW2ldKTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpdXBkYXRlOihjb25z
dCBIaWdobGlnaHQmKWhpZ2hsaWdodAotewotICAgIGlmIChoaWdobGlnaHQudHlwZSA9PSBIaWdo
bGlnaHRUeXBlTm9kZSkKLSAgICAgICAgW3NlbGYgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6aGln
aGxpZ2h0XTsKLSAgICBlbHNlIGlmIChoaWdobGlnaHQudHlwZSA9PSBIaWdobGlnaHRUeXBlUmVj
dHMpCi0gICAgICAgIFtzZWxmIF9sYXlvdXRGb3JSZWN0c0hpZ2hsaWdodDpoaWdobGlnaHRdOwot
fQotCi1AZW5kCi0KLQogQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFZpZXcgewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlQ2xpZW50SW1wbD4gX3BhZ2VDbGllbnQ7CiAgICAgUmV0YWluUHRyPFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcj4gX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZWE3NGY0MWViNDQ3MGMyNWI5MmU1NWRiMzA1YTc5ZGY3YmU3ZDczNS4uN2Y4NWMxNDI1ZDBl
ODdjM2QzMTMwYjhhNWY4NDBlNjBjZjNkY2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjksNiArNjksOCBAQAogCQkwRjBD
MzY1RTE4QzExMEE1MDBGNjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjVEMThDMTEwQTUwMEY2
MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLm1tICovOyB9OwogCQkwRjE3NEFBMzE0MkE0Q0I3
MDAzOTI1MEYgLyogQVBJR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMTc0QUEyMTQyQTRDQjYwMDM5MjUwRiAvKiBBUElHZW9tZXRyeS5o
ICovOyB9OwogCQkwRjE3NEFBNzE0MkFBQzYxMDAzOTI1MEYgLyogV0tHZW9tZXRyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE3NEFBNjE0MkFB
QzYxMDAzOTI1MEYgLyogV0tHZW9tZXRyeS5jcHAgKi87IH07CisJCTBGM0M3MjVCMTk2RjYwNEUw
MEFFREQwQyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0M3MjU5MTk2RjVGNjgwMEFFREQwQyAvKiBX
S0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCAqLzsgfTsKKwkJMEYzQzcyNUMxOTZGNjA1MjAwQUVE
RDBDIC8qIFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0M3MjU3MTk2RjVGNTAwMEFFREQwQyAvKiBXS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW0gKi87IH07CiAJCTBGNTk0NzkwMTg3QjNCM0EwMDQzNzg1
NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1OTQ3OEQxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggKi87IH07CiAJCTBGNTk0NzkyMTg3QjNCM0EwMDQzNzg1
NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTk0NzhGMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSAqLzsgfTsKIAkJMEY1OTQ3OUExODdCM0I2MDAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1OTQ3OTQxODdCM0I2MDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwICovOyB9OwpAQCAtMTk5Miw2
ICsxOTk0LDggQEAKIAkJMEYwQzM2NUQxOEMxMTBBNTAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBMYXllclJl
cHJlc2VudGF0aW9uLm1tOyBwYXRoID0gaW9zL0xheWVyUmVwcmVzZW50YXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTc0QUEyMTQyQTRDQjYwMDM5MjUwRiAvKiBBUElH
ZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElHZW9tZXRyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE3NEFBNjE0MkFBQzYxMDAzOTI1MEYg
LyogV0tHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S0dlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQzcyNTcxOTZG
NUY1MDAwQUVERDBDIC8qIFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQzcyNTkxOTZGNUY2ODAwQUVERDBDIC8q
IFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1OTQ3OEQxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmg7IHBhdGggPSBTY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1OTQ3OEUxODdCM0IzQTAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOyBwYXRoID0g
U2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU5NDc4RjE4N0IzQjNBMDA0Mzc4NTcgLyogUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbTsgcGF0aCA9IFNjcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ4MjgsNiArNDgzMiw4IEBACiAJCQkJMEZDQjRFM0YxOEJCRTA0NDAwMEZDRkM5IC8qIFdL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5oICovLAogCQkJCTBGQ0I0RTQwMThCQkUwNDQwMDBGQ0ZD
OSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gKi8sCiAJCQkJMEZDQjRFNDExOEJCRTA0
NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5t
bSAqLywKKwkJCQkwRjNDNzI1OTE5NkY1RjY4MDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3LmggKi8sCisJCQkJMEYzQzcyNTcxOTZGNUY1MDAwQUVERDBDIC8qIFdLSW5zcGVjdG9y
SGlnaGxpZ2h0Vmlldy5tbSAqLywKIAkJCQlBNTQyOTNBMjE5NUE0M0M2MDAyNzgyQzcgLyogV0tJ
bnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKIAkJCQlBNTQyOTNBMzE5
NUE0M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
bW0gKi8sCiAJCQkJMEZDQjRFNDQxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xsVmlldy5oICov
LApAQCAtNzIxNyw2ICs3MjIzLDcgQEAKIAkJCQk1MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyog
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4
NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxREQ5RjI5MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNDNzI1QjE5NkY2
MDRFMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3OTU1NzExNjI4NzdEMjAw
RkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKQEAgLTkwMTYsNiArOTAyMyw3IEBACiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8q
IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTY0MjBFNDEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFibGVCaXRtYXBD
Ry5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNDNzI1QzE5NkY2MDUyMDBBRUREMEMgLyogV0tJ
bnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUY3NTA2QUYxODU5
MTYyODAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MTIxNzQ2MDE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyNEJGM0ExMjA4OTZBNjAwRkJCMDU5IC8qIFNoYXJl
ZE1lbW9yeU1hYy5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="259275"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>