<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>100</bug_id>
          
          <creation_ts>2004-07-24 09:43:29 +0200</creation_ts>
          <short_desc>Order of operations matters for fullscreen app</short_desc>
          <delta_ts>2010-03-24 07:46:48 +0100</delta_ts>
          <reporter_accessible>0</reporter_accessible>
          <cclist_accessible>0</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Jogl</product>
          <component>core</component>
          <version>1</version>
          <rep_platform>All</rep_platform>
          <op_sys>windows</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sven Gothel">sgothel</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          
          
          <cf_type>DEFECT</cf_type>
          <cf_scm_refs></cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116</commentid>
    <comment_count>0</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2010-03-24 07:46:48 +0100</bug_when>
    <thetext>


---- Reported by caoimhin 2004-07-24 09:43:29 ----

When trying to run a fullscreen application (attached Order.java source code), 
whether the canvas is attached to the frame before or after the frame is made 
visible critically affects the application&apos;s initialization.  When the canvas 
is attached before the application has entered fullscreen, the application 
fails to finish initialization, displaying an unresponsive &quot;white screen of 
death&quot; and never proceeding beyond that point.

Order of attachment does not seem to matter in windowed applications.

All combinations of ATI_WORKAROUND and sun.java3d.noddraw flags were tested 
without any affect.

Hardware and software tested under:
java version &quot;1.4.2_04&quot;
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)

Jogl 1.1b04 (July 16)

------------------
System Information
------------------
Time of this report: 7/24/2004, 09:37:36
       Machine name: VENUS
   Operating System: Windows XP Professional (5.1, Build 2600) Service Pack 1 
(2600.xpsp2.030422-1633)
           Language: English (Regional Setting: English)
System Manufacturer: Gateway                         
       System Model: Gateway 450RGH                  
               BIOS: Rev 1.0                 
          Processor: Intel(R) Pentium(R) M processor 1700MHz
             Memory: 1022MB RAM
          Page File: 182MB used, 2279MB available
        Windows Dir: C:\WINDOWS
    DirectX Version: DirectX 9.0b (4.09.0000.0902)
DX Setup Parameters: Not found
     DxDiag Version: 5.03.0001.0902 32bit Unicode

---------------
Display Devices
---------------
        Card name: ATI MOBILITY RADEON 9600
     Manufacturer: ATI Technologies Inc.
        Chip type: MOBILITY RADEON 9600 Series AGP (0x4E50)
         DAC type: Internal DAC(350MHz)
       Device Key: Enum\PCI\VEN_1002&amp;DEV_4E50&amp;SUBSYS_0475107B&amp;REV_00
   Display Memory: 128.0 MB
     Current Mode: 1600 x 1200 (32 bit) (60Hz)
          Monitor: Default Monitor
  Monitor Max Res: 
      Driver Name: ati2dvag.dll
   Driver Version: 6.14.0010.6414 (English)
      DDI Version: 9 (or higher)
Driver Attributes: Final Retail
 Driver Date/Size: 4/17/2004 15:48:34, 384512 bytes
      WHQL Logo&apos;d: Yes
  WHQL Date Stamp: n/a
              VDD: n/a
         Mini VDD: ati2mtag.sys
    Mini VDD Date: 4/17/2004 15:48:35, 647680 bytes
Device Identifier: {D7B71EE2-0D10-11CF-C56A-7F24A1C2CB35}
        Vendor ID: 0x1002
        Device ID: 0x4E50
        SubSys ID: 0x0475107B
      Revision ID: 0x0000
      Revision ID: 0x0000
      Video Accel: ModeMPEG2_C ModeMPEG2_D 
 Deinterlace Caps: {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=
(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,1) Caps=DeinterlaceTech_PixelAdaptive 
                   {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=
(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) 
Caps=DeinterlaceTech_BOBVerticalStretch 
                   {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=
(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,1) Caps=DeinterlaceTech_PixelAdaptive 
                   {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=
(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) 
Caps=DeinterlaceTech_BOBVerticalStretch 
                   {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=
(YV12,0x32315659) Frames(Prev/Fwd/Back)=(0,0,1) 
Caps=DeinterlaceTech_PixelAdaptive 
                   {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=
(YV12,0x32315659) Frames(Prev/Fwd/Back)=(0,0,0) 
Caps=DeinterlaceTech_BOBVerticalStretch 
                   {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=
(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,1) 
Caps=DeinterlaceTech_PixelAdaptive 
                   {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=
(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) 
Caps=DeinterlaceTech_BOBVerticalStretch 
         Registry: OK
     DDraw Status: Enabled
       D3D Status: Enabled
       AGP Status: Enabled



---- Additional Comments From caoimhin 2004-07-24 09:44:41 ----

Created an attachment
Example of &quot;incorrect&quot; order which fails in fullscreen




---- Additional Comments From kbr 2005-01-31 09:54:55 ----

This test case now no longer crashes/freezes on either ATI or NVidia hardware
with the latest sources in the JOGL CVS repository, which will be released in
1.1 b08 and which include enhanced code for the single-threaded ATI workaround.
However, when running with -Dsun.java2d.noddraw=true on ATI hardware, the
application frequently believes the window is incorrectly sized, taking up
roughly four times the visible screen area. This may be a bug in the JDK&apos;s
full-screen support, but it would be good to find the root cause and either work
around it or fix it in the JDK.




---- Additional Comments From kbr 2005-01-31 09:56:14 ----

Actually it appears that the application believes the fullscreen window is
incorrectly sized on any hardware with -Dsun.java2d.noddraw=true, not just ATI&apos;s.




---- Additional Comments From kbr 2005-01-31 15:51:24 ----

Confirmed that there is a change in behavior of setFullScreenWindow() /
setDisplayMode() between 1.4.0 and 1.4.1. Although 1.4.0 appears to work
correctly, I believe this is a fluke, because the top-level JFrame is resized to
the dimensions of the screen before the display mode change, and only the
GLCanvas retains its original size and location (upper-left corner of the
JFrame, and 640x480 size). A workaround is to schedule a setSize(640, 480) on
the GLDrawable inside of the GLEventListener&apos;s init() method using
EventQueue.invokeLater() (doing this inside of the GLEventListener&apos;s callback
causes OpenGL operations to fail -- this could be a problem).

I&apos;m going to mark this as &quot;works for me&quot; because the underlying
JOGL_SINGLE_THREADED_WORKAROUND, done for another bug, is the true fix. I&apos;m also
going to file a new bug to try to work around the full-screen issue.




--- Bug imported by sgothel@jausoft.com 2010-03-24 07:46 EDT  ---

This bug was previously known as _bug_ 100 at https://jogl.dev.java.net/bugs/show_bug.cgi?id=100
Imported an attachment (id=25)

The original submitter of attachment 25 is unknown.
   Reassigning to the person who moved it here: sgothel@jausoft.com.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25</attachid>
            <date>2004-07-24 09:44:00 +0200</date>
            <delta_ts>2004-07-24 09:44:00 +0200</delta_ts>
            <desc>Example of &quot;incorrect&quot; order which fails in fullscreen</desc>
            <filename>Order.java</filename>
            <type>text/plain</type>
            <size>16116</size>
            <attacher name="Sven Gothel">sgothel</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCmltcG9ydCBqYXZh
eC5zd2luZy4qOw0KaW1wb3J0IG5ldC5qYXZhLmdhbWVzLmpvZ2wuKjsNCmltcG9ydCBuZXQuamF2
YS5nYW1lcy5qb2dsLnV0aWwuKjsNCg0KcHVibGljIGNsYXNzIE9yZGVyDQp7DQogICAgcHJpdmF0
ZSBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfV0lEVEggPSA2NDA7DQogICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgaW50IERFRkFVTFRfSEVJR0hUID0gNDgwOw0KICAgIA0KICAgIHB1YmxpYyBzdGF0
aWMgR0xEaXNwbGF5IGNyZWF0ZUdMRGlzcGxheShTdHJpbmcgdGl0bGUpDQogICAgew0KICAgICAg
ICBHcmFwaGljc0RldmljZSBkZXZpY2UgPSBHcmFwaGljc0Vudmlyb25tZW50LmdldExvY2FsR3Jh
cGhpY3NFbnZpcm9ubWVudCgpLmdldERlZmF1bHRTY3JlZW5EZXZpY2UoKTsNCiAgICAgICAgYm9v
bGVhbiBmdWxsc2NyZWVuID0gZmFsc2U7DQogICAgICAgIGlmIChkZXZpY2UuaXNGdWxsU2NyZWVu
U3VwcG9ydGVkKCkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGludCBzZWxlY3RlZE9wdGlvbiA9
IEpPcHRpb25QYW5lLnNob3dPcHRpb25EaWFsb2cobnVsbCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvdyB3b3VsZCB5b3Ug
bGlrZSB0byBydW4gdGhpcyBsZXNzb24/IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPcHRpb25QYW5l
LllFU19OT19PUFRJT04sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEpPcHRpb25QYW5lLlFVRVNUSU9OX01FU1NBR0UsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBPYmplY3RbXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkZ1bGxzY3JlZW4iLCAiV2luZG93ZWQi
fSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIldpbmRvd2VkIik7DQogICAgICAgICAgICBmdWxsc2NyZWVuID0gc2VsZWN0ZWRP
cHRpb24gPT0gMDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gbmV3IEdMRGlzcGxheSh0aXRs
ZSwgREVGQVVMVF9XSURUSCwgREVGQVVMVF9IRUlHSFQsIGZ1bGxzY3JlZW4pOw0KICAgIH0NCiAg
ICANCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykNCiAgew0KICAgIEdM
RGlzcGxheSBuZWhlR0xEaXNwbGF5ID0gY3JlYXRlR0xEaXNwbGF5KCJMZXNzb24gMDU6IDNEIFNo
YXBlcyIpOw0KICAgIG5laGVHTERpc3BsYXkuYWRkR0xFdmVudExpc3RlbmVyKG5ldyBSZW5kZXJl
cigpKTsNCiAgICBuZWhlR0xEaXNwbGF5LnN0YXJ0KCk7DQogIH0NCn0NCi8qKiBQb3J0IG9mIHRo
ZSBOZUhlIE9wZW5HTCBUdXRvcmlhbCAoTGVzc29uIDUpDQogKiB0byBKYXZhIHVzaW5nIHRoZSBK
b2dsIGludGVyZmFjZSB0byBPcGVuR0wuICBKb2dsIGNhbiBiZSBvYnRhaW5lZA0KICogYXQgaHR0
cDovL2pvZ2wuZGV2LmphdmEubmV0Lw0KICoNCiAqIEBhdXRob3IgS2V2aW4gRHVsaW5nIChqYXR0
aWVyQGhvdG1haWwuY29tKQ0KICovDQpjbGFzcyBSZW5kZXJlciBpbXBsZW1lbnRzIEdMRXZlbnRM
aXN0ZW5lcg0Kew0KICBwcml2YXRlIGZsb2F0IHJxdWFkID0gMC4wZjsNCiAgcHJpdmF0ZSBmbG9h
dCBydHJpID0gMC4wZjsNCiAgDQogIC8qKiBDYWxsZWQgYnkgdGhlIGRyYXdhYmxlIHRvIGluaXRp
YXRlIE9wZW5HTCByZW5kZXJpbmcgYnkgdGhlIGNsaWVudC4NCiAgICogQWZ0ZXIgYWxsIEdMRXZl
bnRMaXN0ZW5lcnMgaGF2ZSBiZWVuIG5vdGlmaWVkIG9mIGEgZGlzcGxheSBldmVudCwgdGhlDQog
ICAqIGRyYXdhYmxlIHdpbGwgc3dhcCBpdHMgYnVmZmVycyBpZiBuZWNlc3NhcnkuDQogICAqIEBw
YXJhbSBnTERyYXdhYmxlIFRoZSBHTERyYXdhYmxlIG9iamVjdC4NCiAgICovDQogIHB1YmxpYyB2
b2lkIGRpc3BsYXkoR0xEcmF3YWJsZSBnTERyYXdhYmxlKQ0KICB7DQogICAgZmluYWwgR0wgZ2wg
PSBnTERyYXdhYmxlLmdldEdMKCk7DQogICAgZ2wuZ2xDbGVhcihHTC5HTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0wuR0xfREVQVEhfQlVGRkVSX0JJVCk7DQogICAgZ2wuZ2xMb2FkSWRlbnRpdHkoKTsN
CiAgICBnbC5nbFRyYW5zbGF0ZWYoLTEuNWYsIDAuMGYsIC02LjBmKTsNCiAgICBnbC5nbFJvdGF0
ZWYocnRyaSwgMC4wZiwgMS4wZiwgMC4wZik7DQogICAgZ2wuZ2xCZWdpbihHTC5HTF9UUklBTkdM
RVMpOwkJICAgIC8vIERyYXdpbmcgVXNpbmcgVHJpYW5nbGVzDQogICAgZ2wuZ2xDb2xvcjNmKDEu
MGYsMC4wZiwwLjBmKTsJCQkvLyBSZWQNCiAgICBnbC5nbFZlcnRleDNmKCAwLjBmLCAxLjBmLCAw
LjBmKTsJCQkvLyBUb3AgT2YgVHJpYW5nbGUgKEZyb250KQ0KICAgIGdsLmdsQ29sb3IzZigwLjBm
LDEuMGYsMC4wZik7CQkJLy8gR3JlZW4NCiAgICBnbC5nbFZlcnRleDNmKC0xLjBmLC0xLjBmLCAx
LjBmKTsJCQkvLyBMZWZ0IE9mIFRyaWFuZ2xlIChGcm9udCkNCiAgICBnbC5nbENvbG9yM2YoMC4w
ZiwwLjBmLDEuMGYpOwkJCS8vIEJsdWUNCiAgICBnbC5nbFZlcnRleDNmKCAxLjBmLC0xLjBmLCAx
LjBmKTsJCQkvLyBSaWdodCBPZiBUcmlhbmdsZSAoRnJvbnQpDQogICAgZ2wuZ2xDb2xvcjNmKDEu
MGYsMC4wZiwwLjBmKTsJCQkvLyBSZWQNCiAgICBnbC5nbFZlcnRleDNmKCAwLjBmLCAxLjBmLCAw
LjBmKTsJCQkvLyBUb3AgT2YgVHJpYW5nbGUgKFJpZ2h0KQ0KICAgIGdsLmdsQ29sb3IzZigwLjBm
LDAuMGYsMS4wZik7CQkJLy8gQmx1ZQ0KICAgIGdsLmdsVmVydGV4M2YoIDEuMGYsLTEuMGYsIDEu
MGYpOwkJCS8vIExlZnQgT2YgVHJpYW5nbGUgKFJpZ2h0KQ0KICAgIGdsLmdsQ29sb3IzZigwLjBm
LDEuMGYsMC4wZik7CQkJLy8gR3JlZW4NCiAgICBnbC5nbFZlcnRleDNmKCAxLjBmLC0xLjBmLCAt
MS4wZik7CQkJLy8gUmlnaHQgT2YgVHJpYW5nbGUgKFJpZ2h0KQ0KICAgIGdsLmdsQ29sb3IzZigx
LjBmLDAuMGYsMC4wZik7CQkJLy8gUmVkDQogICAgZ2wuZ2xWZXJ0ZXgzZiggMC4wZiwgMS4wZiwg
MC4wZik7CQkJLy8gVG9wIE9mIFRyaWFuZ2xlIChCYWNrKQ0KICAgIGdsLmdsQ29sb3IzZigwLjBm
LDEuMGYsMC4wZik7CQkJLy8gR3JlZW4NCiAgICBnbC5nbFZlcnRleDNmKCAxLjBmLC0xLjBmLCAt
MS4wZik7CQkJLy8gTGVmdCBPZiBUcmlhbmdsZSAoQmFjaykNCiAgICBnbC5nbENvbG9yM2YoMC4w
ZiwwLjBmLDEuMGYpOwkJCS8vIEJsdWUNCiAgICBnbC5nbFZlcnRleDNmKC0xLjBmLC0xLjBmLCAt
MS4wZik7CQkJLy8gUmlnaHQgT2YgVHJpYW5nbGUgKEJhY2spDQogICAgZ2wuZ2xDb2xvcjNmKDEu
MGYsMC4wZiwwLjBmKTsJCQkvLyBSZWQNCiAgICBnbC5nbFZlcnRleDNmKCAwLjBmLCAxLjBmLCAw
LjBmKTsJCQkvLyBUb3AgT2YgVHJpYW5nbGUgKExlZnQpDQogICAgZ2wuZ2xDb2xvcjNmKDAuMGYs
MC4wZiwxLjBmKTsJCQkvLyBCbHVlDQogICAgZ2wuZ2xWZXJ0ZXgzZigtMS4wZiwtMS4wZiwtMS4w
Zik7CQkJLy8gTGVmdCBPZiBUcmlhbmdsZSAoTGVmdCkNCiAgICBnbC5nbENvbG9yM2YoMC4wZiwx
LjBmLDAuMGYpOwkJCS8vIEdyZWVuDQogICAgZ2wuZ2xWZXJ0ZXgzZigtMS4wZiwtMS4wZiwgMS4w
Zik7CQkJLy8gUmlnaHQgT2YgVHJpYW5nbGUgKExlZnQpDQogICAgZ2wuZ2xFbmQoKTsJCQkJLy8g
RmluaXNoZWQgRHJhd2luZyBUaGUgVHJpYW5nbGUNCiAgICBnbC5nbExvYWRJZGVudGl0eSgpOw0K
ICAgIGdsLmdsVHJhbnNsYXRlZigxLjVmLCAwLjBmLCAtNi4wZik7DQogICAgZ2wuZ2xSb3RhdGVm
KHJxdWFkLCAxLjBmLCAxLjBmLCAxLjBmKTsNCiAgICBnbC5nbEJlZ2luKEdMLkdMX1FVQURTKTsg
ICAgICAgICAgIAkvLyBEcmF3IEEgUXVhZA0KICAgIGdsLmdsQ29sb3IzZigwLjBmLDEuMGYsMC4w
Zik7CQkJLy8gU2V0IFRoZSBDb2xvciBUbyBHcmVlbg0KICAgIGdsLmdsVmVydGV4M2YoIDEuMGYs
IDEuMGYsLTEuMGYpOwkJCS8vIFRvcCBSaWdodCBPZiBUaGUgUXVhZCAoVG9wKQ0KICAgIGdsLmds
VmVydGV4M2YoLTEuMGYsIDEuMGYsLTEuMGYpOwkJCS8vIFRvcCBMZWZ0IE9mIFRoZSBRdWFkIChU
b3ApDQogICAgZ2wuZ2xWZXJ0ZXgzZigtMS4wZiwgMS4wZiwgMS4wZik7CQkJLy8gQm90dG9tIExl
ZnQgT2YgVGhlIFF1YWQgKFRvcCkNCiAgICBnbC5nbFZlcnRleDNmKCAxLjBmLCAxLjBmLCAxLjBm
KTsJCQkvLyBCb3R0b20gUmlnaHQgT2YgVGhlIFF1YWQgKFRvcCkNCiAgICANCiAgICBnbC5nbENv
bG9yM2YoMS4wZiwwLjVmLDAuMGYpOwkJCS8vIFNldCBUaGUgQ29sb3IgVG8gT3JhbmdlDQogICAg
Z2wuZ2xWZXJ0ZXgzZiggMS4wZiwtMS4wZiwgMS4wZik7CQkJLy8gVG9wIFJpZ2h0IE9mIFRoZSBR
dWFkIChCb3R0b20pDQogICAgZ2wuZ2xWZXJ0ZXgzZigtMS4wZiwtMS4wZiwgMS4wZik7CQkJLy8g
VG9wIExlZnQgT2YgVGhlIFF1YWQgKEJvdHRvbSkNCiAgICBnbC5nbFZlcnRleDNmKC0xLjBmLC0x
LjBmLC0xLjBmKTsJCQkvLyBCb3R0b20gTGVmdCBPZiBUaGUgUXVhZCAoQm90dG9tKQ0KICAgIGds
LmdsVmVydGV4M2YoIDEuMGYsLTEuMGYsLTEuMGYpOwkJCS8vIEJvdHRvbSBSaWdodCBPZiBUaGUg
UXVhZCAoQm90dG9tKQ0KICAgIA0KICAgIGdsLmdsQ29sb3IzZigxLjBmLDAuMGYsMC4wZik7CQkJ
Ly8gU2V0IFRoZSBDb2xvciBUbyBSZWQNCiAgICBnbC5nbFZlcnRleDNmKCAxLjBmLCAxLjBmLCAx
LjBmKTsJCQkvLyBUb3AgUmlnaHQgT2YgVGhlIFF1YWQgKEZyb250KQ0KICAgIGdsLmdsVmVydGV4
M2YoLTEuMGYsIDEuMGYsIDEuMGYpOwkJCS8vIFRvcCBMZWZ0IE9mIFRoZSBRdWFkIChGcm9udCkN
CiAgICBnbC5nbFZlcnRleDNmKC0xLjBmLC0xLjBmLCAxLjBmKTsJCQkvLyBCb3R0b20gTGVmdCBP
ZiBUaGUgUXVhZCAoRnJvbnQpDQogICAgZ2wuZ2xWZXJ0ZXgzZiggMS4wZiwtMS4wZiwgMS4wZik7
CQkJLy8gQm90dG9tIFJpZ2h0IE9mIFRoZSBRdWFkIChGcm9udCkNCiAgICANCiAgICBnbC5nbENv
bG9yM2YoMS4wZiwxLjBmLDAuMGYpOwkJCS8vIFNldCBUaGUgQ29sb3IgVG8gWWVsbG93DQogICAg
Z2wuZ2xWZXJ0ZXgzZiggMS4wZiwtMS4wZiwtMS4wZik7CQkJLy8gQm90dG9tIExlZnQgT2YgVGhl
IFF1YWQgKEJhY2spDQogICAgZ2wuZ2xWZXJ0ZXgzZigtMS4wZiwtMS4wZiwtMS4wZik7CQkJLy8g
Qm90dG9tIFJpZ2h0IE9mIFRoZSBRdWFkIChCYWNrKQ0KICAgIGdsLmdsVmVydGV4M2YoLTEuMGYs
IDEuMGYsLTEuMGYpOwkJCS8vIFRvcCBSaWdodCBPZiBUaGUgUXVhZCAoQmFjaykNCiAgICBnbC5n
bFZlcnRleDNmKCAxLjBmLCAxLjBmLC0xLjBmKTsJCQkvLyBUb3AgTGVmdCBPZiBUaGUgUXVhZCAo
QmFjaykNCiAgICANCiAgICBnbC5nbENvbG9yM2YoMC4wZiwwLjBmLDEuMGYpOwkJCS8vIFNldCBU
aGUgQ29sb3IgVG8gQmx1ZQ0KICAgIGdsLmdsVmVydGV4M2YoLTEuMGYsIDEuMGYsIDEuMGYpOwkJ
CS8vIFRvcCBSaWdodCBPZiBUaGUgUXVhZCAoTGVmdCkNCiAgICBnbC5nbFZlcnRleDNmKC0xLjBm
LCAxLjBmLC0xLjBmKTsJCQkvLyBUb3AgTGVmdCBPZiBUaGUgUXVhZCAoTGVmdCkNCiAgICBnbC5n
bFZlcnRleDNmKC0xLjBmLC0xLjBmLC0xLjBmKTsJCQkvLyBCb3R0b20gTGVmdCBPZiBUaGUgUXVh
ZCAoTGVmdCkNCiAgICBnbC5nbFZlcnRleDNmKC0xLjBmLC0xLjBmLCAxLjBmKTsJCQkvLyBCb3R0
b20gUmlnaHQgT2YgVGhlIFF1YWQgKExlZnQpDQogICAgDQogICAgZ2wuZ2xDb2xvcjNmKDEuMGYs
MC4wZiwxLjBmKTsJCQkvLyBTZXQgVGhlIENvbG9yIFRvIFZpb2xldA0KICAgIGdsLmdsVmVydGV4
M2YoIDEuMGYsIDEuMGYsLTEuMGYpOwkJCS8vIFRvcCBSaWdodCBPZiBUaGUgUXVhZCAoUmlnaHQp
DQogICAgZ2wuZ2xWZXJ0ZXgzZiggMS4wZiwgMS4wZiwgMS4wZik7CQkJLy8gVG9wIExlZnQgT2Yg
VGhlIFF1YWQgKFJpZ2h0KQ0KICAgIGdsLmdsVmVydGV4M2YoIDEuMGYsLTEuMGYsIDEuMGYpOwkJ
CS8vIEJvdHRvbSBMZWZ0IE9mIFRoZSBRdWFkIChSaWdodCkNCiAgICBnbC5nbFZlcnRleDNmKCAx
LjBmLC0xLjBmLC0xLjBmKTsJCQkvLyBCb3R0b20gUmlnaHQgT2YgVGhlIFF1YWQgKFJpZ2h0KQ0K
ICAgIGdsLmdsRW5kKCk7CQkJCS8vIERvbmUgRHJhd2luZyBUaGUgUXVhZA0KICAgIGdsLmdsRmx1
c2goKTsNCiAgICBydHJpICs9IDAuMmY7DQogICAgcnF1YWQgKz0gMC4xNWY7DQogIH0NCg0KICAv
KiogQ2FsbGVkIHdoZW4gdGhlIGRpc3BsYXkgbW9kZSBoYXMgYmVlbiBjaGFuZ2VkLiAgPEI+ISEg
Q1VSUkVOVExZIFVOSU1QTEVNRU5URUQgSU4gSk9HTCAhITwvQj4NCiAgICogQHBhcmFtIGdMRHJh
d2FibGUgVGhlIEdMRHJhd2FibGUgb2JqZWN0Lg0KICAgKiBAcGFyYW0gbW9kZUNoYW5nZWQgSW5k
aWNhdGVzIGlmIHRoZSB2aWRlbyBtb2RlIGhhcyBjaGFuZ2VkLg0KICAgKiBAcGFyYW0gZGV2aWNl
Q2hhbmdlZCBJbmRpY2F0ZXMgaWYgdGhlIHZpZGVvIGRldmljZSBoYXMgY2hhbmdlZC4NCiAgICov
DQogIHB1YmxpYyB2b2lkIGRpc3BsYXlDaGFuZ2VkKEdMRHJhd2FibGUgZ0xEcmF3YWJsZSwgYm9v
bGVhbiBtb2RlQ2hhbmdlZCwgYm9vbGVhbiBkZXZpY2VDaGFuZ2VkKQ0KICB7DQogIH0NCiAgDQog
IC8qKiBDYWxsZWQgYnkgdGhlIGRyYXdhYmxlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBPcGVuR0wg
Y29udGV4dCBpcw0KICAgKiBpbml0aWFsaXplZCBmb3IgdGhlIGZpcnN0IHRpbWUuIENhbiBiZSB1
c2VkIHRvIHBlcmZvcm0gb25lLXRpbWUgT3BlbkdMDQogICAqIGluaXRpYWxpemF0aW9uIHN1Y2gg
YXMgc2V0dXAgb2YgbGlnaHRzIGFuZCBkaXNwbGF5IGxpc3RzLg0KICAgKiBAcGFyYW0gZ0xEcmF3
YWJsZSBUaGUgR0xEcmF3YWJsZSBvYmplY3QuDQogICAqLw0KICBwdWJsaWMgdm9pZCBpbml0KEdM
RHJhd2FibGUgZ0xEcmF3YWJsZSkNCiAgew0KICAgIEdMIGdsID0gZ0xEcmF3YWJsZS5nZXRHTCgp
Ow0KICAgIGdsLmdsU2hhZGVNb2RlbChHTC5HTF9TTU9PVEgpOyAgICAgICAgICAgICAgLy8gRW5h
YmxlIFNtb290aCBTaGFkaW5nDQogICAgZ2wuZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuNWYpOyAgICAvLyBCbGFjayBCYWNrZ3JvdW5kDQogICAgZ2wuZ2xDbGVhckRlcHRoKDEuMGYp
OyAgICAgICAgICAgICAgICAgICAgICAvLyBEZXB0aCBCdWZmZXIgU2V0dXANCiAgICBnbC5nbEVu
YWJsZShHTC5HTF9ERVBUSF9URVNUKTsgICAgICAgICAgICAgIC8vIEVuYWJsZXMgRGVwdGggVGVz
dGluZw0KICAgIGdsLmdsRGVwdGhGdW5jKEdMLkdMX0xFUVVBTCk7CQkvLyBUaGUgVHlwZSBPZiBE
ZXB0aCBUZXN0aW5nIFRvIERvDQogICAgZ2wuZ2xIaW50KEdMLkdMX1BFUlNQRUNUSVZFX0NPUlJF
Q1RJT05fSElOVCwgR0wuR0xfTklDRVNUKTsJLy8gUmVhbGx5IE5pY2UgUGVyc3BlY3RpdmUgQ2Fs
Y3VsYXRpb25zDQogICAgU3lzdGVtLm91dC5wcmludGxuKCk7DQogICAgU3lzdGVtLm91dC5wcmlu
dGxuKCJPUEVOR0wgRFJJVkVSIElORk9STUFUSU9OIik7DQogICAgU3lzdGVtLm91dC5wcmludGxu
KCIgVmVyc2lvbjogIiArIGdsLmdsR2V0U3RyaW5nKEdMLkdMX1ZFUlNJT04pKTsNCiAgICBTeXN0
ZW0ub3V0LnByaW50bG4oIlJlbmRlcmVyOiAiICsgZ2wuZ2xHZXRTdHJpbmcoR0wuR0xfUkVOREVS
RVIpKTsNCiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgVmVuZG9yOiAiICsgZ2wuZ2xHZXRTdHJp
bmcoR0wuR0xfVkVORE9SKSk7DQogICAgU3lzdGVtLm91dC5wcmludGxuKCk7DQogICAgU3lzdGVt
Lm91dC5wcmludGxuKCJESVNQTEFZIElORk9STUFUSU9OIik7DQogICAgRGltZW5zaW9uIGRpbSA9
IGdMRHJhd2FibGUuZ2V0U2l6ZSgpOw0KICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVzb2x1dGlv
bjogIiArIChpbnQpZGltLmdldFdpZHRoKCkgKyAieCIgKyAoaW50KWRpbS5nZXRIZWlnaHQoKSk7
DQogICAgR0xDYXBhYmlsaXRpZXMgZ2xDYXBzID0gbmV3IEdMQ2FwYWJpbGl0aWVzKCk7DQogICAg
U3lzdGVtLm91dC5wcmludGxuKGdsQ2Fwcy50b1N0cmluZygpKTsNCiAgfQ0KICANCiAgLyoqIENh
bGxlZCBieSB0aGUgZHJhd2FibGUgZHVyaW5nIHRoZSBmaXJzdCByZXBhaW50IGFmdGVyIHRoZSBj
b21wb25lbnQgaGFzDQogICAqIGJlZW4gcmVzaXplZC4gVGhlIGNsaWVudCBjYW4gdXBkYXRlIHRo
ZSB2aWV3cG9ydCBhbmQgdmlldyB2b2x1bWUgb2YgdGhlDQogICAqIHdpbmRvdyBhcHByb3ByaWF0
ZWx5LCBmb3IgZXhhbXBsZSBieSBhIGNhbGwgdG8NCiAgICogR0wuZ2xWaWV3cG9ydChpbnQsIGlu
dCwgaW50LCBpbnQpOyBub3RlIHRoYXQgZm9yIGNvbnZlbmllbmNlIHRoZSBjb21wb25lbnQNCiAg
ICogaGFzIGFscmVhZHkgY2FsbGVkIEdMLmdsVmlld3BvcnQoaW50LCBpbnQsIGludCwgaW50KSh4
LCB5LCB3aWR0aCwgaGVpZ2h0KQ0KICAgKiB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgc28g
dGhlIGNsaWVudCBtYXkgbm90IGhhdmUgdG8gZG8gYW55dGhpbmcgaW4NCiAgICogdGhpcyBtZXRo
b2QuDQogICAqIEBwYXJhbSBnTERyYXdhYmxlIFRoZSBHTERyYXdhYmxlIG9iamVjdC4NCiAgICog
QHBhcmFtIHggVGhlIFggQ29vcmRpbmF0ZSBvZiB0aGUgdmlld3BvcnQgcmVjdGFuZ2xlLg0KICAg
KiBAcGFyYW0geSBUaGUgWSBjb29yZGluYXRlIG9mIHRoZSB2aWV3cG9ydCByZWN0YW5ibGUuDQog
ICAqIEBwYXJhbSB3aWR0aCBUaGUgbmV3IHdpZHRoIG9mIHRoZSB3aW5kb3cuDQogICAqIEBwYXJh
bSBoZWlnaHQgVGhlIG5ldyBoZWlnaHQgb2YgdGhlIHdpbmRvdy4NCiAgICovDQogIHB1YmxpYyB2
b2lkIHJlc2hhcGUoR0xEcmF3YWJsZSBnTERyYXdhYmxlLCBpbnQgeCwgaW50IHksIGludCB3aWR0
aCwgaW50IGhlaWdodCkNCiAgew0KICAgIGZpbmFsIEdMIGdsID0gZ0xEcmF3YWJsZS5nZXRHTCgp
Ow0KICAgIGZpbmFsIEdMVSBnbHUgPSBnTERyYXdhYmxlLmdldEdMVSgpOw0KICAgIA0KICAgIGlm
IChoZWlnaHQgPD0gMCkgLy8gYXZvaWQgYSBkaXZpZGUgYnkgemVybyBlcnJvciENCiAgICAgIGhl
aWdodCA9IDE7DQogICAgZmluYWwgZmxvYXQgaCA9IChmbG9hdCl3aWR0aCAvIChmbG9hdCloZWln
aHQ7DQogICAgZ2wuZ2xWaWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsNCiAgICBnbC5nbE1h
dHJpeE1vZGUoR0wuR0xfUFJPSkVDVElPTik7DQogICAgZ2wuZ2xMb2FkSWRlbnRpdHkoKTsNCiAg
ICBnbHUuZ2x1UGVyc3BlY3RpdmUoNDUuMGYsIGgsIDEuMCwgMjAuMCk7DQogICAgZ2wuZ2xNYXRy
aXhNb2RlKEdMLkdMX01PREVMVklFVyk7DQogICAgZ2wuZ2xMb2FkSWRlbnRpdHkoKTsNCiAgfQ0K
fQ0KY2xhc3MgR0xEaXNwbGF5DQp7DQogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFRkFV
TFRfV0lEVEggPSA2NDA7DQogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfSEVJ
R0hUID0gNDgwOw0KICAgIA0KICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET05UX0NBUkUg
PSAtMTsNCiAgICANCiAgICBwcml2YXRlIEpGcmFtZSBmcmFtZTsNCiAgICBwcml2YXRlIEdMQ2Fu
dmFzIGdsQ2FudmFzOw0KICAgIHByaXZhdGUgQW5pbWF0b3IgYW5pbWF0b3I7DQogICAgcHJpdmF0
ZSBib29sZWFuIGZ1bGxzY3JlZW47DQogICAgcHJpdmF0ZSBpbnQgd2lkdGg7DQogICAgcHJpdmF0
ZSBpbnQgaGVpZ2h0Ow0KICAgIHByaXZhdGUgR3JhcGhpY3NEZXZpY2UgdXNlZERldmljZTsNCiAg
ICBEaXNwbGF5TW9kZSBvbGREaXNwbGF5TW9kZTsNCiAgICANCiAgICBwdWJsaWMgR0xEaXNwbGF5
KFN0cmluZyB0aXRsZSwgYm9vbGVhbiBmdWxsc2NyZWVuKQ0KICAgIHsNCiAgICAgICAgdGhpcyh0
aXRsZSwgREVGQVVMVF9XSURUSCwgREVGQVVMVF9IRUlHSFQsIGZ1bGxzY3JlZW4pOw0KICAgIH0N
CiAgICANCiAgICBwdWJsaWMgR0xEaXNwbGF5KFN0cmluZyB0aXRsZSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBib29sZWFuIGZ1bGxzY3JlZW4pDQogICAgew0KICAgICAgICBHTENhcGFiaWxpdGll
cyBnbENhcHMgPSBuZXcgR0xDYXBhYmlsaXRpZXMoKTsNCiAgICAgICAgYm9vbGVhbiBod0FjY2Vs
ID0gZ2xDYXBzLmdldEhhcmR3YXJlQWNjZWxlcmF0ZWQoKTsNCiAgICAgICAgZ2xDYW52YXMgPSBH
TERyYXdhYmxlRmFjdG9yeS5nZXRGYWN0b3J5KCkuY3JlYXRlR0xDYW52YXMoZ2xDYXBzKTsNCiAg
ICAgICAgZ2xDYW52YXMuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgZ2xDYW52YXMu
c2V0SWdub3JlUmVwYWludCh0cnVlKTsNCiAgICAgICAgDQogICAgICAgIGZyYW1lID0gbmV3IEpG
cmFtZSh0aXRsZSk7DQogICAgICAgIGZyYW1lLmdldENvbnRlbnRQYW5lKCkuc2V0TGF5b3V0KG5l
dyBCb3JkZXJMYXlvdXQoKSk7DQoJCSAgLy8NCgkJICAvLyBBZGRpbmcgdGhlIGNhbnZhcyBiZWZv
cmUgc2hvd2luZyBpbiBhIGZ1bGxzY3JlZW4gYXBwDQoJCSAgLy8gcHJpb3IgdG8gMS4xYjA0IChK
dWx5IDE2KSBjYXVzZXMgYSB3aGl0ZSBzY3JlZW4gb2YgZGVhdGgNCiAgICAgICAgZnJhbWUuZ2V0
Q29udGVudFBhbmUoKS5hZGQoZ2xDYW52YXMsIEJvcmRlckxheW91dC5DRU5URVIpOw0KICAgICAg
ICANCiAgICAgICAgYWRkS2V5TGlzdGVuZXIobmV3IE15U2h1dGRvd25LZXlBZGFwdGVyKCkpOw0K
ICAgICAgICANCiAgICAgICAgdGhpcy5mdWxsc2NyZWVuID0gZnVsbHNjcmVlbjsNCiAgICAgICAg
dGhpcy53aWR0aCA9IHdpZHRoOw0KICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsNCiAgICAg
ICAgYW5pbWF0b3IgPSBuZXcgQW5pbWF0b3IoZ2xDYW52YXMpOw0KICAgIH0NCiAgICANCiAgICBw
dWJsaWMgdm9pZCBzdGFydCgpDQogICAgew0KICAgICAgICBEaW1lbnNpb24gc2NyZWVuU2l6ZSA9
IFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTY3JlZW5TaXplKCk7DQogICAgICAgIGZy
YW1lLnNldFNpemUod2lkdGgsIGhlaWdodCk7DQogICAgICAgIGZyYW1lLnNldExvY2F0aW9uKChz
Y3JlZW5TaXplLndpZHRoIC0gZnJhbWUuZ2V0V2lkdGgoKSkgLyAyLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY3JlZW5TaXplLmhlaWdodCAtIGZyYW1l
LmdldEhlaWdodCgpKSAvIDIpOw0KICAgICAgICBmcmFtZS5hZGRXaW5kb3dMaXN0ZW5lcihuZXcg
TXlTaHV0ZG93bldpbmRvd0FkYXB0ZXIoKSk7DQogICAgICAgIA0KICAgICAgICBpZiAoZnVsbHNj
cmVlbikNCiAgICAgICAgew0KICAgICAgICAgICAgZnJhbWUuc2V0VW5kZWNvcmF0ZWQodHJ1ZSk7
DQogICAgICAgICAgICB1c2VkRGV2aWNlID0gR3JhcGhpY3NFbnZpcm9ubWVudC5nZXRMb2NhbEdy
YXBoaWNzRW52aXJvbm1lbnQoKS5nZXREZWZhdWx0U2NyZWVuRGV2aWNlKCk7DQogICAgICAgICAg
ICB0aGlzLm9sZERpc3BsYXlNb2RlICA9IHVzZWREZXZpY2UuZ2V0RGlzcGxheU1vZGUoKTsNCiAg
ICAgICAgICAgIHVzZWREZXZpY2Uuc2V0RnVsbFNjcmVlbldpbmRvdyhmcmFtZSk7DQogICAgICAg
ICAgICB1c2VkRGV2aWNlLnNldERpc3BsYXlNb2RlKGZpbmREaXNwbGF5TW9kZSh1c2VkRGV2aWNl
LmdldERpc3BsYXlNb2RlcygpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1c2VkRGV2aWNlLmdldERpc3BsYXlNb2RlKCkuZ2V0Qml0
RGVwdGgoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXNlZERldmljZS5nZXREaXNwbGF5TW9kZSgpLmdldFJlZnJlc2hSYXRlKCkpKTsNCiAgICAg
ICB9IGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgZnJhbWUuc2V0VmlzaWJsZSh0cnVlKTsN
CiAgICAgICAgfQ0KDQoJCSAgLy8gTW92ZWQgdGhlIGFkZCBjYWxsIHRvIHRoaXMgbG9jYXRpb24g
dG8gc2F2ZSB0aGUgdmlydHVhbCB3b3JsZA0KICAgICAgICAvLyBmcmFtZS5nZXRDb250ZW50UGFu
ZSgpLmFkZChnbENhbnZhcywgQm9yZGVyTGF5b3V0LkNFTlRFUik7DQogICAgICAgIGdsQ2FudmFz
LnJlcXVlc3RGb2N1cygpOw0KICAgICAgICANCiAgICAgICAgYW5pbWF0b3Iuc3RhcnQoKTsNCiAg
ICB9DQogICAgDQogICAgcHVibGljIHZvaWQgc3RvcCgpDQogICAgew0KICAgICAgICBhbmltYXRv
ci5zdG9wKCk7DQogICAgICAgIGlmIChmdWxsc2NyZWVuKQ0KICAgICAgICB7DQogICAgICAgICAg
ICB1c2VkRGV2aWNlLnNldERpc3BsYXlNb2RlKG9sZERpc3BsYXlNb2RlKTsNCiAgICAgICAgICAg
IHVzZWREZXZpY2Uuc2V0RnVsbFNjcmVlbldpbmRvdyhudWxsKTsNCiAgICAgICAgICAgIHVzZWRE
ZXZpY2UgPSBudWxsOw0KICAgICAgICB9DQogICAgICAgIGZyYW1lLmRpc3Bvc2UoKTsNCiAgICAg
ICAgU3lzdGVtLmV4aXQoMCk7DQogICAgfQ0KICAgIA0KICAgIHByaXZhdGUgRGlzcGxheU1vZGUg
ZmluZERpc3BsYXlNb2RlKERpc3BsYXlNb2RlW10gZGlzcGxheU1vZGVzLCBpbnQgcmVxdWVzdGVk
V2lkdGgsIGludCByZXF1ZXN0ZWRIZWlnaHQsIGludCByZXF1ZXN0ZWREZXB0aCwgaW50IHJlcXVl
c3RlZFJlZnJlc2hSYXRlKQ0KICAgIHsNCiAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZXhhY3Qg
bWF0Y2gNCiAgICAgICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBmaW5kRGlzcGxheU1vZGVJ
bnRlcm5hbChkaXNwbGF5TW9kZXMsIHJlcXVlc3RlZFdpZHRoLCByZXF1ZXN0ZWRIZWlnaHQsIHJl
cXVlc3RlZERlcHRoLCByZXF1ZXN0ZWRSZWZyZXNoUmF0ZSk7DQogICAgICAgIA0KICAgICAgICAv
LyBUcnkgYWdhaW4sIGlnbm9yaW5nIHRoZSByZXF1ZXN0ZWQgYml0IGRlcHRoDQogICAgICAgIGlm
IChkaXNwbGF5TW9kZSA9PSBudWxsKQ0KICAgICAgICAgICAgZGlzcGxheU1vZGUgPSBmaW5kRGlz
cGxheU1vZGVJbnRlcm5hbChkaXNwbGF5TW9kZXMsIHJlcXVlc3RlZFdpZHRoLCByZXF1ZXN0ZWRI
ZWlnaHQsIERPTlRfQ0FSRSwgRE9OVF9DQVJFKTsNCiAgICAgICAgDQogICAgICAgIC8vIFRyeSBh
Z2FpbiwgYW5kIGFnYWluIGlnbm9yaW5nIHRoZSByZXF1ZXN0ZWQgYml0IGRlcHRoIGFuZCBoZWln
aHQNCiAgICAgICAgaWYgKGRpc3BsYXlNb2RlID09IG51bGwpDQogICAgICAgICAgICBkaXNwbGF5
TW9kZSA9IGZpbmREaXNwbGF5TW9kZUludGVybmFsKGRpc3BsYXlNb2RlcywgcmVxdWVzdGVkV2lk
dGgsIERPTlRfQ0FSRSwgRE9OVF9DQVJFLCBET05UX0NBUkUpOw0KDQogICAgICAgIC8vIElmIGFs
bCBlbHNlIGZhaWxzIHRyeSB0byBnZXQgYW55IGRpc3BsYXkgbW9kZQ0KICAgICAgICBpZiAoZGlz
cGxheU1vZGUgPT0gbnVsbCkNCiAgICAgICAgICAgIGRpc3BsYXlNb2RlID0gZmluZERpc3BsYXlN
b2RlSW50ZXJuYWwoZGlzcGxheU1vZGVzLCBET05UX0NBUkUsIERPTlRfQ0FSRSwgRE9OVF9DQVJF
LCBET05UX0NBUkUpOw0KDQogICAgICAgIHJldHVybiBkaXNwbGF5TW9kZTsNCiAgICB9DQogICAg
DQogICAgcHJpdmF0ZSBEaXNwbGF5TW9kZSBmaW5kRGlzcGxheU1vZGVJbnRlcm5hbChEaXNwbGF5
TW9kZVtdIGRpc3BsYXlNb2RlcywgaW50IHJlcXVlc3RlZFdpZHRoLCBpbnQgcmVxdWVzdGVkSGVp
Z2h0LCBpbnQgcmVxdWVzdGVkRGVwdGgsIGludCByZXF1ZXN0ZWRSZWZyZXNoUmF0ZSkNCiAgICB7
DQogICAgICAgIERpc3BsYXlNb2RlIGRpc3BsYXlNb2RlVG9Vc2UgPSBudWxsOw0KICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGRpc3BsYXlNb2Rlcy5sZW5ndGg7IGkrKykNCiAgICAgICAgew0K
ICAgICAgICAgICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZXNbaV07DQog
ICAgICAgICAgICBpZiAoKHJlcXVlc3RlZFdpZHRoID09IERPTlRfQ0FSRSB8fCBkaXNwbGF5TW9k
ZS5nZXRXaWR0aCgpID09IHJlcXVlc3RlZFdpZHRoKSAmJg0KICAgICAgICAgICAgKHJlcXVlc3Rl
ZEhlaWdodCA9PSBET05UX0NBUkUgfHwgZGlzcGxheU1vZGUuZ2V0SGVpZ2h0KCkgPT0gcmVxdWVz
dGVkSGVpZ2h0KSAmJg0KICAgICAgICAgICAgKHJlcXVlc3RlZEhlaWdodCA9PSBET05UX0NBUkUg
fHwgZGlzcGxheU1vZGUuZ2V0UmVmcmVzaFJhdGUoKSA9PSByZXF1ZXN0ZWRSZWZyZXNoUmF0ZSkg
JiYNCiAgICAgICAgICAgIChyZXF1ZXN0ZWREZXB0aCA9PSBET05UX0NBUkUgfHwgZGlzcGxheU1v
ZGUuZ2V0Qml0RGVwdGgoKSA9PSByZXF1ZXN0ZWREZXB0aCkpDQogICAgICAgICAgICAgICAgZGlz
cGxheU1vZGVUb1VzZSA9IGRpc3BsYXlNb2RlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICByZXR1cm4gZGlzcGxheU1vZGVUb1VzZTsNCiAgICB9DQogICAgDQogICAgcHVibGljIHZvaWQg
YWRkR0xFdmVudExpc3RlbmVyKEdMRXZlbnRMaXN0ZW5lciBnbEV2ZW50TGlzdGVuZXIpDQogICAg
ew0KICAgICAgICBnbENhbnZhcy5hZGRHTEV2ZW50TGlzdGVuZXIoZ2xFdmVudExpc3RlbmVyKTsN
CiAgICB9DQogICAgDQogICAgcHVibGljIHZvaWQgcmVtb3ZlR0xFdmVudExpc3RlbmVyKEdMRXZl
bnRMaXN0ZW5lciBnbEV2ZW50TGlzdGVuZXIpDQogICAgew0KICAgICAgICBnbENhbnZhcy5yZW1v
dmVHTEV2ZW50TGlzdGVuZXIoZ2xFdmVudExpc3RlbmVyKTsNCiAgICB9DQogICAgDQogICAgcHVi
bGljIHZvaWQgYWRkS2V5TGlzdGVuZXIoS2V5TGlzdGVuZXIgbCkNCiAgICB7DQogICAgICAgIGds
Q2FudmFzLmFkZEtleUxpc3RlbmVyKGwpOw0KICAgIH0NCiAgICANCiAgICBwdWJsaWMgdm9pZCBh
ZGRNb3VzZUxpc3RlbmVyKE1vdXNlTGlzdGVuZXIgbCkNCiAgICB7DQogICAgICAgIGdsQ2FudmFz
LmFkZE1vdXNlTGlzdGVuZXIobCk7DQogICAgfQ0KICAgIA0KICAgIHB1YmxpYyB2b2lkIGFkZE1v
dXNlTW90aW9uTGlzdGVuZXIoTW91c2VNb3Rpb25MaXN0ZW5lciBsKQ0KICAgIHsNCiAgICAgICAg
Z2xDYW52YXMuYWRkTW91c2VNb3Rpb25MaXN0ZW5lcihsKTsNCiAgICB9DQogICAgDQogICAgcHVi
bGljIHZvaWQgcmVtb3ZlS2V5TGlzdGVuZXIoS2V5TGlzdGVuZXIgbCkNCiAgICB7DQogICAgICAg
IGdsQ2FudmFzLnJlbW92ZUtleUxpc3RlbmVyKGwpOw0KICAgIH0NCiAgICANCiAgICBwdWJsaWMg
dm9pZCByZW1vdmVNb3VzZUxpc3RlbmVyKE1vdXNlTGlzdGVuZXIgbCkNCiAgICB7DQogICAgICAg
IGdsQ2FudmFzLnJlbW92ZU1vdXNlTGlzdGVuZXIobCk7DQogICAgfQ0KICAgIA0KICAgIHB1Ymxp
YyB2b2lkIHJlbW92ZU1vdXNlTW90aW9uTGlzdGVuZXIoTW91c2VNb3Rpb25MaXN0ZW5lciBsKQ0K
ICAgIHsNCiAgICAgICAgZ2xDYW52YXMucmVtb3ZlTW91c2VNb3Rpb25MaXN0ZW5lcihsKTsNCiAg
ICB9DQogICAgDQogICAgcHJpdmF0ZSBjbGFzcyBNeVNodXRkb3duS2V5QWRhcHRlciBleHRlbmRz
IEtleUFkYXB0ZXINCiAgICB7DQogICAgICAgIHB1YmxpYyB2b2lkIGtleVByZXNzZWQoS2V5RXZl
bnQgZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGUuZ2V0S2V5Q29kZSgpID09IEtleUV2
ZW50LlZLX0VTQ0FQRSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBzdG9wKCk7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgcHJpdmF0ZSBjbGFzcyBN
eVNodXRkb3duV2luZG93QWRhcHRlciBleHRlbmRzIFdpbmRvd0FkYXB0ZXINCiAgICB7DQogICAg
ICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkNCiAgICAgICAgew0K
ICAgICAgICAgICAgc3RvcCgpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K
</data>

          </attachment>
      

    </bug>

</bugzilla>