<?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>91593</bug_id>
          
          <creation_ts>2012-07-18 00:10:13 -0700</creation_ts>
          <short_desc>Implement datalist UI for input type color</short_desc>
          <delta_ts>2013-10-15 17:24:08 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92075</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>peter</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672062</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-18 00:10:13 -0700</bug_when>
    <thetext>Implement a color palette UI for an input type=color with a datalist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672152</commentid>
    <comment_count>1</comment_count>
      <attachid>152967</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-18 02:23:00 -0700</bug_when>
    <thetext>Created attachment 152967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672185</commentid>
    <comment_count>2</comment_count>
      <attachid>152967</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-18 03:10:37 -0700</bug_when>
    <thetext>Comment on attachment 152967
Patch

This doesn&apos;t look a good design.

We should pass color choices in the linked &lt;datalist&gt; to ColorChooser, and the color choice support should be implemented in platform-specific layers because Windows&apos; ChooseColor() has a feature to specify predefined colors (CHOOSECOLOR::lpCustColors) and OSX&apos;s NSColorPicker has attachColorList. Using PagePopup should be a remedy for platforms of which color choosers have no such capability, or it would be a common UI for a multiplatform port like Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676550</commentid>
    <comment_count>3</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-24 02:17:09 -0700</bug_when>
    <thetext>Moved patch to 92075 because it is just for the chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940203</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-10-15 17:24:08 -0700</bug_when>
    <thetext>This was for Chromium.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152967</attachid>
            <date>2012-07-18 02:23:00 -0700</date>
            <delta_ts>2012-07-18 03:10:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91593-20120718182258.patch</filename>
            <type>text/plain</type>
            <size>52099</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxZmU5OWIxM2Q2ODkx
ZTg2MzBkOTU2MWI0YTQ0NThmMzUzMzI0NzYxLi5mZGQzNWE1Nzc2N2E5MGNlNGMwYjRjOWI0YTBh
NDkzMWM3MWRmM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNy0xOCAg
S2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
ZGF0YWxpc3QgVUkgZm9yIGlucHV0IHR5cGUgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTG9jYWxpemVkU3Ry
aW5nLmg6CisKIDIwMTItMDctMTMgIFRvbnkgUGF5bmUgIDx0cGF5bmVAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSBXaWRnZXQgZnJvbSBzY3JlZW5Db2xvclByb2ZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBiY2IwNTI0YmVmODFkZDA1YzIxNDE4YWU3MmZlOTkwNWRiZjgzNGJmLi5lNDA3MjkwMGQy
ZTNhMmYwZmY0OTBhOGQ4YjUyYjg1YmQ1MGExMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTItMDctMTggIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgSW1wbGVtZW50IGRhdGFsaXN0IFVJIGZvciBpbnB1dCB0eXBlIGNvbG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU5MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIG9uIGFuIGlu
cHV0IHR5cGU9Y29sb3IgZWxlbWVudCBvcGVucyBhIGNvbG9yIHBpY2tlciBwb3B1cAorICAgICAg
ICB3aXRoIGNvbG9yIHN3YXRjaGVzIGxhaWQgb3V0IGluIGEgNXg0IGdyaWQuCisKKyAgICAgICAg
VGVzdDogZmFzdC9mb3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5jZS5odG1sCisKKyAg
ICAgICAgKiBSZXNvdXJjZXMvY29sb3JQaWNrZXIuY3NzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmguCisgICAgICAgIChib2R5KToKKyAgICAgICAgKCNt
YWluKToKKyAgICAgICAgKC5jb2xvci1zd2F0Y2gpOgorICAgICAgICAoLmNvbG9yLXN3YXRjaDpo
b3Zlcik6CisgICAgICAgICguY29sb3Itc3dhdGNoLWNvbnRhaW5lcik6CisgICAgICAgICgub3Ro
ZXItY29sb3IpOgorICAgICAgICAqIFJlc291cmNlcy9jb2xvclBpY2tlci5qczogQWRkZWQuCisg
ICAgICAgIChnZXRTY3JvbGxiYXJXaWR0aCk6IENhbGN1bGF0ZSB0aGUgc2Nyb2xsYmFyIHdpZHRo
LiBXZSBuZWVkIHRvIGV4cGFuZCB0aGUgd2luZG93IHdpZHRoIHdoZW4gd2UgbmVlZCBhIHNjcm9s
bGJhci4KKyAgICAgICAgKGNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoaGFuZGxlTWVzc2FnZSk6
CisgICAgICAgIChpbml0aWFsaXplKToKKyAgICAgICAgKGhhbmRsZUFyZ3VtZW50c1RpbWVvdXQp
OgorICAgICAgICAodmFsaWRhdGVBcmd1bWVudHMpOgorICAgICAgICAoc3VibWl0VmFsdWUpOgor
ICAgICAgICAoaGFuZGxlQ2FuY2VsKToKKyAgICAgICAgKGNob29zZU90aGVyQ29sb3IpOgorICAg
ICAgICAoQ29sb3JQaWNrZXIpOgorICAgICAgICAoQ29sb3JQaWNrZXIucHJvdG90eXBlLmxheW91
dCk6IExheXMgb3V0IGEgZ3JpZCBvZiBjb2xvciBzd2F0Y2hlcy4KKyAgICAgICAgKENvbG9yUGlj
a2VyLnByb3RvdHlwZS5faGFuZGxlU3dhdGNoQ2xpY2spOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBodG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpoYW5k
bGVNb3VzZURvd25FdmVudCk6IFdlIG5lZWQgdG8gb3BlbiB0aGUgY29sb3IgcGlja2VyIHBvcHVw
IGluIHRoZSBtb3VzZSBkb3duIGV2ZW50IHNvIHRoYXQKKyAgICAgICAgV2ViS2l0OjpXZWJWaWV3
SW1wbDo6aGFuZGxlTW91c2VEb3duIGNhbiBkZWNpZGUgd2hldGhlciB0byBrZWVwIGl0IG9wZW4g
b3Igbm90LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0
VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudCk6IFdlIHdpbGwgb3BlbiB0aGUgY29sb3IgcGlj
a2VyIHBvcHVwIGhlcmUgdG9vLCBpbiBjYXNlIGVsZW1lbnQuY2xpY2soKQorICAgICAgICB3YXMg
Y2FsbGVkIGluIGphdmFzY3JpcHQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6
Y29udGVudFNpemUpOiBDb250ZW50IHNpemUgd2lsbCBiZSByZXNldCBmcm9tIHRoZSBqYXZhc2Ny
aXB0IGluIHRoZSBwYWdlIHBvcHVwLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6
OndyaXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnNldFZh
bHVlQW5kQ2xvc2VQb3B1cCk6IE9wZW4gdGhlIGNvbG9yIGNob29zZXIgaWYgdGhlIG51bVZhbHVl
IGlzIENob29zZU90aGVyQ29sb3JBY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0
VHlwZTo6ZGlkQ2xvc2VQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6
Y2xvc2VQb3B1cCk6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Q29sb3JJbnB1dFR5
cGUpOgorICAgICAgICAoQ29sb3JJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nh
bGVuZGFyUGlja2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tl
ckVsZW1lbnQ6OndyaXRlRG9jdW1lbnQpOiBNb2RpZmllZCB0byB1c2UgUGFnZVBvcHVwVXRpbC4K
KyAgICAgICAgKiBwYWdlL1BhZ2VQb3B1cFV0aWwuY3BwOiBBZGRlZC4gU28gdGhlIG1ldGhvZHMg
Y2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBQb3B1cFBhZ2VDbGllbnRzLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBVdGlsOjphZGRKYXZhU2NyaXB0U3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VQb3B1cFV0aWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC9Db2xvcklucHV0VHlwZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYWdl
UG9wdXBVdGlsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cFV0aWw6OmFkZFN0cmluZyk6
CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Db21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUNvbW1vbjo6c3VwcG9ydHNEYXRh
TGlzdFVJKTogQWRkZWQgY29sb3IuCisKIDIwMTItMDctMTcgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIE1vdmUgY29kZXMgcmVsYXRlZCB0byB0
aGVtZSBzZXR0aW5nIGZyb20gV2lkZ2V0IHRvIFJlbmRlclRoZW1lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDgyMjcyYjFlZDE3MzRhNDg3MDc3NTU4YWY1OGM1NzU3MmRkN2M2ZjcuLmNh
ZWZiNGZlYTMzYjRkMTBmNzMyYzNkMzcyNzFlNzkyMTE0YzQwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMTggIEtlaXNoaSBIYXR0b3JpICA8
a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IGRhdGFsaXN0IFVJIGZvciBp
bnB1dCB0eXBlIGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTU5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Ro
ZXJDb2xvckxhYmVsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHNyYy9XZWJQYWdl
UG9wdXBJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6Omhhc1NhbWVQ
b3B1cENsaWVudCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgV2ViUGFnZVBvcHVwSW1w
bCBoYXMgdGhlIHNhbWUgcG9wdXAgY2xpZW50LgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZURvd24pOiBDbG9z
ZXMgdGhlIHBhZ2UgcG9wdXAgaWYgdGhlIHBhZ2UgaXMgY2xpY2tlZC4gSWYgdGhlIHVzZXIgY2xp
Y2tzIG9uIHRoZSBlbGVtZW50CisgICAgICAgIHRoYXQgb3BlbmVkIHRoZSBwYWdlIHBvcHVwLCB0
aGUgc2FtZSBwYWdlIHBvcHVwIHdpbGwgY2xvc2UgYW5kIG9wZW4sIHNvIHRvIGF2b2lkIHRoYXQg
d2UgY2hlY2sgaGFzU2FtZVBvcHVwQ2xpZW50LgorCiAyMDEyLTA3LTE2ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmVtb3ZlIHR3byBlbXB0
eSBkaXJlY3Rvcmllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTG9jYWxpemVkU3RyaW5nLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxvY2FsaXplZFN0cmluZy5oCmluZGV4IDVlNzc0OGVjNjZhNjM1MTRkNGIzMjI2MDNmMDVj
ZDEzM2ZmMTFjN2EuLjQxOWRmYjI0MjE1NmU4MjE2NzhjOTYyZDc3ZDY2NjQyOGI1ODUwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTG9jYWxpemVkU3Ry
aW5nLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRT
dHJpbmcuaApAQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3QgV2ViTG9jYWxpemVkU3RyaW5nIHsKICAg
ICAgICAgS2V5Z2VuTWVudU1lZGl1bUdyYWRlS2V5U2l6ZSwKICAgICAgICAgTWlzc2luZ1BsdWdp
blRleHQsCiAgICAgICAgIE11bHRpcGxlRmlsZVVwbG9hZFRleHQsCisgICAgICAgIE90aGVyQ29s
b3JMYWJlbCwKICAgICAgICAgUmVzZXRCdXR0b25EZWZhdWx0TGFiZWwsCiAgICAgICAgIFNlYXJj
aGFibGVJbmRleEludHJvZHVjdGlvbiwKICAgICAgICAgU2VhcmNoTWVudUNsZWFyUmVjZW50U2Vh
cmNoZXNUZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2NvbG9yUGlj
a2VyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9jb2xvclBpY2tlci5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDgyNDY0MDgxZjg3NjI2ZmRiY2U1ZjdhZmZmNGIwNTZiYTE0OGZiMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9jb2xvclBpY2tlci5jc3MKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK2JvZHkgeworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgZm9udDogLXdlYmtpdC1zbWFsbC1jb250cm9sOwor
ICAgIG1hcmdpbjogMDsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCisjbWFpbiB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgYm9yZGVyOiBzb2xpZCAxcHggIzg4OTlhYTsK
KyAgICBib3gtc2hhZG93OiBpbnNldCAycHggMnB4IDJweCB3aGl0ZSwKKyAgICAgICAgaW5zZXQg
LTJweCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMSk7CisgICAgcGFkZGluZzogNnB4OworICAgIGZs
b2F0OiBsZWZ0OworfQorCisuY29sb3Itc3dhdGNoIHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB3
aWR0aDogMjBweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgbWFyZ2luOiAxcHg7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgI2UwZTBlMDsKK30KKworLmNvbG9yLXN3YXRjaDpob3ZlciB7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgIzAwMDAwMDsKKyAgICBtYXJnaW46IDFweDsKK30KKworLmNvbG9y
LXN3YXRjaC1jb250YWluZXIgeworICAgIHdpZHRoOiAxMDAlOworICAgIG1heC1oZWlnaHQ6IDEw
NHB4OworICAgIG92ZXJmbG93OiBhdXRvOworfQorCisub3RoZXItY29sb3IgeworICAgIHdpZHRo
OiAxMDAlOworICAgIG1hcmdpbjogNHB4IDAgMCAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL2NvbG9yUGlja2VyLmpzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L2NvbG9yUGlja2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNDkwOGFkOWNhMmZmMjM0ODE3N2FhYWQ1MDk0
YWY3ZThhNzcyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
Y29sb3JQaWNrZXIuanMKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2YXIgZ2xvYmFsID0geworICAgIGFyZ3Vt
ZW50c1JlY2VpdmVkOiBmYWxzZQorfTsKKworLyoqCisgKiBAcGFyYW0geyFzdHJpbmd9IGlkCisg
Ki8KK2Z1bmN0aW9uICQoaWQpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpOworfQorCitmdW5jdGlvbiBiaW5kKGZ1bmMsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7
CisgICAgfTsKK30KKwordmFyIHNjcm9sbGJhcldpZHRoID0gbnVsbDsKK2Z1bmN0aW9uIGdldFNj
cm9sbGJhcldpZHRoKCkgeworICBpZiAoc2Nyb2xsYmFyV2lkdGggPT09IG51bGwpIHsKKyAgICB2
YXIgc2Nyb2xsRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgc2Nyb2xs
RGl2LnN0eWxlLm9wYWNpdHkgPSAiMCI7CisgICAgc2Nyb2xsRGl2LnN0eWxlLm92ZXJmbG93ID0g
InNjcm9sbCI7CisgICAgc2Nyb2xsRGl2LnN0eWxlLndpZHRoID0gIjUwcHgiOworICAgIHNjcm9s
bERpdi5zdHlsZS5oZWlnaHQgPSAiNTBweCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChzY3JvbGxEaXYpOworICAgIHNjcm9sbGJhcldpZHRoID0gc2Nyb2xsRGl2Lm9mZnNldFdpZHRo
IC0gc2Nyb2xsRGl2LmNsaWVudFdpZHRoOworICAgIHNjcm9sbERpdi5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKHNjcm9sbERpdik7CisgIH0KKyAgcmV0dXJuIHNjcm9sbGJhcldpZHRoOworfQorCisv
KioKKyAqIEBwYXJhbSB7IXN0cmluZ30gdGFnTmFtZQorICogQHBhcmFtIHtzdHJpbmc9fSBvcHRf
Y2xhc3MKKyAqIEBwYXJhbSB7c3RyaW5nPX0gb3B0X3RleHQKKyAqIEByZXR1cm4geyFFbGVtZW50
fQorICovCitmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIG9wdF9jbGFzcywgb3B0X3Rl
eHQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7
CisgICAgaWYgKG9wdF9jbGFzcykKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsYXNz
Iiwgb3B0X2NsYXNzKTsKKyAgICBpZiAob3B0X3RleHQpCisgICAgICAgIGVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUob3B0X3RleHQpKTsKKyAgICByZXR1cm4gZWxl
bWVudDsKK30KKworLyoqCisgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICovCitmdW5jdGlvbiBo
YW5kbGVNZXNzYWdlKGV2ZW50KSB7CisgICAgaW5pdGlhbGl6ZShKU09OLnBhcnNlKGV2ZW50LmRh
dGEpKTsKKyAgICBnbG9iYWwuYXJndW1lbnRzUmVjZWl2ZWQgPSB0cnVlOworfQorCisvKioKKyAq
IEBwYXJhbSB7IU9iamVjdH0gYXJncworICovCitmdW5jdGlvbiBpbml0aWFsaXplKGFyZ3MpIHsK
KyAgICB2YXIgbWFpbiA9ICQoIm1haW4iKTsKKyAgICBtYWluLmlubmVySFRNTCA9ICIiOworICAg
IHZhciBlcnJvclN0cmluZyA9IHZhbGlkYXRlQXJndW1lbnRzKGFyZ3MpOworICAgIGlmIChlcnJv
clN0cmluZykKKyAgICAgICAgbWFpbi50ZXh0Q29udGVudCA9ICJJbnRlcm5hbCBlcnJvcjogIiAr
IGVycm9yU3RyaW5nOworICAgIGVsc2UKKyAgICAgICAgbmV3IENvbG9yUGlja2VyKG1haW4sIGFy
Z3MpOworfQorCit2YXIgREVGQVVMVF9DT0xPUl9QQUxFVFRFID0gWyIjMDAwMDAwIiwgIiM0MDQw
NDAiLCAiIzgwODA4MCIsICIjYzBjMGMwIiwgIiNmZmZmZmYiLCAiIzk4MDAwMCIsCisiI2ZmMDAw
MCIsICIjZmY5OTAwIiwgIiNmZmZmMDAiLCAiIzAwZmYwMCIsICIjMDBmZmZmIiwgIiM0YTg2ZTgi
LCAiIzAwMDBmZiIsICIjOTkwMGZmIiwKKyIjZmYwMGZmIl07CisKK2Z1bmN0aW9uIGhhbmRsZUFy
Z3VtZW50c1RpbWVvdXQoKSB7CisgICAgaWYgKGdsb2JhbC5hcmd1bWVudHNSZWNlaXZlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIHZhciBhcmdzID0geworICAgICAgICB2YWx1ZXMgOiBERUZBVUxU
X0NPTE9SX1BBTEVUVEUsCisgICAgICAgIG90aGVyQ29sb3JMYWJlbDogIk90aGVyLi4uIgorICAg
IH07CisgICAgaW5pdGlhbGl6ZShhcmdzKTsKK30KKworLyoqCisgKiBAcGFyYW0geyFPYmplY3R9
IGFyZ3MKKyAqIEByZXR1cm4gez9zdHJpbmd9IEFuIGVycm9yIG1lc3NhZ2UsIG9yIG51bGwgaWYg
dGhlIGFyZ3VtZW50IGhhcyBubyBlcnJvcnMuCisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlQXJndW1l
bnRzKGFyZ3MpIHsKKyAgICBpZiAoIWFyZ3MudmFsdWVzKQorICAgICAgICByZXR1cm4gIk5vIHZh
bHVlcy4iOworICAgIGlmICghYXJncy5vdGhlckNvbG9yTGFiZWwpCisgICAgICAgIHJldHVybiAi
Tm8gb3RoZXJDb2xvckxhYmVsLiI7CisgICAgcmV0dXJuIG51bGw7Cit9CisKK3ZhciBBY3Rpb25z
ID0geworICAgIENob29zZU90aGVyQ29sb3I6IC0yLAorICAgIENhbmNlbDogLTEsCisgICAgU2V0
VmFsdWU6IDAKK307CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCisgKi8KK2Z1bmN0
aW9uIHN1Ym1pdFZhbHVlKHZhbHVlKSB7CisgICAgd2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIu
c2V0VmFsdWVBbmRDbG9zZVBvcHVwKEFjdGlvbnMuU2V0VmFsdWUsIHZhbHVlKTsKK30KKworZnVu
Y3Rpb24gaGFuZGxlQ2FuY2VsKCkgeworICAgIHdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cChBY3Rpb25zLkNhbmNlbCwgIiIpOworfQorCitmdW5jdGlvbiBj
aG9vc2VPdGhlckNvbG9yKCkgeworICAgIHdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnNldFZh
bHVlQW5kQ2xvc2VQb3B1cChBY3Rpb25zLkNob29zZU90aGVyQ29sb3IsICIiKTsKK30KKworZnVu
Y3Rpb24gQ29sb3JQaWNrZXIoZWxlbWVudCwgY29uZmlnKSB7CisgICAgdGhpcy5lbGVtZW50ID0g
ZWxlbWVudDsKKyAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZzsKKyAgICBpZiAodGhpcy5jb25maWcu
dmFsdWVzLmxlbmd0aCA9PT0gMCkKKyAgICAgICAgdGhpcy5jb25maWcudmFsdWVzID0gREVGQVVM
VF9DT0xPUl9QQUxFVFRFOworICAgIHRoaXMubGF5b3V0KCk7Cit9CisKK3ZhciBTV0FUQ0hfU0la
RSA9IDI0OyAvLyBrZWVwIGluIHN5bmMgd2l0aCBDU1MKK3ZhciBTV0FUQ0hFU19QRVJfUk9XID0g
NTsKK3ZhciBTV0FUQ0hFU19NQVhfUk9XUyA9IDQ7CisKK0NvbG9yUGlja2VyLnByb3RvdHlwZS5s
YXlvdXQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgi
ZGl2IiwgImNvbG9yLXN3YXRjaC1jb250YWluZXIiKTsKKyAgICBjb250YWluZXIuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBiaW5kKHRoaXMuX2hhbmRsZVN3YXRjaENsaWNrLCB0aGlzKSwgZmFs
c2UpOworICAgIGZvciAodmFyIGkgPSAwOyBpICA8IHRoaXMuY29uZmlnLnZhbHVlcy5sZW5ndGg7
IGkgKyspIHsKKyAgICAgICAgdmFyIHN3YXRjaCA9IGNyZWF0ZUVsZW1lbnQoImRpdiIsICJjb2xv
ci1zd2F0Y2giKTsKKyAgICAgICAgc3dhdGNoLnZhbHVlID0gdGhpcy5jb25maWcudmFsdWVzW2ld
OworICAgICAgICBzd2F0Y2gudGl0bGUgPSB0aGlzLmNvbmZpZy52YWx1ZXNbaV07CisgICAgICAg
IHN3YXRjaC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbmZpZy52YWx1ZXNbaV07Cisg
ICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzd2F0Y2gpOworICAgIH0KKyAgICB2YXIgY29u
dGFpbmVyV2lkdGggPSBTV0FUQ0hfU0laRSAqIFNXQVRDSEVTX1BFUl9ST1c7CisgICAgaWYgKHRo
aXMuY29uZmlnLnZhbHVlcy5sZW5ndGggPiBTV0FUQ0hFU19QRVJfUk9XICogU1dBVENIRVNfTUFY
X1JPV1MpCisgICAgICBjb250YWluZXJXaWR0aCArPSBnZXRTY3JvbGxiYXJXaWR0aCgpOworICAg
IGNvbnRhaW5lci5zdHlsZS53aWR0aCA9IGNvbnRhaW5lcldpZHRoICsgInB4IjsKKyAgICBjb250
YWluZXIuc3R5bGUubWF4SGVpZ2h0ID0gKFNXQVRDSF9TSVpFICogU1dBVENIRVNfTUFYX1JPV1Mp
ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKyAgICB2
YXIgb3RoZXJCdXR0b24gPSBjcmVhdGVFbGVtZW50KCJidXR0b24iLCAib3RoZXItY29sb3IiLCB0
aGlzLmNvbmZpZy5vdGhlckNvbG9yTGFiZWwpOworICAgIG90aGVyQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgY2hvb3NlT3RoZXJDb2xvciwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZChvdGhlckJ1dHRvbik7CisgICAgaWYgKHdpbmRvdy5mcmFtZUVsZW1lbnQp
IHsKKyAgICAgICAgd2luZG93LmZyYW1lRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuZWxlbWVu
dC5vZmZzZXRXaWR0aCArICJweCI7CisgICAgICAgIHdpbmRvdy5mcmFtZUVsZW1lbnQuc3R5bGUu
aGVpZ2h0ID0gdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCArICJweCI7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgd2luZG93LnJlc2l6ZVRvKHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCwgdGhpcy5l
bGVtZW50Lm9mZnNldEhlaWdodCk7CisgICAgfQorfTsKKworQ29sb3JQaWNrZXIucHJvdG90eXBl
Ll9oYW5kbGVTd2F0Y2hDbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LnRh
cmdldC5jbGFzc0xpc3QuY29udGFpbnMoImNvbG9yLXN3YXRjaCIpKQorICAgICAgICBzdWJtaXRW
YWx1ZShldmVudC50YXJnZXQudmFsdWUpOworfTsKKworaWYgKHdpbmRvdy5kaWFsb2dBcmd1bWVu
dHMpIHsKKyAgICBpbml0aWFsaXplKGRpYWxvZ0FyZ3VtZW50cyk7Cit9IGVsc2UgeworICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgaGFuZGxlTWVzc2FnZSwgZmFsc2UpOwor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGhhbmRsZUFyZ3VtZW50c1RpbWVvdXQsIDEwMDApOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBjMjc0ZTJmMDNlYmJlMmMz
YjgzODg4ZTk5OWRmZjg0MWY5MmE5Y2QwLi4yZmEwODg3ZWY1M2U5ZTgxNDJiM2E1MDM0YmVhNDRk
OGYyYTNjNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtOTE1
LDYgKzkxNSwyNSBAQAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAg
ICAgICAnYWN0aW9uX25hbWUnOiAnQ29sb3JQaWNrZXInLAorICAgICAgICAgICdpbnB1dHMnOiBb
CisgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL2NvbG9yUGlja2VyLmNzcycsCisgICAgICAgICAg
ICAnLi4vUmVzb3VyY2VzL2NvbG9yUGlja2VyLmpzJywKKyAgICAgICAgICBdLAorICAgICAgICAg
ICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dl
YmtpdC9Db2xvclBpY2tlci5oJywKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVf
RElSKS93ZWJraXQvQ29sb3JQaWNrZXIuY3BwJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdh
Y3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywKKyAgICAgICAgICAgICcuLi9tYWtlLWZp
bGUtYXJyYXlzLnB5JywKKyAgICAgICAgICAgICctLWNvbmRpdGlvbj1FTkFCTEUoQ0FMRU5EQVJf
UElDS0VSKScsCisgICAgICAgICAgICAnLS1vdXQtaD08KFNIQVJFRF9JTlRFUk1FRElBVEVfRElS
KS93ZWJraXQvQ29sb3JQaWNrZXIuaCcsCisgICAgICAgICAgICAnLS1vdXQtY3BwPTwoU0hBUkVE
X0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9Db2xvclBpY2tlci5jcHAnLAorICAgICAgICAgICAg
JzxAKF9pbnB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgICB7CiAgICAg
ICAgICAgJ2FjdGlvbl9uYW1lJzogJ1hMaW5rTmFtZXMnLAogICAgICAgICAgICdpbnB1dHMnOiBb
CiAgICAgICAgICAgICAnLi4vZG9tL21ha2VfbmFtZXMucGwnLApAQCAtMTE1Niw2ICsxMTc1LDcg
QEAKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9IVE1MRWxlbWVu
dEZhY3RvcnkuY3BwJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtp
dC9IVE1MTmFtZXMuY3BwJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dl
YmtpdC9DYWxlbmRhclBpY2tlci5jcHAnLAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0L0NvbG9yUGlja2VyLmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1F
RElBVEVfRElSKS93ZWJraXQvRXZlbnRGYWN0b3J5LmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRIZWFkZXJzLmgnLAogICAgICAgICAnPChTSEFS
RURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50SW50ZXJmYWNlcy5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA1MTlkNDE0NDQ2ZTNiYTdhMjA3YWJlMTFkNTQwZGYyNDFjMjJkZjhmLi5hNjVh
MjExYzdhY2Q5M2EzYTZjZTliODM4YjBiOTYwNzdlYzcyNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zMDczLDYgKzMwNzMsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5jcHAnLAogICAg
ICAgICAgICAgJ3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdwYWdl
L1BhZ2VQb3B1cFV0aWwuY3BwJywKKyAgICAgICAgICAgICdwYWdlL1BhZ2VQb3B1cFV0aWwuaCcs
CiAgICAgICAgICAgICAncGFnZS9QYWdlU2VyaWFsaXplci5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvUGVyZm9ybWFu
Y2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMWVjZWNj
MmI2NDFmODQxNTY1MzQyNWMxZTk0ZTA2N2NmZTM4NjdmMS4uZTI4MTk3ZDFjMmU4NzVmOTNmYjVj
M2RkYjkyZDBjNGIxMTZlODQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xv
cklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5j
cHAKQEAgLTQwLDE0ICs0MCwzMCBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAor
I2lmIEVOQUJMRShEQVRBTElTVCkgJiYgRU5BQkxFKFBBR0VfUE9QVVApCisjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29sb3JQaWNrZXIuaCIKKyNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxEYXRhbGlz
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkxv
Y2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBVdGlsLmgiCisjZW5kaWYKKwog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Vu
dW0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbiB7CisgICAgQ2hvb3NlT3RoZXJDb2xvckFjdGlvbiA9
IC0yLAorICAgIENhbmNlbEFjdGlvbiA9IC0xLAorICAgIFNldFZhbHVlQWN0aW9uID0gMAorfTsK
Kwogc3RhdGljIGJvb2wgaXNWYWxpZENvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKQEAgLTEzNSw4ICsxNTEsMzUgQEAgdm9pZCBDb2xv
cklucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5n
ZWQsIFRleHRGaWVsZEUKICAgICAgICAgbV9jaG9vc2VyLT5zZXRTZWxlY3RlZENvbG9yKHZhbHVl
QXNDb2xvcigpKTsKIH0KIAordm9pZCBDb2xvcklucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZl
bnQoTW91c2VFdmVudCogZXZlbnQpCit7CisjaWYgRU5BQkxFKERBVEFMSVNUKSAmJiBFTkFCTEUo
UEFHRV9QT1BVUCkKKyAgICBpZiAoZWxlbWVudCgpLT5kaXNhYmxlZCgpIHx8IGVsZW1lbnQoKS0+
cmVhZE9ubHkoKSB8fCAhZWxlbWVudCgpLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgpOworICAgIGlmICghY2hyb21lKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcG9wdXApCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZWxlbWVudCgpLT5mYXN0SGFzQXR0cmlidXRlKEhUTUxOYW1lczo6bGlzdEF0dHIpKSB7Cisg
ICAgICAgIGlmICghZWxlbWVudCgpLT5kb2N1bWVudCgpLT52aWV3KCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3ID0gZWxlbWVudCgp
LT5kb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhlbGVtZW50KCktPmdldFBp
eGVsU25hcHBlZFJlY3QoKSk7CisgICAgICAgIG1fcG9wdXAgPSBjaHJvbWUtPmNsaWVudCgpLT5v
cGVuUGFnZVBvcHVwKHRoaXMsIGVsZW1lbnRSZWN0SW5Sb290Vmlldyk7CisgICAgICAgIGVsZW1l
bnQoKS0+Zm9jdXMoKTsKKyAgICB9CisKKyAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICBtX2hhbmRsZWRDbGlja0V2ZW50ID0gdHJ1ZTsKKyNlbmRpZgorfQorCiB2b2lkIENvbG9y
SW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIHsKKyAgICBp
ZiAobV9oYW5kbGVkQ2xpY2tFdmVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGVsZW1l
bnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+
cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDQsMTAgKzE4NywyNCBAQCB2b2lk
IENvbG9ySW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUoKTsKLSAg
ICBpZiAoY2hyb21lICYmICFtX2Nob29zZXIpCisgICAgaWYgKCFjaHJvbWUpCisgICAgICAgIHJl
dHVybjsKKyNpZiBFTkFCTEUoREFUQUxJU1QpICYmIEVOQUJMRShQQUdFX1BPUFVQKQorICAgIGlm
IChtX3BvcHVwKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGVsZW1lbnQoKS0+ZmFzdEhhc0F0
dHJpYnV0ZShIVE1MTmFtZXM6Omxpc3RBdHRyKSkgeworICAgICAgICBpZiAoIWVsZW1lbnQoKS0+
ZG9jdW1lbnQoKS0+dmlldygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBJbnRSZWN0
IGVsZW1lbnRSZWN0SW5Sb290VmlldyA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+dmlldygpLT5j
b250ZW50c1RvUm9vdFZpZXcoZWxlbWVudCgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworICAg
ICAgICBtX3BvcHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBlbGVt
ZW50UmVjdEluUm9vdFZpZXcpOworICAgICAgICBlbGVtZW50KCktPmZvY3VzKCk7CisgICAgfSBl
bHNlCisjZW5kaWYKKyAgICBpZiAoIW1fY2hvb3NlcikKICAgICAgICAgbV9jaG9vc2VyID0gY2hy
b21lLT5jcmVhdGVDb2xvckNob29zZXIodGhpcywgdmFsdWVBc0NvbG9yKCkpOwogCiAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgbV9oYW5kbGVkQ2xpY2tFdmVudCA9IGZhbHNl
OwogfQogCiB2b2lkIENvbG9ySW5wdXRUeXBlOjpkZXRhY2goKQpAQCAtMTk1LDYgKzI1Miw2NSBA
QCBIVE1MRWxlbWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yU3dhdGNoKCkgY29uc3QK
ICAgICByZXR1cm4gc2hhZG93ID8gdG9IVE1MRWxlbWVudChzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+
Zmlyc3RDaGlsZCgpKSA6IDA7CiB9CiAKKyNpZiBFTkFCTEUoREFUQUxJU1QpICYmIEVOQUJMRShQ
QUdFX1BPUFVQKQorCitJbnRTaXplIENvbG9ySW5wdXRUeXBlOjpjb250ZW50U2l6ZSgpCit7Cisg
ICAgcmV0dXJuIEludFNpemUoMCwgMCk7Cit9CisKK3ZvaWQgQ29sb3JJbnB1dFR5cGU6OndyaXRl
RG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBv
cHRpb25WYWx1ZXM7CisgICAgSFRNTERhdGFMaXN0RWxlbWVudCogZGF0YUxpc3QgPSBzdGF0aWNf
Y2FzdDxIVE1MRGF0YUxpc3RFbGVtZW50Kj4oZWxlbWVudCgpLT5saXN0KCkpOworICAgIGlmIChk
YXRhTGlzdCkgeworICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRh
TGlzdC0+b3B0aW9ucygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9u
RWxlbWVudCogb3B0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihvcHRpb25z
LT5pdGVtKGkpKTsgaSsrKQorICAgICAgICAgICAgb3B0aW9uVmFsdWVzLmFwcGVuZChvcHRpb24t
PnZhbHVlKCkpOworICAgIH0KKworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFN0cmluZygiPCFET0NU
WVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7
CisgICAgd3JpdGVyLmFkZERhdGEoY29sb3JQaWNrZXJDc3MsIHNpemVvZihjb2xvclBpY2tlckNz
cykpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+
PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48L2Rpdj48c2NyaXB0PlxuIgorICAgICAgICAgICAgICAg
IndpbmRvdy5kaWFsb2dBcmd1bWVudHMgPSB7XG4iLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cFV0
aWw6OmFkZFByb3BlcnR5KCJ2YWx1ZXMiLCBvcHRpb25WYWx1ZXMsIHdyaXRlcik7ICAgICAgIAor
ICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KCJvdGhlckNvbG9yTGFiZWwiLCBvdGhlckNv
bG9yTGFiZWwoKSwgd3JpdGVyKTsKKyAgICBQYWdlUG9wdXBVdGlsOjphZGRTdHJpbmcoIn07XG4i
LCB3cml0ZXIpOworICAgIHdyaXRlci5hZGREYXRhKGNvbG9yUGlja2VySnMsIHNpemVvZihjb2xv
clBpY2tlckpzKSk7CisgICAgUGFnZVBvcHVwVXRpbDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2Jv
ZHk+XG4iLCB3cml0ZXIpOworfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpzZXRWYWx1ZUFuZENs
b3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQoreworICAg
IEFTU0VSVChtX3BvcHVwKTsKKyAgICBjbG9zZVBvcHVwKCk7CisgICAgaWYgKG51bVZhbHVlID09
IFNldFZhbHVlQWN0aW9uKQorICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlRm9yVXNlcihzdHJp
bmdWYWx1ZSk7CisgICAgZWxzZSBpZiAobnVtVmFsdWUgPT0gQ2hvb3NlT3RoZXJDb2xvckFjdGlv
bikgeworICAgICAgICBBU1NFUlQoIW1fY2hvb3Nlcik7CisgICAgICAgIENocm9tZSogY2hyb21l
ID0gdGhpcy0+Y2hyb21lKCk7CisgICAgICAgIGlmIChjaHJvbWUpCisgICAgICAgICAgICBtX2No
b29zZXIgPSBjaHJvbWUtPmNyZWF0ZUNvbG9yQ2hvb3Nlcih0aGlzLCB2YWx1ZUFzQ29sb3IoKSk7
CisgICAgfQorfQorCit2b2lkIENvbG9ySW5wdXRUeXBlOjpkaWRDbG9zZVBvcHVwKCkKK3sKKyAg
ICBtX3BvcHVwID0gMDsKK30KKwordm9pZCBDb2xvcklucHV0VHlwZTo6Y2xvc2VQb3B1cCgpCit7
CisgICAgaWYgKCFtX3BvcHVwKQorICAgICAgICByZXR1cm47CisgICAgQ2hyb21lKiBjaHJvbWUg
PSB0aGlzLT5jaHJvbWUoKTsKKyAgICBpZiAoIWNocm9tZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGNocm9tZS0+Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKG1fcG9wdXApOworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKERBVEFMSVNUKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKaW5kZXggNzc5Y2Q5NzZlODNmZjA4NjVkMjk2N2NlZDlm
YWRhZTM1NzUxOGU0YS4uZmZmMjRjOWFlYzJlZDJlZTIyZTg4ZDU5MzgyNWI4YzYyMmNkMDg0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAtMzMsMTIgKzMzLDE1IEBACiAK
ICNpbmNsdWRlICJCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIkNv
bG9yQ2hvb3NlckNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q29sb3JJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUsIHB1
YmxpYyBDb2xvckNob29zZXJDbGllbnQgeworY2xhc3MgUGFnZVBvcHVwOworCitjbGFzcyBDb2xv
cklucHV0VHlwZSA6IHB1YmxpYyBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZSwgcHVibGlj
IENvbG9yQ2hvb3NlckNsaWVudCwgcHVibGljIFBhZ2VQb3B1cENsaWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCop
OwogICAgIHZpcnR1YWwgfkNvbG9ySW5wdXRUeXBlKCk7CkBAIC00OCw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kQ2hvb3NlcigpIE9WRVJSSURFOwogCiBwcml2YXRl
OgotICAgIENvbG9ySW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZUNs
aWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgQ29sb3JJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlw
ZShlbGVtZW50KSwgbV9oYW5kbGVkQ2xpY2tFdmVudChmYWxzZSkgeyB9CiAgICAgdmlydHVhbCBi
b29sIGlzQ29sb3JDb250cm9sKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgT1ZFUlJJREU7CkBAIC01Niw2ICs1OSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJp
bmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBi
b29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBPVkVSUklERTsKQEAgLTY1LDcgKzY5LDIzIEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb2xvclN3YXRjaCgpOwogICAgIEhUTUxFbGVtZW50
KiBzaGFkb3dDb2xvclN3YXRjaCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKERBVEFMSVNUKSAmJiBF
TkFCTEUoUEFHRV9QT1BVUCkKKyAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgorICAg
IHZpcnR1YWwgSW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisjZW5kaWYKKworICAg
IHZvaWQgY2xvc2VQb3B1cCgpOworCisgICAgLy8gRmxhZyBzbyB3ZSBkb24ndCBvcGVuIHRoZSBw
b3B1cCB0d2ljZSBmb3Igb25lIGNsaWNrLiAoT25jZSBmb3IgbW91c2UKKyAgICAvLyBkb3duIGV2
ZW50IGFuZCBhZ2FpbiBmb3IgRE9NQWN0aXZhdGUgZXZlbnQuKQorICAgIGJvb2wgbV9oYW5kbGVk
Q2xpY2tFdmVudDsKICAgICBPd25QdHI8Q29sb3JDaG9vc2VyPiBtX2Nob29zZXI7CisjaWYgRU5B
QkxFKERBVEFMSVNUKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBQYWdlUG9wdXAqIG1fcG9w
dXA7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCmluZGV4IDUz
NThjY2FmN2EzZGYyZTMzYTAzZWJmMGM4ODkxMWIwYzA4ODJiYzUuLjQ2ODAwMjA1MzI0MmEzOTJj
YmRiOGY2ZWM4OTk5NDVjNzRjNTk4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cFV0aWwuaCIKICNpbmNsdWRlICJS
ZW5kZXJEZXRhaWxzTWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMzksNjcgKzE0MCw2IEBAIEludFNpemUg
Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojpjb250ZW50U2l6ZSgpCiAgICAgcmV0dXJuIEludFNpemUo
MTAwLCAxMDApOwogfQogCi0jZGVmaW5lIGFkZExpdGVyYWwobGl0ZXJhbCwgd3JpdGVyKSAgICB3
cml0ZXIuYWRkRGF0YShsaXRlcmFsLCBzaXplb2YobGl0ZXJhbCkgLSAxKQotCi1zdGF0aWMgaW5s
aW5lIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyLCBEb2N1bWVudFdyaXRlciYgd3Jp
dGVyKQotewotICAgIENTdHJpbmcgc3RyOCA9IHN0ci51dGY4KCk7Ci0gICAgd3JpdGVyLmFkZERh
dGEoc3RyOC5kYXRhKCksIHN0cjgubGVuZ3RoKCkpOwotfQotCi1zdGF0aWMgdm9pZCBhZGRKYXZh
U2NyaXB0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQot
ewotICAgIGFkZExpdGVyYWwoIlwiIiwgd3JpdGVyKTsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0gICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoc3RyLmxlbmd0aCgpKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKHN0
cltpXSA9PSAnXFwnIHx8IHN0cltpXSA9PSAnIicpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnXFwnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyW2ldKTsKLSAgICB9Ci0gICAgYWRk
U3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKSwgd3JpdGVyKTsKLSAgICBhZGRMaXRlcmFsKCJcIiIs
IHdyaXRlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAgd3Jp
dGVyLmFkZERhdGEobmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICBhZGRMaXRlcmFsKCI6ICIsIHdy
aXRlcik7Ci0gICAgYWRkSmF2YVNjcmlwdFN0cmluZyh2YWx1ZSwgd3JpdGVyKTsKLSAgICBhZGRM
aXRlcmFsKCIsXG4iLCB3cml0ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eShjb25z
dCBjaGFyKiBuYW1lLCB1bnNpZ25lZCB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKLXsK
LSAgICB3cml0ZXIuYWRkRGF0YShuYW1lLCBzdHJsZW4obmFtZSkpOwotICAgIGFkZExpdGVyYWwo
IjogIiwgd3JpdGVyKTsKLSAgICBhZGRTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpLCB3cml0
ZXIpOwotICAgIGFkZExpdGVyYWwoIixcbiIsIHdyaXRlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGFk
ZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUsIERvY3VtZW50V3JpdGVyJiB3
cml0ZXIpCi17Ci0gICAgd3JpdGVyLmFkZERhdGEobmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICBh
ZGRMaXRlcmFsKCI6ICIsIHdyaXRlcik7Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBhZGRMaXRl
cmFsKCJ0cnVlIiwgd3JpdGVyKTsKLSAgICBlbHNlCi0gICAgICAgIGFkZExpdGVyYWwoImZhbHNl
Iiwgd3JpdGVyKTsKLSAgICBhZGRMaXRlcmFsKCIsXG4iLCB3cml0ZXIpOwotfQotCi1zdGF0aWMg
dm9pZCBhZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dmFsdWVzLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQotewotICAgIHdyaXRlci5hZGREYXRhKG5h
bWUsIHN0cmxlbihuYW1lKSk7Ci0gICAgYWRkTGl0ZXJhbCgiOiBbIiwgd3JpdGVyKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChpKQotICAgICAgICAgICAgYWRkTGl0ZXJhbCgiLCIsIHdyaXRlcik7Ci0gICAgICAgIGFkZEph
dmFTY3JpcHRTdHJpbmcodmFsdWVzW2ldLCB3cml0ZXIpOwotICAgIH0KLSAgICBhZGRMaXRlcmFs
KCJdLFxuIiwgd3JpdGVyKTsKLX0KLQogdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OndyaXRl
RG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IGhvc3RJbnB1dCgpOwpAQCAtMjEzLDMyICsxNTMsMzIgQEAgdm9pZCBDYWxlbmRh
clBpY2tlckVsZW1lbnQ6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKICAg
ICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkgfHwgIWlucHV0LT5nZXRBbGxvd2VkVmFsdWVTdGVw
KCZzdGVwKSkKICAgICAgICAgc3RlcFN0cmluZyA9ICIxIjsKIAotICAgIGFkZExpdGVyYWwoIjwh
RE9DVFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0
ZXIpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+
PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7CiAgICAgd3JpdGVyLmFk
ZERhdGEoY2FsZW5kYXJQaWNrZXJDc3MsIHNpemVvZihjYWxlbmRhclBpY2tlckNzcykpOwogICAg
IGlmIChkb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAgICAgQ1N0cmluZyBleHRyYVN0eWxlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5leHRyYUNhbGVuZGFyUGlja2VyU3R5bGVTaGVl
dCgpOwogICAgICAgICBpZiAoZXh0cmFTdHlsZS5sZW5ndGgoKSkKICAgICAgICAgICAgIHdyaXRl
ci5hZGREYXRhKGV4dHJhU3R5bGUuZGF0YSgpLCBleHRyYVN0eWxlLmxlbmd0aCgpKTsKICAgICB9
Ci0gICAgYWRkTGl0ZXJhbCgiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRp
bmcuLi48L2Rpdj48c2NyaXB0PlxuIgorICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFN0cmluZygiPC9z
dHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48L2Rpdj48c2NyaXB0Plxu
IgogICAgICAgICAgICAgICAgIndpbmRvdy5kaWFsb2dBcmd1bWVudHMgPSB7XG4iLCB3cml0ZXIp
OwotICAgIGFkZFByb3BlcnR5KCJtaW4iLCBtaW5TdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJv
cGVydHkoIm1heCIsIG1heFN0cmluZywgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgic3RlcCIs
IHN0ZXBTdHJpbmcsIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoInJlcXVpcmVkIiwgaW5wdXQt
PnJlcXVpcmVkKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImN1cnJlbnRWYWx1ZSIsIGlu
cHV0LT52YWx1ZSgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJsb2NhbGUiLCBkZWZhdWx0
TGFuZ3VhZ2UoKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgidG9kYXlMYWJlbCIsIGNhbGVu
ZGFyVG9kYXlUZXh0KCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImNsZWFyTGFiZWwiLCBj
YWxlbmRhckNsZWFyVGV4dCgpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnRE
YXkiLCBmaXJzdERheU9mV2VlaygpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJtb250aExh
YmVscyIsIG1vbnRoTGFiZWxzKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImRheUxhYmVs
cyIsIHdlZWtEYXlTaG9ydExhYmVscygpLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFk
ZFByb3BlcnR5KCJtaW4iLCBtaW5TdHJpbmcsIHdyaXRlcik7CisgICAgUGFnZVBvcHVwVXRpbDo6
YWRkUHJvcGVydHkoIm1heCIsIG1heFN0cmluZywgd3JpdGVyKTsKKyAgICBQYWdlUG9wdXBVdGls
OjphZGRQcm9wZXJ0eSgic3RlcCIsIHN0ZXBTdHJpbmcsIHdyaXRlcik7CisgICAgUGFnZVBvcHVw
VXRpbDo6YWRkUHJvcGVydHkoInJlcXVpcmVkIiwgaW5wdXQtPnJlcXVpcmVkKCksIHdyaXRlcik7
CisgICAgUGFnZVBvcHVwVXRpbDo6YWRkUHJvcGVydHkoImN1cnJlbnRWYWx1ZSIsIGlucHV0LT52
YWx1ZSgpLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KCJsb2NhbGUi
LCBkZWZhdWx0TGFuZ3VhZ2UoKSwgd3JpdGVyKTsKKyAgICBQYWdlUG9wdXBVdGlsOjphZGRQcm9w
ZXJ0eSgidG9kYXlMYWJlbCIsIGNhbGVuZGFyVG9kYXlUZXh0KCksIHdyaXRlcik7CisgICAgUGFn
ZVBvcHVwVXRpbDo6YWRkUHJvcGVydHkoImNsZWFyTGFiZWwiLCBjYWxlbmRhckNsZWFyVGV4dCgp
LCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXki
LCBmaXJzdERheU9mV2VlaygpLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFByb3Bl
cnR5KCJtb250aExhYmVscyIsIG1vbnRoTGFiZWxzKCksIHdyaXRlcik7CisgICAgUGFnZVBvcHVw
VXRpbDo6YWRkUHJvcGVydHkoImRheUxhYmVscyIsIHdlZWtEYXlTaG9ydExhYmVscygpLCB3cml0
ZXIpOwogICAgIERpcmVjdGlvbiBkaXIgPSBkaXJlY3Rpb24obW9udGhMYWJlbHMoKVswXVswXSk7
Ci0gICAgYWRkUHJvcGVydHkoImlzUlRMIiwgZGlyID09IFJpZ2h0VG9MZWZ0IHx8IGRpciA9PSBS
aWdodFRvTGVmdEFyYWJpYywgd3JpdGVyKTsKLSAgICBhZGRMaXRlcmFsKCJ9XG4iLCB3cml0ZXIp
OworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KCJpc1JUTCIsIGRpciA9PSBSaWdodFRv
TGVmdCB8fCBkaXIgPT0gUmlnaHRUb0xlZnRBcmFiaWMsIHdyaXRlcik7CisgICAgUGFnZVBvcHVw
VXRpbDo6YWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIpOwogCiAgICAgd3JpdGVyLmFkZERhdGEoY2Fs
ZW5kYXJQaWNrZXJKcywgc2l6ZW9mKGNhbGVuZGFyUGlja2VySnMpKTsKLSAgICBhZGRMaXRlcmFs
KCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cFV0aWw6OmFkZFN0
cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVyKTsKIH0KIAogdm9pZCBDYWxlbmRhclBp
Y2tlckVsZW1lbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQ
b3B1cFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBVdGlsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZGY2ZTZjNmRmYzU1NGRiYzJiODc0YzY3NmVjZmI0NjUwYzg2OGZkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBVdGlsLmNwcApAQCAtMCww
ICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cFV0aWwuaCIK
KworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgYWRkTGl0ZXJhbChsaXRl
cmFsLCB3cml0ZXIpICAgIHdyaXRlci5hZGREYXRhKGxpdGVyYWwsIHNpemVvZihsaXRlcmFsKSAt
IDEpCisKK3ZvaWQgUGFnZVBvcHVwVXRpbDo6YWRkSmF2YVNjcmlwdFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0ciwgRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICBhZGRMaXRlcmFsKCJcIiIs
IHdyaXRlcik7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2
ZUNhcGFjaXR5KHN0ci5sZW5ndGgoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0
ci5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChzdHJbaV0gPT0gJ1xcJyB8fCBzdHJbaV0g
PT0gJyInKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xcJyk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0cltpXSk7CisgICAgfQorICAgIGFkZFN0cmluZyhidWlsZGVyLnRvU3RyaW5n
KCksIHdyaXRlcik7CisgICAgYWRkTGl0ZXJhbCgiXCIiLCB3cml0ZXIpOworfQorCit2b2lkIFBh
Z2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCit7CisgICAgd3JpdGVyLmFkZERhdGEobmFt
ZSwgc3RybGVuKG5hbWUpKTsKKyAgICBhZGRMaXRlcmFsKCI6ICIsIHdyaXRlcik7CisgICAgYWRk
SmF2YVNjcmlwdFN0cmluZyh2YWx1ZSwgd3JpdGVyKTsKKyAgICBhZGRMaXRlcmFsKCIsXG4iLCB3
cml0ZXIpOworfQorCit2b2lkIFBhZ2VQb3B1cFV0aWw6OmFkZFByb3BlcnR5KGNvbnN0IGNoYXIq
IG5hbWUsIHVuc2lnbmVkIHZhbHVlLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQoreworICAgIHdy
aXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CisgICAgYWRkTGl0ZXJhbCgiOiAiLCB3
cml0ZXIpOworICAgIGFkZFN0cmluZyhTdHJpbmc6Om51bWJlcih2YWx1ZSksIHdyaXRlcik7Cisg
ICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3JpdGVyKTsKK30KKwordm9pZCBQYWdlUG9wdXBVdGlsOjph
ZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlLCBEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQoreworICAgIHdyaXRlci5hZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CisgICAg
YWRkTGl0ZXJhbCgiOiAiLCB3cml0ZXIpOworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgYWRkTGl0
ZXJhbCgidHJ1ZSIsIHdyaXRlcik7CisgICAgZWxzZQorICAgICAgICBhZGRMaXRlcmFsKCJmYWxz
ZSIsIHdyaXRlcik7CisgICAgYWRkTGl0ZXJhbCgiLFxuIiwgd3JpdGVyKTsKK30KKwordm9pZCBQ
YWdlUG9wdXBVdGlsOjphZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmFsdWVzLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQoreworICAgIHdyaXRlci5h
ZGREYXRhKG5hbWUsIHN0cmxlbihuYW1lKSk7CisgICAgYWRkTGl0ZXJhbCgiOiBbIiwgd3JpdGVy
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChpKQorICAgICAgICAgICAgYWRkTGl0ZXJhbCgiLCIsIHdyaXRlcik7CisgICAg
ICAgIGFkZEphdmFTY3JpcHRTdHJpbmcodmFsdWVzW2ldLCB3cml0ZXIpOworICAgIH0KKyAgICBh
ZGRMaXRlcmFsKCJdLFxuIiwgd3JpdGVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFBBR0VfUE9QVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VQb3B1cFV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwVXRp
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiYWU3NDU0MTVhY2FlMzZkZjNkMTYwMTBlMGRkMDEyODJlNDgwODcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cFV0aWwuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlUG9wdXBVdGlsX2gKKyNkZWZpbmUgUGFnZVBvcHVw
VXRpbF9oCisKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKworI2luY2x1ZGUgIkRvY3VtZW50V3Jp
dGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZVBvcHVwVXRpbCB7Citw
dWJsaWM6CisgICAgc3RhdGljIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYsIERvY3VtZW50
V3JpdGVyJik7CisgICAgc3RhdGljIHZvaWQgYWRkSmF2YVNjcmlwdFN0cmluZyhjb25zdCBTdHJp
bmcmLCBEb2N1bWVudFdyaXRlciYpOworICAgIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5KGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIERvY3VtZW50V3JpdGVyJik7CisgICAg
c3RhdGljIHZvaWQgYWRkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQgdmFsdWUs
IERvY3VtZW50V3JpdGVyJik7CisgICAgc3RhdGljIHZvaWQgYWRkUHJvcGVydHkoY29uc3QgY2hh
ciogbmFtZSwgYm9vbCB2YWx1ZSwgRG9jdW1lbnRXcml0ZXImKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFsdWVz
LCBEb2N1bWVudFdyaXRlciYpOworfTsKKworaW5saW5lIHZvaWQgUGFnZVBvcHVwVXRpbDo6YWRk
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyLCBEb2N1bWVudFdyaXRlciYgd3JpdGVyKQoreworICAg
IENTdHJpbmcgc3RyOCA9IHN0ci51dGY4KCk7CisgICAgd3JpdGVyLmFkZERhdGEoc3RyOC5kYXRh
KCksIHN0cjgubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoUEFHRV9QT1BVUCkKKworI2VuZGlmIC8vIFBhZ2VQb3B1cFV0aWxfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IGZlNjY4NmRiYTUw
YTFmMjg5OWJjN2NjYmZhYjA3MjdkZGUyZWEwYTAuLjg2OTFhMzQ3MTg2NDU3MGMwNmU2NGY0NTcy
ZGRlZmI4MDNlODA0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgKQEAgLTIxOCw3ICsyMTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5n
IGRhdGVGb3JtYXRZZWFyVGV4dCgpOwogICAgIFN0cmluZyBkYXRlRm9ybWF0TW9udGhUZXh0KCk7
CiAgICAgU3RyaW5nIGRhdGVGb3JtYXREYXlJbk1vbnRoVGV4dCgpOwotI2VuZGlmCisjZW5kaWYg
ICAgCisgICAgU3RyaW5nIG90aGVyQ29sb3JMYWJlbCgpOwogCiAjaWYgIVBMQVRGT1JNKENIUk9N
SVVNKQogI2RlZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6
OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUNvbW1vbi5jcHAKaW5kZXggNTczOWM1MGI0ZGZlNzU0
OTM2YTIyNzgzYjI3NjZjZTc1NjBlZTE1Zi4uZjY0ZDdhZDQ2MDEwMWNiN2I4MTg2MmRiYTA4Nzhh
ZjVlMzA2MTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Db21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtQ29tbW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQCBib29sIFJlbmRlclRo
ZW1lQ2hyb21pdW1Db21tb246OnN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFdlIHN0aWxsIG5lZWQgdG8gc3VwcG9ydCBlbWFpbCwg
ZGF0ZXRpbWUsIGRhdGUsIG1vbnRoLCB3ZWVrLCB0aW1lLCBkYXRldGltZS1sb2NhbCwgcmFuZ2Us
IGNvbG9yLgogICAgIHJldHVybiB0eXBlID09IElucHV0VHlwZU5hbWVzOjp0ZXh0KCkgfHwgdHlw
ZSA9PSBJbnB1dFR5cGVOYW1lczo6c2VhcmNoKCkgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6
dXJsKCkKLSAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKCkgfHwg
dHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKSB8fCB0eXBlID09IElucHV0VHlwZU5hbWVz
OjpudW1iZXIoKTsKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6dGVsZXBob25l
KCkgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKSB8fCB0eXBlID09IElucHV0VHlw
ZU5hbWVzOjpudW1iZXIoKSB8fCB0eXBlID09IElucHV0VHlwZU5hbWVzOjpjb2xvcigpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CmluZGV4IDA4MWE2N2I4YTkwMDk5Y2EyZDM5NTFhNDVlMGIxOGZiYjAyYTJhOTEuLjAwNjg1NDQ2
NjcwMTQ0NDI4ZDU2YzA4OTgwZWYwYzQ0ZjUyODBmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC00MjksNCArNDI5LDkgQEAgU3Ry
aW5nIGRhdGVGb3JtYXREYXlJbk1vbnRoVGV4dCgpCiB9CiAjZW5kaWYKIAorU3RyaW5nIG90aGVy
Q29sb3JMYWJlbCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6T3Ro
ZXJDb2xvckxhYmVsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5oCmluZGV4IDJlMWM4YzNmMzlkMmM5
MzJlYTAzN2ViNjFkZTk5YmQ0OTM3YTA3OGEuLjI1NTJiYWNmMTE4ZmM2MTVhNjcyNTBhY2QyMGQy
ZWM3NTgxNzY5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBh
Z2VQb3B1cEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9w
dXBJbXBsLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFuZGxlS2V5RXZl
bnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBjbG9z
ZVBvcHVwKCk7CiAgICAgV2ViV2lkZ2V0Q2xpZW50KiB3aWRnZXRDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3dpZGdldENsaWVudDsgfQorICAgIGJvb2wgaGFzU2FtZVBvcHVwQ2xpZW50KFdlYlBh
Z2VQb3B1cEltcGwqIG90aGVyKSB7IHJldHVybiBvdGhlciAmJiBtX3BvcHVwQ2xpZW50ID09IG90
aGVyLT5tX3BvcHVwQ2xpZW50OyB9CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViV2lkZ2V0IGZ1bmN0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGUz
NDkxNTFmYWQxNDQ3OTgyMGVlYzY2ZmM2M2YxZDg0NWJjNmE2YWMuLjU4NDBkMDYyNjRlZjZmZGZk
ZjU3YmEwYTAzMmM4NjJiNzJiZGY2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTUyMyw5ICs1MjMsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFu
ZGxlTW91c2VEb3duKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50
KQogICAgIC8vIHRoZSBwYWdlIChvdXRzaWRlIG9mIHRoZSBwb3B1cCkuICBXZSBhbHNvIHNhdmUg
aXQgc28gd2UgY2FuIHByZXZlbnQgYQogICAgIC8vIGNsaWNrIG9uIHRoZSBzZWxlY3QgZWxlbWVu
dCBmcm9tIGltbWVkaWF0ZWx5IHJlb3BlbmluZyB0aGUgcG9wdXAuCiAgICAgUmVmUHRyPFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyPiBzZWxlY3RQb3B1cDsKKyAgICBSZWZQdHI8V2ViUGFnZVBvcHVw
SW1wbD4gcGFnZVBvcHVwOwogICAgIGlmIChldmVudC5idXR0b24gPT0gV2ViTW91c2VFdmVudDo6
QnV0dG9uTGVmdCkgewogICAgICAgICBzZWxlY3RQb3B1cCA9IG1fc2VsZWN0UG9wdXA7Ci0gICAg
ICAgIGhpZGVTZWxlY3RQb3B1cCgpOworICAgICAgICBwYWdlUG9wdXAgPSBtX3BhZ2VQb3B1cDsK
KyAgICAgICAgaGlkZVBvcHVwcygpOwogICAgICAgICBBU1NFUlQoIW1fc2VsZWN0UG9wdXApOwog
ICAgIH0KIApAQCAtNTUyLDYgKzU1NCwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3Vz
ZURvd24oRnJhbWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAg
ICAgIGhpZGVTZWxlY3RQb3B1cCgpOwogICAgIH0KIAorICAgIGlmIChtX3BhZ2VQb3B1cCAmJiBw
YWdlUG9wdXAgJiYgbV9wYWdlUG9wdXAtPmhhc1NhbWVQb3B1cENsaWVudChwYWdlUG9wdXAuZ2V0
KCkpKSB7CisgICAgICAgIC8vIFRoYXQgY2xpY2sgdHJpZ2dlcmVkIGEgcGFnZSBwb3B1cCB0aGF0
IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2UganVzdCBjbG9zZWQuCisgICAgICAgIC8vIEl0IG5l
ZWRzIHRvIGJlIGNsb3NlZC4KKyAgICAgICAgY2xvc2VQYWdlUG9wdXAobV9wYWdlUG9wdXAuZ2V0
KCkpOworICAgIH0KKwogICAgIC8vIERpc3BhdGNoIHRoZSBjb250ZXh0bWVudSBldmVudCByZWdh
cmRsZXNzIG9mIGlmIHRoZSBjbGljayB3YXMgc3dhbGxvd2VkLgogICAgIC8vIE9uIFdpbmRvd3Ms
IHdlIGhhbmRsZSBpdCBvbiBtb3VzZSB1cCwgbm90IGRvd24uCiAjaWYgT1MoREFSV0lOKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDA4ZjVhY2ZlNmQxZDJiMmY4YzJkMjAwZjUxZjM2Y2VhODk1NGJiMmMuLjFjNGQ0OTJmMDY5
ZmY4YTQxZmM4MzY2NzhlMzFiNjQ5OWFhZDA2M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wNy0xOCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBJ
bXBsZW1lbnQgZGF0YWxpc3QgVUkgZm9yIGlucHV0IHR5cGUgY29sb3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2NvbG9yL2NvbG9y
LXBpY2tlci1hcHBlYXJhbmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5jZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9mb3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBw
ZWFyYW5jZS1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6IEV4cGVjdCBmYWlsdXJlIHVudGlsIHdlIGxhbmQgYSBjaHJvbWl1
bSBzaWRlIHBhdGNoIHRoYXQgYWRkcyBhIGxvY2FsaXplZCBzdHJpbmcuCisKIDIwMTItMDctMTcg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBjaHJvbWl1bSB0ZXN0cyByZWJhc2VsaW5lcyBhZnRlciByMTIyNzkxLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5jZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2NvbG9yLXBpY2tlci1h
cHBlYXJhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDIwMzAyYTMwYWJjYjlkNDlhNTM5
ZTMwNGI1NjIxMTAwOWFjODk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5jZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IENoZWNrIGlmIHdpbmRvdy5wYWdlUG9w
dXBDb250cm9sbGVyIGV4aXN0cyBmb3IgYSBwYWdlLXBvcHVwIHdpbmRvdy4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAzNDogW29iamVjdCBQYWdlUG9wdXBDb250cm9sbGVyXQorIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5jZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5j
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiMDVlMDM5OGYxMjY1NzZkMGZhZmU2NTk3YTU4MmZiZjhkMzU5
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2NvbG9y
LXBpY2tlci1hcHBlYXJhbmNlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8Ym9keT4KKzxpbnB1dCB0eXBlPWNvbG9yIGlkPWNvbG9yIHZhbHVlPSIjZmYwMDAwIiBsaXN0
PWdyYXkgZm9jdXM+Cis8ZGF0YWxpc3QgaWQ9Z3JheT4KKyAgICA8b3B0aW9uPiNmZmZmZmY8L29w
dGlvbj4KKyAgICA8b3B0aW9uPiNlZWVlZWU8L29wdGlvbj4KKyAgICA8b3B0aW9uPiNkZGRkZGQ8
L29wdGlvbj4KKyAgICA8b3B0aW9uPiNjY2NjY2M8L29wdGlvbj4KKyAgICA8b3B0aW9uPiNiYmJi
YmI8L29wdGlvbj4KKyAgICA8b3B0aW9uPiNhYWFhYWE8L29wdGlvbj4KKyAgICA8b3B0aW9uPiM5
OTk5OTk8L29wdGlvbj4KKyAgICA8b3B0aW9uPiM4ODg4ODg8L29wdGlvbj4KKyAgICA8b3B0aW9u
PiM3Nzc3Nzc8L29wdGlvbj4KKyAgICA8b3B0aW9uPiM2NjY2NjY8L29wdGlvbj4KKyAgICA8b3B0
aW9uPiM1NTU1NTU8L29wdGlvbj4KKyAgICA8b3B0aW9uPiM0NDQ0NDQ8L29wdGlvbj4KKyAgICA8
b3B0aW9uPiMzMzMzMzM8L29wdGlvbj4KKyAgICA8b3B0aW9uPiMyMjIyMjI8L29wdGlvbj4KKyAg
ICA8b3B0aW9uPiMxMTExMTE8L29wdGlvbj4KKyAgICA8b3B0aW9uPiMwMDAwMDA8L29wdGlvbj4K
KzwvZGF0YWxpc3Q+Cis8c2NyaXB0PgorY29uc29sZS5sb2coJ0NoZWNrIGlmIHdpbmRvdy5wYWdl
UG9wdXBDb250cm9sbGVyIGV4aXN0cyBmb3IgYSBwYWdlLXBvcHVwIHdpbmRvdy4nKTsKK3Rlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKK3Rlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZU1vY2tQ
YWdlUG9wdXAodHJ1ZSk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xvcicpLmZvY3Vz
KCk7CitpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAn
KTsKK3ZhciBwaWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jay1wYWdl
LXBvcHVwJykuY29udGVudFdpbmRvdzsKK3BpY2tlcldpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9u
KCkgeworICAgIGNvbnNvbGUubG9nKHBpY2tlcldpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyKTsK
KyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZm9ybXMvY29s
b3IvY29sb3ItcGlja2VyLWFwcGVhcmFuY2UtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZm9ybXMvY29sb3IvY29sb3ItcGlja2VyLWFwcGVhcmFu
Y2UtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyZjI3NjhmNDlmYWJmNjA5ZTI0MjZiMmRjOTA3
NDdlODczYTI4MjEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDYxOTIKemNtZUhLWDtfb3pudGxO
VnN8OSo9ZEpxdTg4RVpYZlAkO1dGMW5qQWxkUWl8fSpkenA1WkNJajAybjBlPDNtIV5ZCnp0Wms5
S3MwQiN+JFB5OUFWeEB3cGZDeCQwbEJrRzRMT0A4dWw2QnRMWXYjLX4qWkRFbSUkKVBmS2l+VCQq
WlYmMgp6Xlc0dkotKFVXNWVfIUxSN0Z6KVQjeigkNXszUVNlSFVRe3tZJXpyWWwmNCloM3p0OG9g
aD11THBOV2w1TldtdzgKeikyXjs9dX0qT2d2OVZGRVBCRVdFSWs/OX1KR3ktbT1qUC1kPik7dl94
OXtQTFg4QFNwS1hVbGZsailUYktJWDRnCnpnc1EmZkM2IyF6enZpcCpvekhITEFLQExObzdwRCl7
OEAhPE9XcDZ2ciRUSVYxLUE8U3VwZjImYGBqOyZmQm5icAp6UV4qczQ+MXdASjVIJmFPJjBpUT5U
eD9OXmk3fXRmS2w/Y0RgXkpJeEB0RDA7P01eQTAxKXUoZi1uakNYbC1FdkkKeiVYciZOVU9sUEkr
OEZyQVkpRS08WHozdFlsR2NyZS1zfHpWRzJzJXFAcXJCaGhyUmBSMDdQeHQwPkI1bTQqYCZLCnpP
K2FOdlFpZHI3Uzd7eXgxaDx5K0tSQE98ST5RWkAkeH1Kc1hhciR4KkU8WkcjNyhSUzwxT0ljJTVz
eVFCUFNocwp6UCRPMHlSYGJYS3FuK3BVOURfLW9YbkxGdkV7Vn4/YmA/Q3VCbX5MNmAyY18pMyhY
QillVko4QlJNUW12ZTRjMSMKekJ3OCs8NHNfdzEqfjlDMkM2bE18M1QraXdhVUJQKkcha0c/eW5f
RVleRD42JlVzR3tRU2R+dUdOSnE7PU9IMGs8Cnpzbil2VzVWflYwWXRPN0lfVylNNTVUYyVLYTYr
THR5ZiY2WCpfQ2lTMll9bn1LaU8kQitpTks9UDF6eFRSeD1jPQp6I3EmNTsydUEwZk1sd2ImUHR7
I30pRnBWZFZWRU8tPXxeclYpbnVgZnYkY2A1KEJhQHEyRXFJeTB8MG1vXkl+RygKelVKSENPPEhU
JVZ5e0whR3pOMChOKkFRJmN8S3t2bFlJaG9gUnojfSVgckFlLWx6SmYye2FTfFU3ajVYa2Z3V187
CnpWZllAKDQ7PGJJez14ZDNDflBBQkBQdVVUJk9CPjhGKEBFbDIrMCFnQ2VhV28tNm9ndV5kIWFG
YHY1JXRyT2BqVwp6ZVMoSWloajl7SmgwQ2BuU28+akw2blooSEg0JllkKnl0cks4eVghTzh+Y3pn
I0xfOThKN294dkdaVVoyMyMzIVMKejJGZVUjeyotQzIqTlBMZWglLUx+Vn0mZUl1dGBhclNpOTgt
IWhhPUhsOWsqcyQke3NGTCRXaEopTnBHeVgxJW87CnpvPzRaWmV0elo9UUxgfkN1Sj19ZCNVfV8h
ck9ZfUdtTzFPITRaIW0tKktXe3xNeFVVP3A2aWAlUkAxenR0Q0M2YQp6aisqc2ZXNjlkKXg4NVEq
Pnd8bGEmUSRQfllxfFYmMSYrSkV6T3Q9a2QzbXtMQ2AmcmZrTHt9NjRQekBBOGtPQU0Kej9PUWFl
VUszKUZndkNiWDV9UkdMJWYwb2ZwRllVKGA3OUBPM3xkYTtFMyRITmF8PVBIRSE+aCFjRyUwbGdU
Kj8wCnpPKWx4Xj9yd2pTPXYqLXsoTWBackFxaD5aaX5QKDdvKiZffmNJYjxuVktxOFkhTXNSQlg9
KkNOZEVFVVQ9ZCZKPgp6KyYoNTBWdzleQVlDfVZWZDdQY3YoaFdOTDFGUT1Pezc3LWowWHl6ITdt
QVplS24zdC1ZNkxQN3dSdXFhdWd5TUEKejR9OURCc0s1YVYrITMqZ0c9dn5XX0pZdTE7VkQ/bSt+
PGRJJShVYzJ8N1A9Qmx6eCU4O3J6Q093S14mbE85e20qCnokbVF+aCZLOFNaPX1IM1FJKytgTVVr
fWBLTiRUQSNiZz9DaD5zLWB5e0lyTztHMVNhaTNTZm9CYX5tbHJUUn5+Swp6QFZrYExzc1c7VUQh
MlN2QzUyV1kjMmxjX0hAbiNDYHRvdGx4NHRYYDktYXFKPDdjXllQSThDJVNFYHhGbCZxKkoKeiQ1
c2I0O3JpI3JeQXQ8eW5ELVE7WD5xRUg8cThqOTVHVEdkMCtBVlcqcDdKQ1Bndk59V0tDKU9ScStk
cDwkejQ8CnpAVlB3em9IWnUkNjM3YW9GZ3NyRyVnMChfTX56NE9RJEx0LWkmJnslK3EyfTNnIUFX
SDF2NmlwMH0lY0xJMnt5NQp6M3AjZjY9dD01fjtXcSM8Mj5NQCNjQlVITTk2cXk4MkZLKnh5cDQ1
ZSk4PSM3ZEI4emA2OTlpTGxVa1F0eHBLdzcKemFvUT5gRllnSXZsVDs3PGJrKEV2Sj80bEpsfXRM
JEIrNWxhZzl1QkA/dUNyREByNX42YiM/WFFZUExvcHd5SSgkCnpeU2pgP1lVTUZ9JEJWZnxnOWFl
U0ZDNjk+e0pJNUJoV35vYz9gOzBnQWxzPkB8RyhiS3RsSGA1PT1keighTzZuWAp6dlZ5bmE+RkZ1
O0FvSUtNQEcwaWZxI2coV0pZb20rOUcjczxeWVBjJVUoNmJTTHdoP25aRj9LRWRDNWtYTzdzaz0K
emR+THN3MTtFX1JxNk5LOzBiS1MtelFhaH48OyhWJiszUm0hNmIlWW5xV2ZacFlCRkF6NiVDVC1Z
QUBTbVlNNHU7Cno8e01IM05qQ2hybms9bWxMUCsqanIoZUd6ZypuKz84Vk0pJFpAflYpMm1DZiZa
Pj04MT9haDFOKVJZa1E8bEQ0YAp6Rl42VTtmO2Q7M1FLZy1gUTlMTnRjQHFfKDMlMzQ9YHlyVDlq
fXtaRCp9Tnt1a0E4RDYjbW5GPWEoRzcxJnhGK2gKeiUtOUExUG1mclE4PzExZXYqfG1jPm0pKzl3
c3AzZnUoVVgqR0I3ZDtVc1lXJnZZd2skI24rSGxUVzFsPHV8NXdFCno/WllkKE9GaH1zTU0oSSp6
QzNNSjE/Tn1rLU04QG0xNEk5ZjNXLVJFN19DTkt3YlNWYV56VnNTPVVIMEJFVy1WSwp6NDE5V0xY
WjtXM3plSEd0YlRCe3YoN0kmKnNYTTdyUHVjX1B7cWQ+UmtlQSY0ZDctPS1aM3dLfDM1amdxeGZH
TDwKeitTKiRHTSkpSmRAYjVRTG5lPTFYQGJJdk94cEBPeUhEbUFNPHQ0fj5YKm0/czc7QHFPS1Er
K1UqcUViYGlfTTdjCnooQjd2aFRUOT94OylgNH1RTGlQZ3YzclIlYEtqMD9JV0BLMnp0Wmk1Sj4k
KXZgRkl7JDxFYVBjP3oqRWQ7JFF4bgp6Wj9TN3ZXOURMSy0hRyE9eDNrclh1RyM4TD9BZiFvO3Je
RFZrMER5YGw/VWNqZFhjKTRuUjJjX0UhWEVJX1l7c2MKelFYZ1AxYkEoUGBlRWx5cldfSUNzS09X
MyNwT2tvSHRpKTcjbFFvb1BeJFN5U05NQTkrdj1PQDsjP0JfOEAxOHdmCnpUTUZteWNJU0ZlOChJ
KnhkPzJvIz51N0ljZUp9KjBvWnlNPk9lUnh4Vk0xPlpzXj47ez5BLTtpSHNtYExWUXE0TQp6K1Q3
RHgkaTh4REdgO3BtI3ZqfG1YdEB6Xmw9d1paXnhqUDZDKS1iNDtAdDJwPTlhUSNLUHpCU3FkS099
YD1MLUkKendIVlZKS29TTVlBN2VERlUwcSQrd01EK20hR3F6TXN8eVZqdHVve0huSVF4OWVoeUda
Uj1MaUMmZVlxMjxQS3lACnpiJitDX3p6U1J3V2E1JHBqODJRZiYhTVQrd2krNmFCdENfSV8zKC1Y
MD99TmZkYkwrUmxgX1Bze3BfK1ItZGg8Owp6cE9qY3dTPHhUfGErazxqclEqSUI+b2BYQih1XyhH
eT9OMGllfDBzMEU4PFdTbUlPQHNeR2x7ZEQ5JmBUY1NIdzIKej9VYT5BPk1id0xheHcyfWZMQ1h2
dz1eNyYkTTJWSWh2NDQjKmx0czVUYD1IaCZwZTZRY29ifWh0WXxzaWxjI3VrCnorM09eRXkkNjlF
c2BrViRHMXNfdmt8c3IwZTY3biY4dFNXdzZkazVLNDRGaWQtOVhUVyRRbWghI3x5QDJSIVlVdAp6
NWp2SmJ2OVB2bygpa0hYQXZrYHB2TFUqIWh+cVNMRnRGa1BqI1cyUW9rfTMrYmwmVE1OYHNpRnNP
dGl2bkM2cFYKemMkMChXb1dlMlhNVjI0QVNgP08tbXM2bVd6JmN5RnhWeVduJWo0UVlpQGkxTHZP
VEJGPj8wYlQ7czswYmNrQzR2CnpMYmErXnRfODNjJkRpVGNOdDFWSUZ6cGZudnBib3crPyR8QGB4
Y0V4PEpFSEJaPyR5Jl4pOCEmYVU8e2JVcCREaQp6R29HcTlKdEcoLU5zLUUyZDFPbjZiWXJmS3or
aTszOHY4MmFvZT0yQDdjTlpENk18N0YkcG9HMV8yej08UVQ4Q34Kekp4Rj84ZHF8X0l2Rkt2WEBD
eyNhMDlpMzI8TE15ajVOMm9VVCViXnJANG09YHhuaGJNeUJFOHRnVm1tPWAyNHFaCnooYkxtSVBt
QGc4dlIzY3Naaig8VndDUmUoaG1hQ1A1Nm0hKG11cGIteFgqdSl2eVYmQUYwcXUwaXJ4ZFA2U19K
Twp6enFwS09RWjlCazdnLV5MMD0oNVNTeWBjeGJeMT54UnZzc2RKeSp4TjJYIXEjVEkmfGxoRGVK
a15hTmhoTGAkQDwKej1oez9DYUYlMyNxJkAqQVFWdyt2dGNvP1pSXyReMmBNblI+OWJAfnJXWFN3
Szx+Nk9OVHlhXi1oUkBfc0J8dHhfCnp2bGE2U1MtbSVVJEJyRVojQSFVMEx4R2VZKX01OV9pKG8z
T2dnQlRMRlJ6RzhtbzVjWT42RlJCYyQrUylKKU5RNQp6XzRWfSVyQmR3Y3R2S1BpQF5KU0UySlhk
Y1Iyd2puQEBEUG9sOVEkZWVzQjwrVjNRZ2M3fm9lSSM9fDwjJEtuWUQKemAkcXh5RE1UZSY/Tnst
cmBEUkI0QSF6eDhlNl9qKzxeXy1hc15IUGpaSFZ9eFlGJHpgTTtPRC05SW4pbG5lSHZiCnp1ZXxF
LWtgNXhOISlIIUhmcWgtJnlzdjVUKj82VHVBa1lucXFeWX4tRShDN15fcjckbDJqaWA9ZShLY0BI
cTh1Xgp6KXNveWZeSjc/QitfOEdAMUFSQmJWel8jX25BfDl4OXBkP1Z0ejV+Q0ZuUWJqYFl8SlEk
RG51PyFIRnN0VzMqaiUKejVzYX0wZDwhciVHe3BBZzhSUHFgMiV+ayFEdGBaOygtR2J+IU5eRVM4
b09PPFFQX0soWipZR0JtVX1QYGhtKl9ZCnpEQlJMX0VGWS0meDVXKGxtTkEpM2xPUjJpNk1BazBR
a19qNHg4ODAtbDEyflBVdnIqKjZmVUo+ZGY9MXpIanxTNgp6e3tIZjcqS1dhT0JpeXYkYH1JeFdy
eVpLdFBCdyp+TXw8JmZXQnpwOCkpSmdJe3RTeDspeHRnbGJQfHNQXzFHVzAKekh0ViM+S2IkPU9f
OHN8dWt6YXBQQm1lI0RecXRqcjIpc2shOVJsd1ZjISQ2ezFsfVI9JnFRRFlnT2xfazdAOzUrClEz
TXoySyROekJDcENkMitKOW0zYUs+ej4lCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYTgwNjYz
OWY1MmU2ZmVjNzRiNDkyOGUxNTM2OGU0ZWU5NDhkYThjLi5iMmQ2ZjMxMTQ2OWEwNDcwYjg3OTVj
NDgwYjRiZTkzZDVhMWQyZjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM3NTYsMyArMzc1Niw2IEBAIEJVR1dLOTE0MjEgV0lONyA6
IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tMzktdC5zdmcgPSBQQVNTIENSQVNICiAKIC8v
IFN0YXJ0ZWQgZmFpbGluZyBhcm91bmQgcjEyMjc3MAogQlVHV0s5MTQ0NSBMSU5VWCA6IHBsdWdp
bnMvZW1iZWQtYXR0cmlidXRlcy1zdHlsZS5odG1sID0gUEFTUyBJTUFHRQorCisvLyBSZWJhc2Vs
aW5lIGFmdGVyIGxvY2FsaXplZCBzdHJpbmcgaXMgYWRkZWQgdG8gY2hyb21pdW0uCitCVUdXSzkx
NDQ1IDogZmFzdC9mb3Jtcy9jb2xvci9jb2xvci1waWNrZXItYXBwZWFyYW5jZS5odG1sID0gUEFT
UyBNSVNTSU5HIElNQUdFCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
ZjEyNWU3MGMzMjI4MjllNjRkNGRmYTYzODVlNTAyZWY4NTI1OTY4ZC4uMjZhMWJkNzFkZWU0ZGRm
MTRlNTMyNWI2NWRkZDI3M2Q5ZWUxNTdlYiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA3LTE4ICBLZWlzaGkgSGF0dG9yaSAgPGtl
aXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBkYXRhbGlzdCBVSSBmb3IgaW5w
dXQgdHlwZSBjb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1hbnVhbFRlc3RzL2Zvcm1zL2NvbG9yLXBpY2tlci5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wNy0xNyAgRGF2aWQgQmFyciAgPGRhdmlkYmFyckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SW50cm9kdWNlIEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04gY29tcGlsZSBmbGFnCmRpZmYg
LS1naXQgYS9NYW51YWxUZXN0cy9mb3Jtcy9jb2xvci1waWNrZXIuaHRtbCBiL01hbnVhbFRlc3Rz
L2Zvcm1zL2NvbG9yLXBpY2tlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YTM5NjM2OWE2NjBlYTE1N2Ex
NGU0NjA3NzVkNzc3NmQwYzNmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxUZXN0cy9mb3Jt
cy9jb2xvci1waWNrZXIuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNvbG9yIFBpY2tlciB0
ZXN0PC90aXRsZT4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWZm
ZmY7Cit9CitpZnJhbWUgeworICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7CisgICAgd2lkdGg6IDE4
MHB4OworICAgIGhlaWdodDogMjQwcHg7CisgICAgYm9yZGVyOiAwOworICAgIG92ZXJmbG93OiBo
aWRkZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPlRoaXMgaXMgYSB0ZXN0
YmVkIGZvciBhIGNvbG9yIHBpY2tlci48L3A+CisKKzxkaXY+PGlucHV0IHR5cGU9ImNvbG9yIiBp
ZD0iY29sb3IiPjwvZGl2PgorPGlmcmFtZT48L2lmcmFtZT4KKworPG9sIGlkPSJjb25zb2xlIiBz
dHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlOyI+Cis8L29sPgorCis8c2NyaXB0PgordmFyIGFy
Z3VtZW50cyA9IHsKKyAgICB2YWx1ZXMgOiBbJyMwMDAwMDAnLCAnIzQwNDA0MCcsICcjODA4MDgw
JywgJyNjMGMwYzAnLCAnI2ZmZmZmZicsICcjOTgwMDAwJywgJyNmZjAwMDAnLCAnI2ZmOTkwMCcs
ICcjZmZmZjAwJywgJyMwMGZmMDAnLCAnIzAwZmZmZicsICcjNGE4NmU4JywgJyMwMDAwZmYnLCAn
Izk5MDBmZicsICcjZmYwMGZmJywgJyM0MDQwNDAnLCAnIzgwODA4MCcsICcjYzBjMGMwJywgJyNm
ZmZmZmYnLCAnIzk4MDAwMCcsICcjZmYwMDAwJywgJyNmZjk5MDAnLCAnI2ZmZmYwMCcsICcjMDBm
ZjAwJywgJyMwMGZmZmYnLCAnIzRhODZlOCcsICcjMDAwMGZmJywgJyM5OTAwZmYnLCAnI2ZmMDBm
ZiddLAorICAgIG90aGVyQ29sb3JMYWJlbDogJ090aGVyLi4uJworfTsKKworZnVuY3Rpb24gb3Bl
bkNvbG9yUGlja2VyKGFyZ3MpIHsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07CisgICAgdmFyIGRvYyA9IGZyYW1lLmNvbnRlbnREb2N1
bWVudDsKKyAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTCA9ICc8aGVhZD48L2hlYWQ+
PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48L2Rpdj48L2JvZHk+JzsKKyAgICB2YXIgbGlu
ayA9IGRvYy5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CisgICAgbGluay5yZWwgPSAnc3R5bGVzaGVl
dCc7CisgICAgbGluay5ocmVmID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9jb2xv
clBpY2tlci5jc3M/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CisgICAgZG9jLmhlYWQuYXBw
ZW5kQ2hpbGQobGluayk7CisgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3Jp
cHQnKTsKKyAgICBzY3JpcHQuc3JjID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9j
b2xvclBpY2tlci5qcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKKyAgICBkb2MuYm9keS5h
cHBlbmRDaGlsZChzY3JpcHQpOworCisgICAgdmFyIHBhZ2VQb3B1cENvbnRyb2xsZXIgPSB7Cisg
ICAgICAgIHNldFZhbHVlQW5kQ2xvc2VQb3B1cDogZnVuY3Rpb24obnVtVmFsdWUsIHN0cmluZ1Zh
bHVlKSB7CisgICAgICAgICAgICB3aW5kb3cubG9nKCdudW1iZXI9JyArIG51bVZhbHVlICsgJywg
c3RyaW5nPSInICsgc3RyaW5nVmFsdWUgKyAnIicpOworICAgICAgICAgICAgaWYgKG51bVZhbHVl
ID09PSAwKQorICAgICAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sb3InKS52YWx1ZSA9IHN0cmluZ1ZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVz
c2FnZShKU09OLnN0cmluZ2lmeShhcmdzKSwgIioiKTsKKyAgICAgICAgZnJhbWUuY29udGVudFdp
bmRvdy5wYWdlUG9wdXBDb250cm9sbGVyID0gcGFnZVBvcHVwQ29udHJvbGxlcjsKKyAgICB9LCAx
MDApOworfQorCitmdW5jdGlvbiBsb2coc3RyKSB7CisgICAgdmFyIGVudHJ5ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnbGknKTsKKyAgICBlbnRyeS5pbm5lclRleHQgPSBzdHI7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChlbnRyeSk7Cit9CisK
K29wZW5Db2xvclBpY2tlcihhcmd1bWVudHMpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="161786"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>