<?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>151736</bug_id>
          
          <creation_ts>2015-12-01 18:30:30 -0800</creation_ts>
          <short_desc>Air: Support Architecture-specific forms and Opcodes</short_desc>
          <delta_ts>2015-12-14 11:54:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145492</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-01 18:30:30 -0800</bug_when>
    <thetext>We need to make some opcode platform specific (e.g. X86ConvertToQuadWord64) and forms (e.g. ARM immediates must have fewer than XX bits, where XX depends on the instruction).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148890</commentid>
    <comment_count>1</comment_count>
      <attachid>267281</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-13 21:37:03 -0800</bug_when>
    <thetext>Created attachment 267281
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148920</commentid>
    <comment_count>2</comment_count>
      <attachid>267281</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-14 02:21:18 -0800</bug_when>
    <thetext>Comment on attachment 267281
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=267281&amp;action=review

Does it mean that you are planning to support 32 bit architectures too? (x86 and ARMv7)
I just ask, because these platforms aren&apos;t supported by FTL JIT now.

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:96
&gt; +# armv6: means just armv7.

typo: not armv6, but armv7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149010</commentid>
    <comment_count>3</comment_count>
      <attachid>267281</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-14 10:36:17 -0800</bug_when>
    <thetext>Comment on attachment 267281
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=267281&amp;action=review

Nicely done.

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:78
&gt; +# x86_64: Fuzz UD:G, D:G
&gt; +#     Tmp, Tmp
&gt; +#     arm64: Tmp, Addr

I am not sure what this does since arm64 is not a subset of x86_64.

Did you mean to have the &quot;x86_64&quot; for the instruction?

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:100
&gt;  

It might be useful to also have an AVX runtime check in the future.

It looks like all the floating point ops have a nicer AVX version on X86.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149019</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-14 11:18:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 267281 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267281&amp;action=review
&gt; 
&gt; Nicely done.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:78
&gt; &gt; +# x86_64: Fuzz UD:G, D:G
&gt; &gt; +#     Tmp, Tmp
&gt; &gt; +#     arm64: Tmp, Addr
&gt; 
&gt; I am not sure what this does since arm64 is not a subset of x86_64.
&gt; 
&gt; Did you mean to have the &quot;x86_64&quot; for the instruction?

I meant for this example to say:

Fuzz UD:G D:G
    Tmp, Tmp
    arm64: Tmp, Addr

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:100
&gt; &gt;  
&gt; 
&gt; It might be useful to also have an AVX runtime check in the future.
&gt; 
&gt; It looks like all the floating point ops have a nicer AVX version on X86.

Long term, I think it&apos;s good to do that.

But using AVX introduces hazards when you mix with SSE, and the rest of JSC&apos;s JITs use SSE a lot.  We had to disable AVX in FTL to prevent horrendous 2x regressions.

Also, AVX instructions have a super fat encoding.  I&apos;m not sure that the benefit we get from three-operand form is enough to outweigh the reduced instruction density.

So, let&apos;s put off AVX until after we are happy with our SSE-based stuff.

Final thought: currently, the architecture selection in AirOpcode.opcodes is compile-time, since the generator emits #if&apos;s.  We would have to add the ability to do run-time checks if we wanted to have AVX.  It would probably not be practical for Inst::isValidForm() to use &apos;cpuid&apos; everytime it&apos;s called to check if AVX is present, so then we&apos;ll need some machinery to cache all of our &apos;cpuid&apos; queries.  Seems like a lot of work. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149021</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-14 11:23:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 267281 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267281&amp;action=review
&gt; 
&gt; Does it mean that you are planning to support 32 bit architectures too? (x86
&gt; and ARMv7)

Sort of.  B3 doesn&apos;t support 32-bit but it has a lot of the scaffolding needed to support it.

&gt; I just ask, because these platforms aren&apos;t supported by FTL JIT now.

Getting FTL to support 32-bit would be a lot of work.  Getting B3 to support 32-bit would require just:

1) Fix some minor bugs where code statically assumes 64-bit.  We have a few of those, especially in the test suite.
2) Add a 64-bit-to-32-bit lowering for Int64&apos;s.  One way to do it is to do the lowering in Air right after instruction selection, since you need to lower to 32-bit operations that produce multiple results and store some of their results in flags.  There&apos;s no way to express &quot;add with carry&quot; in B3 currently.

We aren&apos;t planning on doing this anytime soon, but I personally want to leave the door open.  I suspect that B3 will be useful to non-JSC clients.  For example, we might want to use it for YARR, or whatever other JIT someone comes up with in the future.

So, B3 will probably support more architectures than FTL does, because B3 isn&apos;t meant to be owned exclusively by FTL.

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:96
&gt; &gt; +# armv6: means just armv7.
&gt; 
&gt; typo: not armv6, but armv7

Fixed, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149038</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-14 11:54:56 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194045</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267281</attachid>
            <date>2015-12-13 21:37:03 -0800</date>
            <delta_ts>2015-12-14 10:36:17 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19570</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE1LTEyLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyOiBTdXBwb3J0IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmb3JtcyBhbmQgT3Bjb2RlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHJl
YWxseSBhd2Vzb21lIGFyY2hpdGVjdHVyZSBzZWxlY3Rpb24gdG8gdGhlIEFpck9wY29kZS5vcGNv
ZGVzIGZpbGUuIElmIGFuIG9wY29kZSBvcgorICAgICAgICBvcGNvZGUgZm9ybSBpcyB1bmF2YWls
YWJsZSBvbiBzb21lIGFyY2hpdGVjdHVyZSwgeW91IGNhbiBzdGlsbCBtZW50aW9uIGl0cyBuYW1l
IGluIEMrKyBjb2RlIChpdCdsbAorICAgICAgICBzdGlsbCBiZSBhIG1lbWJlciBvZiB0aGUgZW51
bSkgYnV0IGlzVmFsaWRGb3JtKCkgYW5kIGFsbCBvdGhlciByZWZsZWN0aXZlIHF1ZXJpZXMgd2ls
bCB0ZWxsIHlvdQorICAgICAgICB0aGF0IGl0IGRvZXNuJ3QgZXhpc3QuIFRoaXMgd2lsbCBtYWtl
IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciBzdGVlciBjbGVhciBvZiBpdCwgYW5kIGl0IHdpbGwK
KyAgICAgICAgYWxzbyBlbnN1cmUgdGhhdCB0aGUgc3BpbGxlciBkb2Vzbid0IHRyeSB0byB1c2Ug
YW55IHVuYXZhaWxhYmxlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhZGRyZXNzCisgICAgICAgIGZv
cm1zLgorCisgICAgICAgIFRoZSBuZXcgY2FwYWJpbGl0eSBpcyBkb2N1bWVudGVkIGV4dGVuc2l2
ZWx5IGluIGEgY29tbWVudCBpbiBBaXJPcGNvZGUub3Bjb2Rlcy4KKworICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5y
YjoKKwogMjAxNS0xMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBSZW1vdmUgRlRMOjpPdXRwdXQncyBkb3VibGVFcXVhbE9yVW5vcmRl
cmVkKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwkocmV2aXNpb24gMTk0MDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNTAgQEAKICMg
ICAgIEFkZHIsIFRtcAogIwogIyBJLmUuIGEgdHdvLWZvcm0gaW5zdHJ1Y3Rpb24gdGhhdCB1c2Vz
IGEgR1BSIG9yIGFuIGludCBpbW1lZGlhdGUgYW5kIHVzZXMrZGVmcyBhIGZsb2F0IHJlZ2lzdGVy
LgorIworIyBBbnkgb3Bjb2RlIG9yIG9wY29kZSBmb3JtIGNhbiBiZSBwcmVjZWRlZCB3aXRoIGFu
IGFyY2hpdGVjdHVyZSBsaXN0LCB3aGljaCByZXN0cmljdHMgdGhlIG9wY29kZSB0byB0aGUKKyMg
dW5pb24gb2YgdGhvc2UgYXJjaGl0ZWN0dXJlcy4gRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgdGhl
IG9ubHkgb3ZlcmxvYWQgb2YgdGhlIG9wY29kZSwgdGhlbiBpdCBtYWtlcyB0aGUKKyMgb3Bjb2Rl
IG9ubHkgYXZhaWxhYmxlIG9uIHg4Nl82NDoKKyMKKyMgeDg2XzY0OiBGdXp6IFVEOkcsIEQ6Rwor
IyAgICAgVG1wLCBUbXAKKyMgICAgIFRtcCwgQWRkcgorIworIyBCdXQgdGhpcyBvbmx5IHJlc3Ry
aWN0cyB0aGUgdHdvLW9wZXJhbmQgZm9ybSwgdGhlIG90aGVyIGZvcm0gaXMgYWxsb3dlZCBvbiBh
bGwgYXJjaGl0ZWN0dXJlczoKKyMKKyMgeDg2XzY0OiBGdXp6IFVEOkcsIEQ6RworIyAgICAgVG1w
LCBUbXAKKyMgICAgIFRtcCwgQWRkcgorIyBGdXp6IFVEOkcsIEQ6RywgVTpGCisjICAgICBUbXAs
IFRtcCwgVG1wCisjICAgICBUbXAsIEFkZHIsIFRtcAorIworIyBBbmQgeW91IGNhbiBhbHNvIHJl
c3RyaWN0IGluZGl2aWR1YWwgZm9ybXM6CisjCisjIHg4Nl82NDogRnV6eiBVRDpHLCBEOkcKKyMg
ICAgIFRtcCwgVG1wCisjICAgICBhcm02NDogVG1wLCBBZGRyCisjCisjIEFkZGl0aW9uYWxseSwg
eW91IGNhbiBoYXZlIGFuIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZSBhcmNoaXRlY3R1cmVzIG9m
IHRoZSBvcGNvZGUgb3ZlcmxvYWQgYW5kIHRoZQorIyBmb3JtLiBJbiB0aGlzIGV4YW1wbGUsIHRo
ZSB2ZXJzaW9uIHRoYXQgdGFrZXMgYW4gYWRkcmVzcyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBhcm12
NyB3aGlsZSB0aGUgb3RoZXIKKyMgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiBhcm12NyBvciB4
ODZfNjQ6CisjCisjIHg4Nl82NCBhcm12NzogQnV6eiBVOkcsIFVEOkYKKyMgICAgIFRtcCwgVG1w
CisjICAgICBJbW0sIFRtcAorIyAgICAgYXJtdjc6IEFkZHIsIFRtcAorIworIyBGaW5hbGx5LCB5
b3UgY2FuIHNwZWNpZnkgYXJjaGl0ZWN0dXJlcyB1c2luZyBoZWxwZnVsIGFyY2hpdGVjdHVyZSBn
cm91cHMuIEhlcmUgYXJlIGFsbCBvZiB0aGUKKyMgYXJjaGl0ZWN0dXJlIGtleXdvcmRzIHRoYXQg
d2Ugc3VwcG9ydDoKKyMKKyMgeDg2OiBtZWFucyB4ODYtMzIgb3IgeDg2LTY0LgorIyB4ODZfMzI6
IG1lYW5zIGp1c3QgeDg2LTMyLgorIyB4ODZfNjQ6IG1lYW5zIGp1c3QgeDg2LTY0LgorIyBhcm06
IG1lYW5zIGFybXY3IG9yIGFybTY0LgorIyBhcm12NjogbWVhbnMganVzdCBhcm12Ny4KKyMgYXJt
NjQ6IG1lYW5zIGp1c3QgYXJtNjQuCisjIDMyOiBtZWFucyB4ODYtMzIgb3IgYXJtdjcuCisjIDY0
OiBtZWFucyB4ODYtNjQgb3IgYXJtNjQuCiAKICMgTm90ZSB0aGF0IHRoZSBvcGNvZGVzIGhlcmUg
aGF2ZSBhIGxlYWRpbmcgY2FwaXRhbCAoQWRkMzIpIGJ1dCBtdXN0IGNvcnJlc3BvbmQgdG8gTWFj
cm9Bc3NlbWJsZXIKICMgQVBJIHRoYXQgaGFzIGEgbGVhZGluZyBsb3dlci1jYXNlIChhZGQzMiku
CkBAIC02MSw5OSArMTA1LDk5IEBAIE5vcAogCiBBZGQzMiBVOkcsIFVEOkcKICAgICBUbXAsIFRt
cAotICAgIEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKLSAgICBB
ZGRyLCBUbXAKLSAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogVG1w
LCBBZGRyCiAKIEFkZDMyIFU6RywgVTpHLCBEOkcKICAgICBJbW0sIFRtcCwgVG1wCiAgICAgVG1w
LCBUbXAsIFRtcAogCi1BZGQ2NCBVOkcsIFVEOkcKKzY0OiBBZGQ2NCBVOkcsIFVEOkcKICAgICBU
bXAsIFRtcAotICAgIEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAK
LSAgICBBZGRyLCBUbXAKLSAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4
NjogVG1wLCBBZGRyCiAKLUFkZDY0IFU6RywgVTpHLCBEOkcKKzY0OiBBZGQ2NCBVOkcsIFU6Rywg
RDpHCiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAogQWRkRG91YmxlIFU6
RiwgVUQ6RgogICAgIFRtcCwgVG1wCi0gICAgQWRkciwgVG1wCisgICAgeDg2OiBBZGRyLCBUbXAK
IAogQWRkRmxvYXQgVTpGLCBVRDpGCiAgICAgVG1wLCBUbXAKLSAgICBBZGRyLCBUbXAKKyAgICB4
ODY6IEFkZHIsIFRtcAogCiBTdWIzMiBVOkcsIFVEOkcKICAgICBUbXAsIFRtcAotICAgIEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKLSAgICBBZGRyLCBUbXAKLSAg
ICBUbXAsIEFkZHIKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogVG1wLCBBZGRyCiAKLVN1
YjY0IFU6RywgVUQ6RworNjQ6IFN1YjY0IFU6RywgVUQ6RwogICAgIFRtcCwgVG1wCi0gICAgSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAotICAgIEFkZHIsIFRtcAot
ICAgIFRtcCwgQWRkcgorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBUbXAsIEFkZHIKIAog
U3ViRG91YmxlIFU6RiwgVUQ6RgogICAgIFRtcCwgVG1wCi0gICAgQWRkciwgVG1wCisgICAgeDg2
OiBBZGRyLCBUbXAKIAogU3ViRmxvYXQgVTpGLCBVRDpGCiAgICAgVG1wLCBUbXAKLSAgICBBZGRy
LCBUbXAKKyAgICB4ODY6IEFkZHIsIFRtcAogCiBOZWczMiBVRDpHCiAgICAgVG1wCiAgICAgQWRk
cgogCi1OZWc2NCBVRDpHCis2NDogTmVnNjQgVUQ6RwogICAgIFRtcAogCiBNdWwzMiBVOkcsIFVE
OkcKICAgICBUbXAsIFRtcAotICAgIEFkZHIsIFRtcAorICAgIHg4NjogQWRkciwgVG1wCiAKIE11
bDMyIFU6RywgVTpHLCBEOkcKICAgICBJbW0sIFRtcCwgVG1wCiAKLU11bDY0IFU6RywgVUQ6Rwor
NjQ6IE11bDY0IFU6RywgVUQ6RwogICAgIFRtcCwgVG1wCiAKIE11bERvdWJsZSBVOkYsIFVEOkYK
ICAgICBUbXAsIFRtcAotICAgIEFkZHIsIFRtcAorICAgIHg4NjogQWRkciwgVG1wCiAKIE11bEZs
b2F0IFU6RiwgVUQ6RgogICAgIFRtcCwgVG1wCi0gICAgQWRkciwgVG1wCisgICAgeDg2OiBBZGRy
LCBUbXAKIAogRGl2RG91YmxlIFU6RiwgVUQ6RgogICAgIFRtcCwgVG1wCi0gICAgQWRkciwgVG1w
CisgICAgeDg2OiBBZGRyLCBUbXAKIAogRGl2RmxvYXQgVTpGLCBVRDpGCiAgICAgVG1wLCBUbXAK
LSAgICBBZGRyLCBUbXAKKyAgICB4ODY6IEFkZHIsIFRtcAogCi1YODZDb252ZXJ0VG9Eb3VibGVX
b3JkMzIgVTpHLCBEOkcKK3g4NjogWDg2Q29udmVydFRvRG91YmxlV29yZDMyIFU6RywgRDpHCiAg
ICAgVG1wKiwgVG1wKgogCi1YODZDb252ZXJ0VG9RdWFkV29yZDY0IFU6RywgRDpHCit4ODZfNjQ6
IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQgVTpHLCBEOkcKICAgICBUbXAqLCBUbXAqCiAKLVg4NkRp
djMyIFVEOkcsIFVEOkcsIFU6RworeDg2OiBYODZEaXYzMiBVRDpHLCBVRDpHLCBVOkcKICAgICBU
bXAqLCBUbXAqLCBUbXAKIAotWDg2RGl2NjQgVUQ6RywgVUQ6RywgVTpHCit4ODZfNjQ6IFg4NkRp
djY0IFVEOkcsIFVEOkcsIFU6RwogICAgIFRtcCosIFRtcCosIFRtcAogCiBMZWEgVUE6RywgRDpH
CkBAIC0xNjIsMTEgKzIwNiwxMSBAQCBMZWEgVUE6RywgRDpHCiBBbmQzMiBVOkcsIFVEOkcKICAg
ICBUbXAsIFRtcAogICAgIEltbSwgVG1wCi0gICAgVG1wLCBBZGRyCi0gICAgQWRkciwgVG1wCi0g
ICAgSW1tLCBBZGRyCisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW1tLCBBZGRyCiAKLUFuZDY0IFU6RywgVUQ6RworNjQ6IEFuZDY0IFU6RywgVUQ6Rwog
ICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAKIApAQCAtMTgwLDcgKzIyNCw3IEBAIExzaGlmdDMy
IFU6RywgVUQ6RwogICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1wCiAKLUxzaGlmdDY0IFU6Rywg
VUQ6RworNjQ6IExzaGlmdDY0IFU6RywgVUQ6RwogICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1w
CiAKQEAgLTE4OCw3ICsyMzIsNyBAQCBSc2hpZnQzMiBVOkcsIFVEOkcKICAgICBUbXAqLCBUbXAK
ICAgICBJbW0sIFRtcAogCi1Sc2hpZnQ2NCBVOkcsIFVEOkcKKzY0OiBSc2hpZnQ2NCBVOkcsIFVE
OkcKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCkBAIC0xOTYsNzEgKzI0MCw3MSBAQCBV
cnNoaWZ0MzIgVTpHLCBVRDpHCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotVXJzaGlm
dDY0IFU6RywgVUQ6RworNjQ6IFVyc2hpZnQ2NCBVOkcsIFVEOkcKICAgICBUbXAqLCBUbXAKICAg
ICBJbW0sIFRtcAogCiBPcjMyIFU6RywgVUQ6RwogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAK
LSAgICBUbXAsIEFkZHIKLSAgICBBZGRyLCBUbXAKLSAgICBJbW0sIEFkZHIKKyAgICB4ODY6IFRt
cCwgQWRkcgorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbW0sIEFkZHIKIAotT3I2NCBV
OkcsIFVEOkcKKzY0OiBPcjY0IFU6RywgVUQ6RwogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAK
IAogWG9yMzIgVTpHLCBVRDpHCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcAotICAgIFRtcCwg
QWRkcgotICAgIEFkZHIsIFRtcAotICAgIEltbSwgQWRkcgorICAgIHg4NjogVG1wLCBBZGRyCisg
ICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgogCi1Yb3I2NCBVOkcsIFVEOkcK
KzY0OiBYb3I2NCBVOkcsIFVEOkcKICAgICBUbXAsIFRtcAotICAgIFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBBZGRyCiAgICAgSW1tLCBUbXAKIAogTm90MzIgVUQ6RwogICAgIFRtcAotICAgIEFk
ZHIKKyAgICB4ODY6IEFkZHIKIAotTm90NjQgVUQ6RworNjQ6IE5vdDY0IFVEOkcKICAgICBUbXAK
LSAgICBBZGRyCisgICAgeDg2OiBBZGRyCiAKIFNxcnREb3VibGUgVTpGLCBVRDpGCiAgICAgVG1w
LCBUbXAKLSAgICBBZGRyLCBUbXAKKyAgICB4ODY6IEFkZHIsIFRtcAogCiBTcXJ0RmxvYXQgVTpG
LCBVRDpGCiAgICAgVG1wLCBUbXAKLSAgICBBZGRyLCBUbXAKKyAgICB4ODY6IEFkZHIsIFRtcAog
CiBDb252ZXJ0SW50MzJUb0RvdWJsZSBVOkcsIEQ6RgogICAgIFRtcCwgVG1wCi0gICAgQWRkciwg
VG1wCisgICAgeDg2OiBBZGRyLCBUbXAKIAotQ29udmVydEludDY0VG9Eb3VibGUgVTpHLCBEOkYK
KzY0OiBDb252ZXJ0SW50NjRUb0RvdWJsZSBVOkcsIEQ6RgogICAgIFRtcCwgVG1wCiAKIENvdW50
TGVhZGluZ1plcm9zMzIgVTpHLCBEOkcKICAgICBUbXAsIFRtcAotICAgIEFkZHIsIFRtcAorICAg
IHg4NjogQWRkciwgVG1wCiAKLUNvdW50TGVhZGluZ1plcm9zNjQgVTpHLCBEOkcKKzY0OiBDb3Vu
dExlYWRpbmdaZXJvczY0IFU6RywgRDpHCiAgICAgVG1wLCBUbXAKLSAgICBBZGRyLCBUbXAKKyAg
ICB4ODY6IEFkZHIsIFRtcAogCiBDb252ZXJ0RG91YmxlVG9GbG9hdCBVOkYsIEQ6RgogICAgIFRt
cCwgVG1wCi0gICAgQWRkciwgVG1wCisgICAgeDg2OiBBZGRyLCBUbXAKIAogQ29udmVydEZsb2F0
VG9Eb3VibGUgVTpGLCBEOkYKICAgICBUbXAsIFRtcAotICAgIEFkZHIsIFRtcAorICAgIHg4Njog
QWRkciwgVG1wCiAKICMgTm90ZSB0aGF0IE1vdmUgb3BlcmF0ZXMgb3ZlciB0aGUgZnVsbCByZWdp
c3RlciBzaXplLCB3aGljaCBpcyBlaXRoZXIgMzItYml0IG9yIDY0LWJpdCBkZXBlbmRpbmcgb24K
ICMgdGhlIHBsYXRmb3JtLiBJJ20gbm90IGVudGlyZWx5IHN1cmUgdGhhdCB0aGlzIGlzIGEgZ29v
ZCB0aGluZzsgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgaGF2ZSBhCkBAIC0zMDUsNyArMzQ5
LDcgQEAgTW92ZURvdWJsZSBVOkYsIEQ6RgogTW92ZVplcm9Ub0RvdWJsZSBEOkYKICAgICBUbXAK
IAotTW92ZTY0VG9Eb3VibGUgVTpHLCBEOkYKKzY0OiBNb3ZlNjRUb0RvdWJsZSBVOkcsIEQ6Rgog
ICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWREb3VibGUKIApAQCAtMzEzLDcgKzM1
Nyw3IEBAIE1vdmVJbnQzMlRvUGFja2VkIFU6RywgRDpGCiAgICAgVG1wLCBUbXAKICAgICBBZGRy
LCBUbXAgYXMgbG9hZEZsb2F0CiAKLU1vdmVEb3VibGVUbzY0IFU6RiwgRDpHCis2NDogTW92ZURv
dWJsZVRvNjQgVTpGLCBEOkcKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkNjQK
IApAQCAtMzQ3LDE1ICszOTEsMTUgQEAgQ29tcGFyZTMyIFU6RywgVTpHLCBVOkcsIEQ6RwogICAg
IFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKICAgICBSZWxDb25kLCBUbXAsIEltbSwgVG1wCiAKLUNv
bXBhcmU2NCBVOkcsIFU6RywgVTpHLCBEOkcKKzY0OiBDb21wYXJlNjQgVTpHLCBVOkcsIFU6Rywg
RDpHCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBU
bXAKIAogVGVzdDMyIFU6RywgVTpHLCBVOkcsIEQ6RwotICAgIFJlc0NvbmQsIEFkZHIsIEltbSwg
VG1wCisgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRtcCwg
VG1wLCBUbXAKIAotVGVzdDY0IFU6RywgVTpHLCBVOkcsIEQ6RworNjQ6IFRlc3Q2NCBVOkcsIFU6
RywgVTpHLCBEOkcKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1w
LCBUbXAsIFRtcAogCkBAIC0zNjMsNDEgKzQwNyw0MSBAQCBUZXN0NjQgVTpHLCBVOkcsIFU6Rywg
RDpHCiAjIHlvdSBvcHQgdGhlbSBpbnRvIHRoZSBibG9jayBvcmRlciBvcHRpbWl6YXRpb25zLgog
CiBCcmFuY2g4IFU6RywgVTpHLCBVOkcgL2JyYW5jaAotICAgIFJlbENvbmQsIEFkZHIsIEltbQot
ICAgIFJlbENvbmQsIEluZGV4LCBJbW0KKyAgICB4ODY6IFJlbENvbmQsIEFkZHIsIEltbQorICAg
IHg4NjogUmVsQ29uZCwgSW5kZXgsIEltbQogCiBCcmFuY2gzMiBVOkcsIFU6RywgVTpHIC9icmFu
Y2gKLSAgICBSZWxDb25kLCBBZGRyLCBJbW0KKyAgICB4ODY6IFJlbENvbmQsIEFkZHIsIEltbQog
ICAgIFJlbENvbmQsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0KLSAgICBSZWxDb25k
LCBUbXAsIEFkZHIKLSAgICBSZWxDb25kLCBBZGRyLCBUbXAKLSAgICBSZWxDb25kLCBJbmRleCwg
SW1tCisgICAgeDg2OiBSZWxDb25kLCBUbXAsIEFkZHIKKyAgICB4ODY6IFJlbENvbmQsIEFkZHIs
IFRtcAorICAgIHg4NjogUmVsQ29uZCwgSW5kZXgsIEltbQogCi1CcmFuY2g2NCBVOkcsIFU6Rywg
VTpHIC9icmFuY2gKKzY0OiBCcmFuY2g2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKICAgICBSZWxD
b25kLCBUbXAsIFRtcAotICAgIFJlbENvbmQsIFRtcCwgQWRkcgotICAgIFJlbENvbmQsIEFkZHIs
IFRtcAotICAgIFJlbENvbmQsIEluZGV4LCBUbXAKKyAgICB4ODY6IFJlbENvbmQsIFRtcCwgQWRk
cgorICAgIHg4NjogUmVsQ29uZCwgQWRkciwgVG1wCisgICAgeDg2OiBSZWxDb25kLCBJbmRleCwg
VG1wCiAKIEJyYW5jaFRlc3Q4IFU6RywgVTpHLCBVOkcgL2JyYW5jaAotICAgIFJlc0NvbmQsIEFk
ZHIsIEltbQotICAgIFJlc0NvbmQsIEluZGV4LCBJbW0KKyAgICB4ODY6IFJlc0NvbmQsIEFkZHIs
IEltbQorICAgIHg4NjogUmVzQ29uZCwgSW5kZXgsIEltbQogCiBCcmFuY2hUZXN0MzIgVTpHLCBV
OkcsIFU6RyAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAs
IEltbQotICAgIFJlc0NvbmQsIEFkZHIsIEltbQotICAgIFJlc0NvbmQsIEluZGV4LCBJbW0KKyAg
ICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbQorICAgIHg4NjogUmVzQ29uZCwgSW5kZXgsIEltbQog
CiAjIFdhcm5pbmc6IGZvcm1zIHRoYXQgdGFrZSBhbiBpbW1lZGlhdGUgd2lsbCBzaWduLWV4dGVu
ZCB0aGVpciBpbW1lZGlhdGUuIFlvdSBwcm9iYWJseSB3YW50CiAjIEJyYW5jaFRlc3QzMiBpbiBt
b3N0IGNhc2VzIHdoZXJlIHlvdSB1c2UgYW4gaW1tZWRpYXRlLgotQnJhbmNoVGVzdDY0IFU6Rywg
VTpHLCBVOkcgL2JyYW5jaAorNjQ6IEJyYW5jaFRlc3Q2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gK
ICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgSW1tCi0gICAgUmVzQ29u
ZCwgQWRkciwgSW1tCi0gICAgUmVzQ29uZCwgQWRkciwgVG1wCi0gICAgUmVzQ29uZCwgSW5kZXgs
IEltbQorICAgIHg4NjogUmVzQ29uZCwgQWRkciwgSW1tCisgICAgeDg2OiBSZXNDb25kLCBBZGRy
LCBUbXAKKyAgICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJbW0KIAogQnJhbmNoRG91YmxlIFU6Rywg
VTpGLCBVOkYgL2JyYW5jaAogICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wCkBAIC00MDgsNTIgKzQ1
Miw1MiBAQCBCcmFuY2hGbG9hdCBVOkcsIFU6RiwgVTpGIC9icmFuY2gKIEJyYW5jaEFkZDMyIFU6
RywgVTpHLCBVRDpHIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0NvbmQs
IEltbSwgVG1wCi0gICAgUmVzQ29uZCwgSW1tLCBBZGRyCi0gICAgUmVzQ29uZCwgVG1wLCBBZGRy
Ci0gICAgUmVzQ29uZCwgQWRkciwgVG1wCisgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFkZHIKKyAg
ICB4ODY6IFJlc0NvbmQsIFRtcCwgQWRkcgorICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAK
LUJyYW5jaEFkZDY0IFU6RywgVTpHLCBVRDpHIC9icmFuY2gKKzY0OiBCcmFuY2hBZGQ2NCBVOkcs
IFU6RywgVUQ6RyAvYnJhbmNoCiAgICAgUmVzQ29uZCwgSW1tLCBUbXAKICAgICBSZXNDb25kLCBU
bXAsIFRtcAogCiBCcmFuY2hNdWwzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCiAgICAgUmVzQ29u
ZCwgVG1wLCBUbXAKLSAgICBSZXNDb25kLCBBZGRyLCBUbXAKKyAgICB4ODY6IFJlc0NvbmQsIEFk
ZHIsIFRtcAogCiBCcmFuY2hNdWwzMiBVOkcsIFU6RywgVTpHLCBEOkcgL2JyYW5jaAogICAgIFJl
c0NvbmQsIFRtcCwgSW1tLCBUbXAKIAotQnJhbmNoTXVsNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5j
aAorNjQ6IEJyYW5jaE11bDY0IFU6RywgVTpHLCBVRDpHIC9icmFuY2gKICAgICBSZXNDb25kLCBU
bXAsIFRtcAogCiBCcmFuY2hTdWIzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCiAgICAgUmVzQ29u
ZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBJbW0sIFRtcAotICAgIFJlc0NvbmQsIEltbSwgQWRk
cgotICAgIFJlc0NvbmQsIFRtcCwgQWRkcgotICAgIFJlc0NvbmQsIEFkZHIsIFRtcAorICAgIHg4
NjogUmVzQ29uZCwgSW1tLCBBZGRyCisgICAgeDg2OiBSZXNDb25kLCBUbXAsIEFkZHIKKyAgICB4
ODY6IFJlc0NvbmQsIEFkZHIsIFRtcAogCi1CcmFuY2hTdWI2NCBVOkcsIFU6RywgVUQ6RyAvYnJh
bmNoCis2NDogQnJhbmNoU3ViNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAogICAgIFJlc0NvbmQs
IEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKIAogQnJhbmNoTmVnMzIgVTpHLCBVRDpH
IC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAKIAotQnJhbmNoTmVnNjQgVTpHLCBVRDpHIC9icmFu
Y2gKKzY0OiBCcmFuY2hOZWc2NCBVOkcsIFVEOkcgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcAog
CiBNb3ZlQ29uZGl0aW9uYWxseTMyIFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RwogICAgIFJlbENv
bmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseTY0IFU6RywgVTpHLCBV
OkcsIFU6RywgVUQ6RworNjQ6IE1vdmVDb25kaXRpb25hbGx5NjQgVTpHLCBVOkcsIFU6RywgVTpH
LCBVRDpHCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKIE1vdmVDb25kaXRpb25h
bGx5VGVzdDMyIFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RwogICAgIFJlc0NvbmQsIFRtcCwgVG1w
LCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgSW1tLCBUbXAsIFRtcAogCi1Nb3ZlQ29uZGl0
aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0OiBNb3ZlQ29uZGl0aW9u
YWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKICAgICBSZXNDb25kLCBUbXAsIFRt
cCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wLCBUbXAKIApAQCAtNDY2LDE0
ICs1MTAsMTQgQEAgTW92ZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOgogTW92
ZURvdWJsZUNvbmRpdGlvbmFsbHkzMiBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKICAgICBSZWxD
b25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCBVOkcs
IFU6RywgVTpHLCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0IFU6Rywg
VTpHLCBVOkcsIFU6RiwgVUQ6RgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCiBN
b3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3QzMiBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKICAg
ICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1w
LCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0NjQgVTpHLCBVOkcsIFU6RywgVTpG
LCBVRDpGCis2NDogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0NjQgVTpHLCBVOkcsIFU6Rywg
VTpGLCBVRDpGCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwg
VG1wLCBJbW0sIFRtcCwgVG1wCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
b3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDE5NDAyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5KQpA
QCAtOTIsMTEgKzkyLDEyIEBAIGNsYXNzIEtpbmQKIGVuZAogCiBjbGFzcyBGb3JtCi0gICAgYXR0
cl9yZWFkZXIgOmtpbmRzLCA6YWx0TmFtZQorICAgIGF0dHJfcmVhZGVyIDpraW5kcywgOmFsdE5h
bWUsIDphcmNocwogCi0gICAgZGVmIGluaXRpYWxpemUoa2luZHMsIGFsdE5hbWUpCisgICAgZGVm
IGluaXRpYWxpemUoa2luZHMsIGFsdE5hbWUsIGFyY2hzKQogICAgICAgICBAa2luZHMgPSBraW5k
cwogICAgICAgICBAYWx0TmFtZSA9IGFsdE5hbWUKKyAgICAgICAgQGFyY2hzID0gYXJjaHMKICAg
ICBlbmQKIGVuZAogCkBAIC0xODMsOCArMTg0LDEyIEBAIGRlZiBpc0tpbmQodG9rZW4pCiAgICAg
dG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChJbW02NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQp
fChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCiBlbmQKIAorZGVmIGlzQXJjaCh0b2tlbikKKyAg
ICB0b2tlbiA9fiAvXEEoKHg4Nil8KHg4Nl8zMil8KHg4Nl82NCl8KGFybSl8KGFybXY3KXwoYXJt
NjQpfCgzMil8KDY0KSlcWi8KK2VuZAorCiBkZWYgaXNLZXl3b3JkKHRva2VuKQotICAgIGlzVUQo
dG9rZW4pIG9yIGlzR0YodG9rZW4pIG9yIGlzS2luZCh0b2tlbikgb3IKKyAgICBpc1VEKHRva2Vu
KSBvciBpc0dGKHRva2VuKSBvciBpc0tpbmQodG9rZW4pIG9yIGlzQXJjaCh0b2tlbikgb3IKICAg
ICAgICAgdG9rZW4gPT0gInNwZWNpYWwiIG9yIHRva2VuID09ICJhcyIKIGVuZAogCkBAIC0yNTEs
NiArMjU2LDY2IEBAIGNsYXNzIFBhcnNlcgogICAgICAgICByZXN1bHQKICAgICBlbmQKIAorICAg
IGRlZiBwYXJzZUFyY2hzCisgICAgICAgIHJldHVybiBuaWwgdW5sZXNzIGlzQXJjaCh0b2tlbikK
KworICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICB3aGlsZSBpc0FyY2godG9rZW4pCisgICAg
ICAgICAgICBjYXNlIHRva2VuLnN0cmluZworICAgICAgICAgICAgd2hlbiAieDg2IgorICAgICAg
ICAgICAgICAgIHJlc3VsdCA8PCAiWDg2IgorICAgICAgICAgICAgICAgIHJlc3VsdCA8PCAiWDg2
XzY0IgorICAgICAgICAgICAgd2hlbiAieDg2XzMyIgorICAgICAgICAgICAgICAgIHJlc3VsdCA8
PCAiWDg2IgorICAgICAgICAgICAgd2hlbiAieDg2XzY0IgorICAgICAgICAgICAgICAgIHJlc3Vs
dCA8PCAiWDg2XzY0IgorICAgICAgICAgICAgd2hlbiAiYXJtIgorICAgICAgICAgICAgICAgIHJl
c3VsdCA8PCAiQVJNdjciCisgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICJBUk02NCIKKyAgICAg
ICAgICAgIHdoZW4gImFybXY3IgorICAgICAgICAgICAgICAgIHJlc3VsdCA8PCAiQVJNdjciCisg
ICAgICAgICAgICB3aGVuICJhcm02NCIKKyAgICAgICAgICAgICAgICByZXN1bHQgPDwgIkFSTTY0
IgorICAgICAgICAgICAgd2hlbiAiMzIiCisgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICJYODYi
CisgICAgICAgICAgICAgICAgcmVzdWx0IDw8ICJBUk12NyIKKyAgICAgICAgICAgIHdoZW4gIjY0
IgorICAgICAgICAgICAgICAgIHJlc3VsdCA8PCAiWDg2XzY0IgorICAgICAgICAgICAgICAgIHJl
c3VsdCA8PCAiQVJNNjQiCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmFpc2Ug
dG9rZW4uc3RyaW5nCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGFkdmFuY2UKKyAgICAg
ICAgZW5kCisKKyAgICAgICAgY29uc3VtZSgiOiIpCisgICAgICAgIEBsYXN0QXJjaHMgPSByZXN1
bHQKKyAgICBlbmQKKworICAgIGRlZiBjb25zdW1lQXJjaHMKKyAgICAgICAgcmVzdWx0ID0gQGxh
c3RBcmNocworICAgICAgICBAbGFzdEFyY2hzID0gbmlsCisgICAgICAgIHJlc3VsdAorICAgIGVu
ZAorCisgICAgZGVmIHBhcnNlQW5kQ29uc3VtZUFyY2hzCisgICAgICAgIHBhcnNlQXJjaHMKKyAg
ICAgICAgY29uc3VtZUFyY2hzCisgICAgZW5kCisKKyAgICBkZWYgaW50ZXJzZWN0QXJjaHMobGVm
dCwgcmlnaHQpCisgICAgICAgIHJldHVybiBsZWZ0IHVubGVzcyByaWdodAorICAgICAgICByZXR1
cm4gcmlnaHQgdW5sZXNzIGxlZnQKKworICAgICAgICBsZWZ0LnNlbGVjdCB7CisgICAgICAgICAg
ICB8IHZhbHVlIHwKKyAgICAgICAgICAgIHJpZ2h0LmZpbmQgeworICAgICAgICAgICAgICAgIHwg
b3RoZXJWYWx1ZSB8CisgICAgICAgICAgICAgICAgdmFsdWUgPT0gb3RoZXJWYWx1ZQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgZW5kCisKICAgICBkZWYgcGFyc2UKICAgICAgICAgcmVz
dWx0ID0ge30KICAgICAgICAgCkBAIC0yNjUsNiArMzMwLDggQEAgY2xhc3MgUGFyc2VyCiAKICAg
ICAgICAgICAgICAgICByZXN1bHRbb3Bjb2RlTmFtZV0gPSBPcGNvZGUubmV3KG9wY29kZU5hbWUs
IHRydWUpCiAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3Bjb2RlQXJjaHMgPSBw
YXJzZUFuZENvbnN1bWVBcmNocworCiAgICAgICAgICAgICAgICAgb3Bjb2RlTmFtZSA9IGNvbnN1
bWVJZGVudGlmaWVyCiAKICAgICAgICAgICAgICAgICBpZiByZXN1bHRbb3Bjb2RlTmFtZV0KQEAg
LTMwNiwxMCArMzczLDEyIEBAIGNsYXNzIFBhcnNlcgogICAgICAgICAgICAgICAgICAgICBhZHZh
bmNlCiAgICAgICAgICAgICAgICAgZW5kCiAKKyAgICAgICAgICAgICAgICBwYXJzZUFyY2hzCiAg
ICAgICAgICAgICAgICAgaWYgaXNLaW5kKHRva2VuKQogICAgICAgICAgICAgICAgICAgICBsb29w
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmRzID0gW10KICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsdE5hbWUgPSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1BcmNocyA9
IGNvbnN1bWVBcmNocwogICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2luZHMgPDwgS2luZC5uZXcoY29uc3VtZUtpbmQpCiAKQEAgLTM0
MCwxNCArNDA5LDE2IEBAIGNsYXNzIFBhcnNlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1zIDw8IEZvcm0ubmV3KGtp
bmRzLCBhbHROYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybXMgPDwgRm9ybS5uZXco
a2luZHMsIGFsdE5hbWUsIGludGVyc2VjdEFyY2hzKG9wY29kZUFyY2hzLCBmb3JtQXJjaHMpKQor
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUFyY2hzCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhayB1bmxlc3MgaXNLaW5kKHRva2VuKQogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgZW5kCiAKICAgICAgICAgICAgICAgICBpZiBzaWduYXR1cmUubGVuZ3Ro
ID09IDAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIGZvcm1zLmxlbmd0aCA9PSAw
Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1zIDw8IEZvcm0ubmV3KFtdLCBuaWwpCisgICAgICAg
ICAgICAgICAgICAgIGZvcm1zIDw8IEZvcm0ubmV3KFtdLCBuaWwsIG9wY29kZUFyY2hzKQogICAg
ICAgICAgICAgICAgIGVuZAogCiAgICAgICAgICAgICAgICAgb3Bjb2RlLm92ZXJsb2FkcyA8PCBP
dmVybG9hZC5uZXcoc2lnbmF0dXJlLCBmb3JtcykKQEAgLTQxMiw2ICs0ODMsNyBAQCBkZWYgbWF0
Y2hGb3JtcyhvdXRwLCBzcGVlZCwgZm9ybXMsIGNvbHVtCiAgICAgaWYgY29sdW1uSW5kZXggPj0g
Zm9ybXNbMF0ua2luZHMubGVuZ3RoCiAgICAgICAgIHJhaXNlICJEaWQgbm90IHJlZHVjZSB0byBv
bmUgZm9ybTogI3tmb3Jtcy5pbnNwZWN0fSIgdW5sZXNzIGZvcm1zLmxlbmd0aCA9PSAxCiAgICAg
ICAgIGNhbGxiYWNrW2Zvcm1zWzBdXQorICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKICAgICAg
ICAgcmV0dXJuCiAgICAgZW5kCiAgICAgCkBAIC00OTcsNiArNTY5LDIzIEBAIGRlZiBtYXRjaElu
c3RPdmVybG9hZEZvcm0ob3V0cCwgc3BlZWQsIGkKICAgICB9CiBlbmQKIAorZGVmIGJlZ2luQXJj
aHMob3V0cCwgYXJjaHMpCisgICAgcmV0dXJuIHVubGVzcyBhcmNocworICAgIGlmIGFyY2hzLmVt
cHR5PworICAgICAgICBvdXRwLnB1dHMgIiNpZiAwIgorICAgICAgICByZXR1cm4KKyAgICBlbmQK
KyAgICBvdXRwLnB1dHMoIiNpZiAiICsgYXJjaHMubWFwIHsKKyAgICAgICAgICAgICAgICAgIHwg
YXJjaCB8CisgICAgICAgICAgICAgICAgICAiQ1BVKCN7YXJjaH0pIgorICAgICAgICAgICAgICB9
LmpvaW4oIiB8fCAiKSkKK2VuZAorCitkZWYgZW5kQXJjaHMob3V0cCwgYXJjaHMpCisgICAgcmV0
dXJuIHVubGVzcyBhcmNocworICAgIG91dHAucHV0cyAiI2VuZGlmIgorZW5kCisKIHdyaXRlSCgi
T3Bjb2RlVXRpbHMiKSB7CiAgICAgfCBvdXRwIHwKICAgICBvdXRwLnB1dHMgIiNpbmNsdWRlIFwi
QWlySW5zdC5oXCIiCkBAIC01NTksOCArNjQ4LDEwIEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7
CiAgICAgICAgICAgICAgICAgZmlsdGVyID0gcHJvYyB7IGZhbHNlIH0KICAgICAgICAgICAgICAg
ICBjYWxsYmFjayA9IHByb2MgewogICAgICAgICAgICAgICAgICAgICB8IGZvcm0gfAotICAgICAg
ICAgICAgICAgICAgICBzcGVjaWFsID0gKG5vdCBmb3JtLmtpbmRzLmRldGVjdCB7IHwga2luZCB8
IGtpbmQuc3BlY2lhbCB9KQotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JF
VFVSTigje3NwZWNpYWx9KTsiCisgICAgICAgICAgICAgICAgICAgIG5vdFNwZWNpYWwgPSAobm90
IGZvcm0ua2luZHMuZGV0ZWN0IHsgfCBraW5kIHwga2luZC5zcGVjaWFsIH0pCisgICAgICAgICAg
ICAgICAgICAgIGJlZ2luQXJjaHMob3V0cCwgZm9ybS5hcmNocykKKyAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oI3tub3RTcGVjaWFsfSk7IgorICAgICAgICAgICAg
ICAgICAgICBlbmRBcmNocyhvdXRwLCBmb3JtLmFyY2hzKQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtYXRjaEZvcm1zKG91dHAsIDpzYWZlLCBvdmVybG9hZC5mb3JtcywgMCwg
Y29sdW1uR2V0dGVyLCBmaWx0ZXIsIGNhbGxiYWNrKQogICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiYnJlYWs7IgpAQCAtNjI2LDYgKzcxNyw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikg
ewogICAgICAgICAgICAgb3V0cC5wdXRzICJyZXR1cm4gZmFsc2U7IgogICAgICAgICAgICAgb3V0
cC5wdXRzICJPUEdFTl9SRVRVUk4oYXJnc1swXS5zcGVjaWFsKCktPmlzVmFsaWQoKnRoaXMpKTsi
CiAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJlZ2luQXJjaHMob3V0cCwgZm9ybS5hcmNocykK
ICAgICAgICAgICAgIG5lZWRzTW9yZVZhbGlkYXRpb24gPSBmYWxzZQogICAgICAgICAgICAgb3Zl
cmxvYWQuc2lnbmF0dXJlLmxlbmd0aC50aW1lcyB7CiAgICAgICAgICAgICAgICAgfCBpbmRleCB8
CkBAIC02NDcsNiArNzM5LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAgICAgICAgICAgIGVu
ZAogICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4odHJ1ZSk7IgorICAgICAgICAg
ICAgZW5kQXJjaHMob3V0cCwgZm9ybS5hcmNocykKICAgICAgICAgZW5kCiAgICAgfQogICAgIG91
dHAucHV0cyAicmV0dXJuIGZhbHNlOyIKQEAgLTcyMCw3ICs4MTMsNyBAQCB3cml0ZUgoIk9wY29k
ZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgbnVtWWVzID09IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRG9u
J3QgZW1pdCBhbnl0aGluZywganVzdCBkcm9wIHRvIGRlZmF1bHQuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBEb24ndCBlbWl0IGFueXRoaW5nLCBqdXN0IGRyb3AgdG8gZGVmYXVsdC4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmIG51bU5vID09IDAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3Ro
fToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dHAucHV0cyAiT1BHRU5fUkVUVVJOKHRydWUpOyIKQEAgLTc1OCw3ICs4NTEsMTAgQEAgd3JpdGVI
KCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayA9IHByb2MgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IGZvcm0gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkFyY2hzKG91dHAs
IGZvcm0uYXJjaHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAi
T1BHRU5fUkVUVVJOKHRydWUpOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5k
QXJjaHMob3V0cCwgZm9ybS5hcmNocykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hGb3JtcyhvdXRwLCA6c2FmZSwgb3Zlcmxv
YWQuZm9ybXMsIDAsIGNvbHVtbkdldHRlciwgZmlsdGVyLCBjYWxsYmFjaykKIApAQCAtODU4LDYg
Kzk1NCw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICBpZiBvcGNvZGUu
c3BlY2lhbAogICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oYXJnc1swXS5zcGVj
aWFsKCktPmdlbmVyYXRlKCp0aGlzLCBqaXQsIGNvbnRleHQpKTsiCiAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGJlZ2luQXJjaHMob3V0cCwgZm9ybS5hcmNocykKICAgICAgICAgICAgIGlmIGZv
cm0uYWx0TmFtZQogICAgICAgICAgICAgICAgIG1ldGhvZE5hbWUgPSBmb3JtLmFsdE5hbWUKICAg
ICAgICAgICAgIGVsc2UKQEAgLTg5OSw2ICs5OTYsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRl
ZCIpIHsKIAogICAgICAgICAgICAgb3V0cC5wdXRzICIpOyIKICAgICAgICAgICAgIG91dHAucHV0
cyAiT1BHRU5fUkVUVVJOKHJlc3VsdCk7IgorICAgICAgICAgICAgZW5kQXJjaHMob3V0cCwgZm9y
bS5hcmNocykKICAgICAgICAgZW5kCiAgICAgfQogICAgIG91dHAucHV0cyAiUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsiCg==
</data>
<flag name="review"
          id="292339"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>