[RECHERCHE] Negative Lab Pro V3 - Authenticator.lua et PluginManagerV3.lua

Vous recherchez un programme, une solution, posez votre question ici.
Répondre
Auteur du sujet
toto421
Petit Nouveau
Petit Nouveau
Messages : 4
Enregistré le : il y a 5 ans

[RECHERCHE] Negative Lab Pro V3 - Authenticator.lua et PluginManagerV3.lua

Message par toto421 »

Bonjour,

J'utilise Negative Lab Pro en V2 avec des fichiers Authenticator.lua et PluginManager.lua modifiés pour utilisé une licence de type XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX or depuis la v3 tout a changé et cela ne marche plus.
J'ai décrypté les fichiers de la version v3 qui sont mais je n'ai pas les connaissances pour aller plus loin...
La seule chose que j'ai vu c'est le format de licence qui change et devient : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Si quelqu'un sait comment faire merci pour votre aide.

Les fichiers en V2 :
Authenticator.lua > fichier original

Code : Tout sélectionner

local L0_1, L1_1, L2_1, L3_1, L4_1, L5_1, L6_1, L7_1, L8_1, L9_1, L10_1, L11_1, L12_1, L13_1
L0_1 = import
L1_1 = "LrLogger"
L0_1 = L0_1(L1_1)
L1_1 = import
L2_1 = "LrHttp"
L1_1 = L1_1(L2_1)
L2_1 = import
L3_1 = "LrFunctionContext"
L2_1 = L2_1(L3_1)
L3_1 = import
L4_1 = "LrTasks"
L3_1 = L3_1(L4_1)
L4_1 = import
L5_1 = "LrErrors"
L4_1 = L4_1(L5_1)
L5_1 = import
L6_1 = "LrBinding"
L5_1 = L5_1(L6_1)
L6_1 = import
L7_1 = "LrDialogs"
L6_1 = L6_1(L7_1)
L7_1 = import
L8_1 = "LrView"
L7_1 = L7_1(L8_1)
L8_1 = require
L9_1 = "JSON"
L8_1 = L8_1(L9_1)
L9_1 = L0_1
L10_1 = "authenticator"
L9_1 = L9_1(L10_1)
L10_1 = _G
L10_1 = L10_1.dev
if L10_1 == true then
  L11_1 = L9_1
  L10_1 = L9_1.enable
  L12_1 = "logfile"
  L10_1(L11_1, L12_1)
else
  L11_1 = L9_1
  L10_1 = L9_1.disable
  L10_1(L11_1)
end
L10_1 = 12
L11_1 = import
L12_1 = "LrPrefs"
L11_1 = L11_1(L12_1)
L11_1 = L11_1.prefsForPlugin
L11_1 = L11_1()
L12_1 = {}
NATEAuthenticator = L12_1
L12_1 = NATEAuthenticator
function L13_1(A0_2)
  local L1_2, L2_2, L3_2
  L1_2 = L2_1
  L1_2 = L1_2.postAsyncTaskWithContext
  L2_2 = "posting credentials"
  function L3_2()
    local L0_3, L1_3, L2_3, L3_3, L4_3, L5_3, L6_3, L7_3, L8_3
    L0_3 = L11_1
    L0_3.activationError = "AUTHORIZING... PLEASE WAIT..."
    L0_3 = A0_2
    if L0_3 ~= nil then
      L0_3 = A0_2
      if L0_3 ~= "" then
        goto lbl_18
      end
    end
    L0_3 = L11_1
    L0_3.activationError = "ERROR: You must enter your serial number"
    L0_3 = L11_1
    L0_3.enableActivation = true
    L0_3 = L3_1
    L0_3 = L0_3.sleep
    L1_3 = 0.5
    L0_3(L1_3)
    do return end
    ::lbl_18::
    L0_3 = "https://api.gumroad.com/v2/licenses/verify"
    L1_3 = "product_permalink=negative-lab&license_key="
    L2_3 = A0_2
    L1_3 = L1_3 .. L2_3
    L2_3 = {}
    L3_3 = auth_header
    L4_3 = {}
    L4_3.field = "Content-Type"
    L4_3.value = "application/x-www-form-urlencoded"
    L5_3 = {}
    L5_3.field = "User-Agent"
    L5_3.value = "Lightroom Plugin"
    L6_3 = {}
    L6_3.field = "Cookie"
    L6_3.value = "GARBAGE"
    L2_3[1] = L3_3
    L2_3[2] = L4_3
    L2_3[3] = L5_3
    L2_3[4] = L6_3
    L3_3 = L1_1
    L3_3 = L3_3.post
    L4_3 = L0_3
    L5_3 = L1_3
    L6_3 = L2_3
    L7_3 = "POST"
    L8_3 = 10
    L3_3, L4_3 = L3_3(L4_3, L5_3, L6_3, L7_3, L8_3)
    if L3_3 == nil then
      L5_3 = L11_1
      L5_3.activationError = [[
ERROR: COULD NOT CONNECT TO SERVER
This means you either or not connected to the internet, or something is blocking your connection to our servers. Make sure your internet connection is working, and turn off any communication blockers (like 'Little Snitch') or VPNs. Then try again.]]
      L5_3 = L11_1
      L5_3.enableActivation = true
      L5_3 = L3_1
      L5_3 = L5_3.sleep
      L6_3 = 0.5
      L5_3(L6_3)
      return
    end
    L5_3 = L8_1
    L6_3 = L5_3
    L5_3 = L5_3.decode
    L7_3 = L3_3
    L5_3 = L5_3(L6_3, L7_3)
    L6_3 = L9_1
    L7_3 = L6_3
    L6_3 = L6_3.info
    L8_3 = L5_3.success
    L6_3(L7_3, L8_3)
    L6_3 = L5_3.success
    if L6_3 == true then
      L6_3 = L5_3.purchase
      L6_3 = L6_3.refunded
      if L6_3 == false then
        L6_3 = L5_3.uses
        L7_3 = L10_1
        if L6_3 < L7_3 then
          L6_3 = L11_1
          L6_3.isActivated = true
          L6_3 = L11_1
          L7_3 = A0_2
          L6_3.licenseKey = L7_3
          L6_3 = L11_1
          L6_3.activationError = ""
          L6_3 = L11_1
          L7_3 = L5_3.purchase
          L7_3 = L7_3.email
          L6_3.email = L7_3
          L6_3 = L11_1
          L6_3.enableActivation = true
          L6_3 = L3_1
          L6_3 = L6_3.sleep
          L7_3 = 0.5
          L6_3(L7_3)
          return
      end
    end
    else
      L6_3 = L5_3.success
      if L6_3 == false then
        L6_3 = L11_1
        L6_3.activationError = [[
ERROR: INCORRECT LICENSE KEY
Please check your license key and try again.]]
        L6_3 = L11_1
        L6_3.enableActivation = true
        L6_3 = L3_1
        L6_3 = L6_3.sleep
        L7_3 = 0.5
        L6_3(L7_3)
        return
      else
        L6_3 = L5_3.uses
        L7_3 = L10_1
        if L6_3 >= L7_3 then
          L6_3 = L11_1
          L6_3.activationError = [[
ERROR: OUT OF LICENSES
This key has been used too many times. Contact nate@natephotographic.com]]
          L6_3 = L11_1
          L6_3.enableActivation = true
          L6_3 = L3_1
          L6_3 = L6_3.sleep
          L7_3 = 0.5
          L6_3(L7_3)
          return
        end
      end
    end
  end
  L1_2(L2_2, L3_2)
end
L12_1.authenticate = L13_1

Authenticator.lua > fichier modifié

Code : Tout sélectionner

local e = import("LrLogger")
local c = import("LrHttp")
local t = import("LrFunctionContext")
local n = import("LrTasks")
local o = import("LrErrors")
local o = import("LrBinding")
local o = import("LrDialogs")
local o = import("LrView")
local s = require("JSON")
local r = e("authenticator")
if _G.dev == true then
  r:enable("logfile")
else
  r:disable()
end
local i = 12
local e = import("LrPrefs").prefsForPlugin()
NATEAuthenticator = {}
function NATEAuthenticator.authenticate(o)
  t.postAsyncTaskWithContext("posting credentials", function()
    e.activationError = "AUTHORIZING... PLEASE WAIT..."
    if o == "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX" then
      e.isActivated = true
      e.licenseKey = o
      e.activationError = ""
      e.email = "x@x.xx"
      e.enableActivation = true
      n.sleep(0.5)
      return
    elseif t.success == false then
      e.activationError = [[
ERROR: INCORRECT LICENSE KEY
Please check your license key and try again.]]
      e.enableActivation = true
      n.sleep(0.5)
      return
    elseif t.uses >= i then
      e.activationError = [[
ERROR: OUT OF LICENSES
This key has been used too many times. Contact nate@natephotographic.com]]
      e.enableActivation = true
      n.sleep(0.5)
      return
    end
  end)
end

PluginManager.lua > fichier original

Code : Tout sélectionner

local L0_1, L1_1, L2_1, L3_1, L4_1, L5_1, L6_1, L7_1, L8_1, L9_1, L10_1, L11_1, L12_1, L13_1, L14_1, L15_1, L16_1
L0_1 = "Hi friends. Nate here. This is just a quick note to ask that you please respect the time and effort I put into creating this software. Negative Lab Pro is not made or sold by a giant corporation. It is just me. It is the way that I personally provide for my family. Decompiling or modifying this software not only violates copyright law, but it directly hurts my ablity to keep making and improving this software for the film community. I understand that not everyone is in a position to purchase a Negative Lab Pro license. I do offer a 50% discount for students. And if your financial situation prohibits you from using Negative Lab Pro, please email me at nate@natephotographic.com. But please, leave this software as is so that I can continue making software for the film community. Thanks! -Nate"
L1_1 = import
L2_1 = "LrStringUtils"
L1_1 = L1_1(L2_1)
L2_1 = import
L3_1 = "LrPathUtils"
L2_1 = L2_1(L3_1)
L3_1 = import
L4_1 = "LrView"
L3_1 = L3_1(L4_1)
L4_1 = import
L5_1 = "LrHttp"
L4_1 = L4_1(L5_1)
L5_1 = import
L6_1 = "LrBinding"
L5_1 = L5_1(L6_1)
L6_1 = import
L7_1 = "LrColor"
L6_1 = L6_1(L7_1)
L7_1 = import
L8_1 = "LrLogger"
L7_1 = L7_1(L8_1)
L8_1 = import
L9_1 = "LrTasks"
L8_1 = L8_1(L9_1)
L9_1 = require
L10_1 = "Util"
L9_1 = L9_1(L10_1)
L10_1 = import
L11_1 = "LrFunctionContext"
L10_1 = L10_1(L11_1)
L11_1 = require
L12_1 = "JSON"
L11_1 = L11_1(L12_1)
L12_1 = import
L13_1 = "LrPrefs"
L12_1 = L12_1(L13_1)
L12_1 = L12_1.prefsForPlugin
L12_1 = L12_1()
L13_1 = _G
L14_1 = _G
L14_1 = L14_1.dev
if not L14_1 then
  L14_1 = false
end
L13_1.dev = L14_1
L13_1 = L7_1
L14_1 = "Negative Lab"
L13_1 = L13_1(L14_1)
L14_1 = _G
L14_1 = L14_1.dev
if L14_1 == true then
  L15_1 = L13_1
  L14_1 = L13_1.enable
  L16_1 = "logfile"
  L14_1(L15_1, L16_1)
else
  L15_1 = L13_1
  L14_1 = L13_1.disable
  L14_1(L15_1)
end
function L14_1(A0_2)
  local L1_2, L2_2, L3_2, L4_2
  A0_2.enableActivation = false
  A0_2.activationError = "Submitting... hold on..."
  L1_2 = A0_2.serial
  if L1_2 ~= nil then
    L1_2 = A0_2.serial
    if L1_2 ~= "" then
      goto lbl_13
    end
  end
  A0_2.activationError = "ERROR: You must enter your serial number"
  A0_2.enableActivation = false
  do return end
  goto lbl_26
  ::lbl_13::
  L1_2 = 12
  L2_2 = L10_1
  L2_2 = L2_2.postAsyncTaskWithContext
  L3_2 = "posting credentials"
  function L4_2()
    local L0_3, L1_3, L2_3, L3_3, L4_3
    L0_3 = A0_2
    L0_3.activationError = "AUTHORIZING... PLEASE WAIT..."
    L0_3 = L9_1
    L0_3 = L0_3.postSerial
    L1_3 = A0_2
    L1_3 = L1_3.serial
    L2_3 = true
    L0_3, L1_3 = L0_3(L1_3, L2_3)
    L2_3 = L8_1
    L2_3 = L2_3.sleep
    L3_3 = 2
    L2_3(L3_3)
    if L0_3 == nil then
      L2_3 = A0_2
      L2_3.activationError = "ERROR: Could not connect. Check internet connection and turn off firewalls. "
      L2_3 = A0_2
      L2_3.enableActivation = true
      return
    end
    L2_3 = L1_3.status
    if L2_3 ~= nil then
      L2_3 = L1_3.status
      if L2_3 ~= 200 then
        L2_3 = A0_2
        L3_3 = "ERROR: HTTP Status: "
        L4_3 = L1_3.status
        L3_3 = L3_3 .. L4_3
        L2_3.activationError = L3_3
        L2_3 = A0_2
        L2_3.enableActivation = false
        return
      end
    end
    L2_3 = L11_1
    L3_3 = L2_3
    L2_3 = L2_3.decode
    L4_3 = L0_3
    L2_3 = L2_3(L3_3, L4_3)
    L3_3 = L2_3.purchase
    L3_3 = L3_3.quantity
    if 1 < L3_3 then
      L3_3 = L2_3.purchase
      L3_3 = L3_3.quantity
      L3_3 = L3_3 * 4
      L1_2 = L3_3
    end
    L3_3 = L2_3.success
    if L3_3 == true then
      L3_3 = L2_3.purchase
      L3_3 = L3_3.disputed
      if L3_3 == false then
        L3_3 = L2_3.purchase
        L3_3 = L3_3.chargebacked
        if L3_3 == false then
          L3_3 = L2_3.uses
          L4_3 = L1_2
          if L3_3 < L4_3 then
            L3_3 = A0_2
            L3_3.isActivated = true
            L3_3 = A0_2
            L4_3 = A0_2
            L4_3 = L4_3.serial
            L3_3.licenseKey = L4_3
            L3_3 = A0_2
            L4_3 = L2_3.purchase
            L4_3 = L4_3.email
            L3_3.email = L4_3
            L3_3 = A0_2
            L3_3.activationError = [[

 
 
 
 ]]
            L3_3 = A0_2
            L3_3.enableActivation = true
            L3_3 = L12_1
            L3_3.isActivated = true
            L3_3 = L12_1
            L4_3 = A0_2
            L4_3 = L4_3.serial
            L3_3.licenseKey = L4_3
            L3_3 = L12_1
            L4_3 = L2_3.purchase
            L4_3 = L4_3.email
            L3_3.email = L4_3
            L3_3 = L12_1
            L12_1 = L3_3
            L3_3 = L8_1
            L3_3 = L3_3.sleep
            L4_3 = 0.5
            L3_3(L4_3)
            return
        end
      end
    end
    else
      L3_3 = L2_3.success
      if L3_3 == false then
        L3_3 = A0_2
        L3_3.activationError = [[
ERROR: INCORRECT LICENSE KEY
Please check your license key and try again.]]
        L3_3 = A0_2
        L3_3.enableActivation = true
        return
      else
        L3_3 = L2_3.uses
        L4_3 = L1_2
        if L3_3 >= L4_3 then
          L3_3 = A0_2
          L3_3.activationError = [[
ERROR: OUT OF LICENSES
This key has been used too many times. Contact nate@natephotographic.com]]
          L3_3 = A0_2
          L3_3.enableActivation = false
          return
        end
      end
    end
  end
  L2_2(L3_2, L4_2)
  ::lbl_26::
end
L15_1 = {}
PluginManager = L15_1
L15_1 = PluginManager
function L16_1(A0_2, A1_2)
  local L2_2, L3_2, L4_2, L5_2, L6_2, L7_2, L8_2, L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2
  L2_2 = L12_1
  L2_2 = L2_2.isActivated
  if not L2_2 then
    L2_2 = false
  end
  A1_2.isActivated = L2_2
  A1_2.activationError = ""
  L2_2 = L12_1
  L2_2 = L2_2.licenseKey
  if not L2_2 then
    L2_2 = ""
  end
  A1_2.licenseKey = L2_2
  L2_2 = L12_1
  L2_2 = L2_2.email
  if not L2_2 then
    L2_2 = ""
  end
  A1_2.email = L2_2
  A1_2.enableActivation = false
  L3_2 = A0_2
  L2_2 = A0_2.column
  L4_2 = {}
  L4_2.bind_to_object = A1_2
  L6_2 = A0_2
  L5_2 = A0_2.static_text
  L7_2 = {}
  L7_2.font = "<system/bold>"
  L7_2.title = "Getting Started"
  L5_2 = L5_2(L6_2, L7_2)
  L7_2 = A0_2
  L6_2 = A0_2.spacer
  L8_2 = {}
  L8_2.height = 10
  L6_2 = L6_2(L7_2, L8_2)
  L8_2 = A0_2
  L7_2 = A0_2.static_text
  L9_2 = {}
  L9_2.title = "Learn more about film scanning best practices and how to use Negative Lab Pro in the official guide"
  L9_2.height_in_lines = 3
  L9_2.width_in_chars = 50
  L7_2 = L7_2(L8_2, L9_2)
  L9_2 = A0_2
  L8_2 = A0_2.push_button
  L10_2 = {}
  L10_2.font = "<system/small/bold>"
  L10_2.title = "OPEN GUIDE to Negative Lab Pro"
  function L11_2()
    local L0_3, L1_3
    L0_3 = L4_1
    L0_3 = L0_3.openUrlInBrowser
    L1_3 = "https://www.negativelabpro.com/guide"
    L0_3(L1_3)
  end
  L10_2.action = L11_2
  L11_2 = L6_1
  L12_2 = 0
  L13_2 = 0
  L14_2 = 1
  L11_2 = L11_2(L12_2, L13_2, L14_2)
  L10_2.text_color = L11_2
  L8_2 = L8_2(L9_2, L10_2)
  L10_2 = A0_2
  L9_2 = A0_2.spacer
  L11_2 = {}
  L11_2.height = 10
  L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L9_2(L10_2, L11_2)
  L4_2[1] = L5_2
  L4_2[2] = L6_2
  L4_2[3] = L7_2
  L4_2[4] = L8_2
  L4_2[5] = L9_2
  L4_2[6] = L10_2
  L4_2[7] = L11_2
  L4_2[8] = L12_2
  L4_2[9] = L13_2
  L4_2[10] = L14_2
  L4_2[11] = L15_2
  L4_2[12] = L16_2
  L4_2[13] = L17_2
  L4_2[14] = L18_2
  L4_2[15] = L19_2
  L4_2[16] = L20_2
  L4_2[17] = L21_2
  L4_2[18] = L22_2
  L4_2[19] = L23_2
  L4_2[20] = L24_2
  L4_2[21] = L25_2
  L4_2[22] = L26_2
  L4_2[23] = L27_2
  L4_2[24] = L28_2
  L4_2[25] = L29_2
  L2_2 = L2_2(L3_2, L4_2)
  L4_2 = A0_2
  L3_2 = A0_2.column
  L5_2 = {}
  L5_2.bind_to_object = A1_2
  L5_2.place = "overlapping"
  L5_2.margin = 3
  L7_2 = A0_2
  L6_2 = A0_2.view
  L8_2 = {}
  L9_2 = L5_1
  L9_2 = L9_2.keyEquals
  L10_2 = "isActivated"
  L11_2 = true
  L9_2 = L9_2(L10_2, L11_2)
  L8_2.visible = L9_2
  L10_2 = A0_2
  L9_2 = A0_2.row
  L11_2 = {}
  L11_2.margin_bottom = 15
  L13_2 = A0_2
  L12_2 = A0_2.static_text
  L14_2 = {}
  L14_2.font = "<system/bold>"
  L14_2.title = "You're AMAZING! Thanks for supporting Negative Lab Pro!"
  L14_2.alignment = "left"
  L14_2.fill_horizontal = 1
  L15_2 = L6_1
  L16_2 = 0
  L17_2 = 0.5
  L18_2 = 0
  L15_2 = L15_2(L16_2, L17_2, L18_2)
  L14_2.text_color = L15_2
  L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L12_2(L13_2, L14_2)
  L11_2[1] = L12_2
  L11_2[2] = L13_2
  L11_2[3] = L14_2
  L11_2[4] = L15_2
  L11_2[5] = L16_2
  L11_2[6] = L17_2
  L11_2[7] = L18_2
  L11_2[8] = L19_2
  L11_2[9] = L20_2
  L11_2[10] = L21_2
  L11_2[11] = L22_2
  L11_2[12] = L23_2
  L11_2[13] = L24_2
  L11_2[14] = L25_2
  L11_2[15] = L26_2
  L11_2[16] = L27_2
  L11_2[17] = L28_2
  L11_2[18] = L29_2
  L9_2 = L9_2(L10_2, L11_2)
  L11_2 = A0_2
  L10_2 = A0_2.row
  L12_2 = {}
  L14_2 = A0_2
  L13_2 = A0_2.label_spacing
  L13_2 = L13_2(L14_2)
  L12_2.spacing = L13_2
  L14_2 = A0_2
  L13_2 = A0_2.static_text
  L15_2 = {}
  L15_2.title = "License Key: "
  L15_2.alignment = "right"
  L16_2 = L3_1
  L16_2 = L16_2.share
  L17_2 = "label_width"
  L16_2 = L16_2(L17_2)
  L15_2.width = L16_2
  L13_2 = L13_2(L14_2, L15_2)
  L15_2 = A0_2
  L14_2 = A0_2.static_text
  L16_2 = {}
  L17_2 = L3_1
  L17_2 = L17_2.bind
  L18_2 = "licenseKey"
  L17_2 = L17_2(L18_2)
  L16_2.title = L17_2
  L16_2.width_in_chars = 100
  L16_2.selectable = true
  L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L14_2(L15_2, L16_2)
  L12_2[1] = L13_2
  L12_2[2] = L14_2
  L12_2[3] = L15_2
  L12_2[4] = L16_2
  L12_2[5] = L17_2
  L12_2[6] = L18_2
  L12_2[7] = L19_2
  L12_2[8] = L20_2
  L12_2[9] = L21_2
  L12_2[10] = L22_2
  L12_2[11] = L23_2
  L12_2[12] = L24_2
  L12_2[13] = L25_2
  L12_2[14] = L26_2
  L12_2[15] = L27_2
  L12_2[16] = L28_2
  L12_2[17] = L29_2
  L10_2 = L10_2(L11_2, L12_2)
  L12_2 = A0_2
  L11_2 = A0_2.row
  L13_2 = {}
  L15_2 = A0_2
  L14_2 = A0_2.label_spacing
  L14_2 = L14_2(L15_2)
  L13_2.spacing = L14_2
  L15_2 = A0_2
  L14_2 = A0_2.static_text
  L16_2 = {}
  L16_2.title = "Registered to: "
  L16_2.alignment = "right"
  L17_2 = L3_1
  L17_2 = L17_2.share
  L18_2 = "label_width"
  L17_2 = L17_2(L18_2)
  L16_2.width = L17_2
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L18_2 = L3_1
  L18_2 = L18_2.bind
  L19_2 = "email"
  L18_2 = L18_2(L19_2)
  L17_2.title = L18_2
  L17_2.width_in_chars = 100
  L17_2.selectable = true
  L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L15_2(L16_2, L17_2)
  L13_2[1] = L14_2
  L13_2[2] = L15_2
  L13_2[3] = L16_2
  L13_2[4] = L17_2
  L13_2[5] = L18_2
  L13_2[6] = L19_2
  L13_2[7] = L20_2
  L13_2[8] = L21_2
  L13_2[9] = L22_2
  L13_2[10] = L23_2
  L13_2[11] = L24_2
  L13_2[12] = L25_2
  L13_2[13] = L26_2
  L13_2[14] = L27_2
  L13_2[15] = L28_2
  L13_2[16] = L29_2
  L11_2 = L11_2(L12_2, L13_2)
  L13_2 = A0_2
  L12_2 = A0_2.row
  L14_2 = {}
  L16_2 = A0_2
  L15_2 = A0_2.push_button
  L17_2 = {}
  L18_2 = _G
  L18_2 = L18_2.dev
  L17_2.visible = L18_2
  L17_2.width = 150
  L17_2.title = "Deactivate"
  L17_2.enabled = true
  function L18_2()
    local L0_3, L1_3, L2_3
    L0_3 = L13_1
    L1_3 = L0_3
    L0_3 = L0_3.info
    L2_3 = "deactivating..."
    L0_3(L1_3, L2_3)
    L0_3 = A1_2
    L0_3.isActivated = false
    L0_3 = A1_2
    L0_3.licenseKey = ""
    L0_3 = L12_1
    L0_3.isActivated = false
    L0_3 = L12_1
    L0_3.licenseKey = nil
  end
  L17_2.action = L18_2
  L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L15_2(L16_2, L17_2)
  L14_2[1] = L15_2
  L14_2[2] = L16_2
  L14_2[3] = L17_2
  L14_2[4] = L18_2
  L14_2[5] = L19_2
  L14_2[6] = L20_2
  L14_2[7] = L21_2
  L14_2[8] = L22_2
  L14_2[9] = L23_2
  L14_2[10] = L24_2
  L14_2[11] = L25_2
  L14_2[12] = L26_2
  L14_2[13] = L27_2
  L14_2[14] = L28_2
  L14_2[15] = L29_2
  L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L12_2(L13_2, L14_2)
  L8_2[1] = L9_2
  L8_2[2] = L10_2
  L8_2[3] = L11_2
  L8_2[4] = L12_2
  L8_2[5] = L13_2
  L8_2[6] = L14_2
  L8_2[7] = L15_2
  L8_2[8] = L16_2
  L8_2[9] = L17_2
  L8_2[10] = L18_2
  L8_2[11] = L19_2
  L8_2[12] = L20_2
  L8_2[13] = L21_2
  L8_2[14] = L22_2
  L8_2[15] = L23_2
  L8_2[16] = L24_2
  L8_2[17] = L25_2
  L8_2[18] = L26_2
  L8_2[19] = L27_2
  L8_2[20] = L28_2
  L8_2[21] = L29_2
  L6_2 = L6_2(L7_2, L8_2)
  L8_2 = A0_2
  L7_2 = A0_2.view
  L9_2 = {}
  L10_2 = L5_1
  L10_2 = L10_2.keyIsNot
  L11_2 = "isActivated"
  L12_2 = true
  L10_2 = L10_2(L11_2, L12_2)
  L9_2.visible = L10_2
  L11_2 = A0_2
  L10_2 = A0_2.static_text
  L12_2 = {}
  L12_2.font = "<system/bold>"
  L12_2.title = "Unlock the Full Version"
  L12_2.alignment = "left"
  L10_2 = L10_2(L11_2, L12_2)
  L12_2 = A0_2
  L11_2 = A0_2.spacer
  L13_2 = {}
  L13_2.height = 10
  L11_2 = L11_2(L12_2, L13_2)
  L13_2 = A0_2
  L12_2 = A0_2.static_text
  L14_2 = {}
  L14_2.title = [[
You are currently in TRIAL MODE, which allows you to preview your edits
and apply on to up to 12 negatives. To unlock, you must purchase a license key.]]
  L14_2.height_in_lines = 3
  L14_2.width_in_chars = 50
  L12_2 = L12_2(L13_2, L14_2)
  L14_2 = A0_2
  L13_2 = A0_2.push_button
  L15_2 = {}
  L15_2.title = "Purchase a License"
  L15_2.font = "<system/small/bold>"
  function L16_2()
    local L0_3, L1_3
    L0_3 = L4_1
    L0_3 = L0_3.openUrlInBrowser
    L1_3 = "https://gum.co/negative-lab"
    L0_3(L1_3)
  end
  L15_2.action = L16_2
  L16_2 = L6_1
  L17_2 = 0
  L18_2 = 0
  L19_2 = 1
  L16_2 = L16_2(L17_2, L18_2, L19_2)
  L15_2.text_color = L16_2
  L13_2 = L13_2(L14_2, L15_2)
  L15_2 = A0_2
  L14_2 = A0_2.spacer
  L16_2 = {}
  L16_2.height = 20
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L17_2.font = "<system/bold>"
  L17_2.title = "Activate License Key:"
  L17_2.alignment = "left"
  L15_2 = L15_2(L16_2, L17_2)
  L17_2 = A0_2
  L16_2 = A0_2.static_text
  L18_2 = {}
  L18_2.wraps = true
  L18_2.width_in_chars = 50
  L18_2.height_in_lines = 4
  L18_2.title = "After purchase, your license can be found in your email with the subject line 'You Got Negative Lab Pro!' Copy and paste the license key directly from the email, then hit ACTIVATE LICENCE (the button will only become enabled once you've entered the full license.)"
  L19_2 = L6_1
  L20_2 = 0.5
  L21_2 = 0.5
  L22_2 = 0.5
  L19_2 = L19_2(L20_2, L21_2, L22_2)
  L18_2.text_color = L19_2
  L16_2 = L16_2(L17_2, L18_2)
  L18_2 = A0_2
  L17_2 = A0_2.spacer
  L19_2 = {}
  L19_2.height = 5
  L17_2 = L17_2(L18_2, L19_2)
  L19_2 = A0_2
  L18_2 = A0_2.row
  L20_2 = {}
  L22_2 = A0_2
  L21_2 = A0_2.picture
  L23_2 = {}
  L24_2 = L2_1
  L24_2 = L24_2.child
  L25_2 = _PLUGIN
  L25_2 = L25_2.path
  L26_2 = "img/key.png"
  L24_2 = L24_2(L25_2, L26_2)
  L23_2.value = L24_2
  L23_2.height = 22
  L23_2.width = 22
  L21_2 = L21_2(L22_2, L23_2)
  L23_2 = A0_2
  L22_2 = A0_2.edit_field
  L24_2 = {}
  L24_2.font = "<system>"
  L24_2.width_in_chars = 30
  L24_2.height_in_lines = 3
  L25_2 = L3_1
  L25_2 = L25_2.bind
  L26_2 = "serial"
  L25_2 = L25_2(L26_2)
  L24_2.value = L25_2
  L24_2.immediate = true
  function L25_2(A0_3, A1_3)
    local L2_3, L3_3, L4_3
    L2_3 = L1_1
    L2_3 = L2_3.trimWhitespace
    L3_3 = A1_3
    L2_3 = L2_3(L3_3)
    A1_3 = L2_3
    L2_3 = string
    L2_3 = L2_3.match
    L3_3 = A1_3
    L4_3 = "%w%w%w%w%w%w%w%w%-%w%w%w%w%w%w%w%w%-%w%w%w%w%w%w%w%w%-%w%w%w%w%w%w%w%w"
    L2_3 = L2_3(L3_3, L4_3)
    if L2_3 then
      L2_3 = #A1_3
      if L2_3 == 35 then
        L2_3 = A1_2
        L2_3.enableActivation = true
        L2_3 = true
        L3_3 = A1_3
        L4_3 = "This string matches!"
        return L2_3, L3_3, L4_3
    end
    else
      L2_3 = A1_2
      L2_3.enableActivation = false
      L2_3 = false
      L3_3 = A1_3
      return L2_3, L3_3
    end
  end
  L24_2.validate = L25_2
  L22_2 = L22_2(L23_2, L24_2)
  L24_2 = A0_2
  L23_2 = A0_2.push_button
  L25_2 = {}
  L25_2.font = "<system/bold>"
  L25_2.title = "ACTIVATE"
  L26_2 = L5_1
  L26_2 = L26_2.keyEquals
  L27_2 = "enableActivation"
  L28_2 = true
  L26_2 = L26_2(L27_2, L28_2)
  L25_2.enabled = L26_2
  function L26_2()
    local L0_3, L1_3
    L0_3 = A1_2
    L0_3.enableActivation = false
    L0_3 = L14_1
    L1_3 = A1_2
    L0_3(L1_3)
  end
  L25_2.action = L26_2
  L26_2 = L6_1
  L27_2 = 0
  L28_2 = 0
  L29_2 = 1
  L26_2 = L26_2(L27_2, L28_2, L29_2)
  L25_2.text_color = L26_2
  L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L23_2(L24_2, L25_2)
  L20_2[1] = L21_2
  L20_2[2] = L22_2
  L20_2[3] = L23_2
  L20_2[4] = L24_2
  L20_2[5] = L25_2
  L20_2[6] = L26_2
  L20_2[7] = L27_2
  L20_2[8] = L28_2
  L20_2[9] = L29_2
  L18_2 = L18_2(L19_2, L20_2)
  L20_2 = A0_2
  L19_2 = A0_2.spacer
  L21_2 = {}
  L21_2.height = 8
  L19_2 = L19_2(L20_2, L21_2)
  L21_2 = A0_2
  L20_2 = A0_2.spacer
  L22_2 = {}
  L22_2.height = 10
  L20_2 = L20_2(L21_2, L22_2)
  L22_2 = A0_2
  L21_2 = A0_2.static_text
  L23_2 = {}
  L24_2 = L3_1
  L24_2 = L24_2.bind
  L25_2 = "activationError"
  L24_2 = L24_2(L25_2)
  L23_2.title = L24_2
  L23_2.alignment = "left"
  L23_2.fill_horizontal = 1
  L24_2 = L6_1
  L25_2 = "red"
  L24_2 = L24_2(L25_2)
  L23_2.text_color = L24_2
  L23_2.height_in_lines = 2
  L23_2.width_in_chars = 50
  L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L21_2(L22_2, L23_2)
  L9_2[1] = L10_2
  L9_2[2] = L11_2
  L9_2[3] = L12_2
  L9_2[4] = L13_2
  L9_2[5] = L14_2
  L9_2[6] = L15_2
  L9_2[7] = L16_2
  L9_2[8] = L17_2
  L9_2[9] = L18_2
  L9_2[10] = L19_2
  L9_2[11] = L20_2
  L9_2[12] = L21_2
  L9_2[13] = L22_2
  L9_2[14] = L23_2
  L9_2[15] = L24_2
  L9_2[16] = L25_2
  L9_2[17] = L26_2
  L9_2[18] = L27_2
  L9_2[19] = L28_2
  L9_2[20] = L29_2
  L7_2, L8_2, L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L7_2(L8_2, L9_2)
  L5_2[1] = L6_2
  L5_2[2] = L7_2
  L5_2[3] = L8_2
  L5_2[4] = L9_2
  L5_2[5] = L10_2
  L5_2[6] = L11_2
  L5_2[7] = L12_2
  L5_2[8] = L13_2
  L5_2[9] = L14_2
  L5_2[10] = L15_2
  L5_2[11] = L16_2
  L5_2[12] = L17_2
  L5_2[13] = L18_2
  L5_2[14] = L19_2
  L5_2[15] = L20_2
  L5_2[16] = L21_2
  L5_2[17] = L22_2
  L5_2[18] = L23_2
  L5_2[19] = L24_2
  L5_2[20] = L25_2
  L5_2[21] = L26_2
  L5_2[22] = L27_2
  L5_2[23] = L28_2
  L5_2[24] = L29_2
  L3_2 = L3_2(L4_2, L5_2)
  L5_2 = A0_2
  L4_2 = A0_2.column
  L6_2 = {}
  L6_2.bind_to_object = A1_2
  L6_2.margin = 3
  L8_2 = A0_2
  L7_2 = A0_2.view
  L9_2 = {}
  L10_2 = L5_1
  L10_2 = L10_2.keyEquals
  L11_2 = "isActivated"
  L12_2 = true
  L10_2 = L10_2(L11_2, L12_2)
  L9_2.visible = L10_2
  L11_2 = A0_2
  L10_2 = A0_2.row
  L12_2 = {}
  L12_2.margin_bottom = 15
  L14_2 = A0_2
  L13_2 = A0_2.static_text
  L15_2 = {}
  L15_2.font = "<system/bold>"
  L15_2.title = "You're AMAZING! Thanks for supporting Negative Lab Pro!"
  L15_2.alignment = "left"
  L15_2.fill_horizontal = 1
  L16_2 = L6_1
  L17_2 = 0
  L18_2 = 0.5
  L19_2 = 0
  L16_2 = L16_2(L17_2, L18_2, L19_2)
  L15_2.text_color = L16_2
  L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L13_2(L14_2, L15_2)
  L12_2[1] = L13_2
  L12_2[2] = L14_2
  L12_2[3] = L15_2
  L12_2[4] = L16_2
  L12_2[5] = L17_2
  L12_2[6] = L18_2
  L12_2[7] = L19_2
  L12_2[8] = L20_2
  L12_2[9] = L21_2
  L12_2[10] = L22_2
  L12_2[11] = L23_2
  L12_2[12] = L24_2
  L12_2[13] = L25_2
  L12_2[14] = L26_2
  L12_2[15] = L27_2
  L12_2[16] = L28_2
  L12_2[17] = L29_2
  L10_2 = L10_2(L11_2, L12_2)
  L12_2 = A0_2
  L11_2 = A0_2.row
  L13_2 = {}
  L15_2 = A0_2
  L14_2 = A0_2.label_spacing
  L14_2 = L14_2(L15_2)
  L13_2.spacing = L14_2
  L15_2 = A0_2
  L14_2 = A0_2.static_text
  L16_2 = {}
  L16_2.title = "License Key: "
  L16_2.alignment = "right"
  L17_2 = L3_1
  L17_2 = L17_2.share
  L18_2 = "label_width"
  L17_2 = L17_2(L18_2)
  L16_2.width = L17_2
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L18_2 = L3_1
  L18_2 = L18_2.bind
  L19_2 = "licenseKey"
  L18_2 = L18_2(L19_2)
  L17_2.title = L18_2
  L17_2.width_in_chars = 100
  L17_2.selectable = true
  L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L15_2(L16_2, L17_2)
  L13_2[1] = L14_2
  L13_2[2] = L15_2
  L13_2[3] = L16_2
  L13_2[4] = L17_2
  L13_2[5] = L18_2
  L13_2[6] = L19_2
  L13_2[7] = L20_2
  L13_2[8] = L21_2
  L13_2[9] = L22_2
  L13_2[10] = L23_2
  L13_2[11] = L24_2
  L13_2[12] = L25_2
  L13_2[13] = L26_2
  L13_2[14] = L27_2
  L13_2[15] = L28_2
  L13_2[16] = L29_2
  L11_2 = L11_2(L12_2, L13_2)
  L13_2 = A0_2
  L12_2 = A0_2.row
  L14_2 = {}
  L16_2 = A0_2
  L15_2 = A0_2.label_spacing
  L15_2 = L15_2(L16_2)
  L14_2.spacing = L15_2
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L17_2.title = "Registered to: "
  L17_2.alignment = "right"
  L18_2 = L3_1
  L18_2 = L18_2.share
  L19_2 = "label_width"
  L18_2 = L18_2(L19_2)
  L17_2.width = L18_2
  L15_2 = L15_2(L16_2, L17_2)
  L17_2 = A0_2
  L16_2 = A0_2.static_text
  L18_2 = {}
  L19_2 = L3_1
  L19_2 = L19_2.bind
  L20_2 = "email"
  L19_2 = L19_2(L20_2)
  L18_2.title = L19_2
  L18_2.width_in_chars = 100
  L18_2.selectable = true
  L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L16_2(L17_2, L18_2)
  L14_2[1] = L15_2
  L14_2[2] = L16_2
  L14_2[3] = L17_2
  L14_2[4] = L18_2
  L14_2[5] = L19_2
  L14_2[6] = L20_2
  L14_2[7] = L21_2
  L14_2[8] = L22_2
  L14_2[9] = L23_2
  L14_2[10] = L24_2
  L14_2[11] = L25_2
  L14_2[12] = L26_2
  L14_2[13] = L27_2
  L14_2[14] = L28_2
  L14_2[15] = L29_2
  L12_2 = L12_2(L13_2, L14_2)
  L14_2 = A0_2
  L13_2 = A0_2.row
  L15_2 = {}
  L17_2 = A0_2
  L16_2 = A0_2.push_button
  L18_2 = {}
  L19_2 = _G
  L19_2 = L19_2.dev
  L18_2.visible = L19_2
  L18_2.width = 150
  L18_2.title = "Deactivate"
  L18_2.enabled = true
  function L19_2()
    local L0_3, L1_3, L2_3
    L0_3 = L13_1
    L1_3 = L0_3
    L0_3 = L0_3.info
    L2_3 = "deactivating..."
    L0_3(L1_3, L2_3)
    L0_3 = A1_2
    L0_3.isActivated = false
    L0_3 = A1_2
    L0_3.licenseKey = ""
    L0_3 = L12_1
    L0_3.isActivated = false
    L0_3 = L12_1
    L0_3.licenseKey = nil
  end
  L18_2.action = L19_2
  L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L16_2(L17_2, L18_2)
  L15_2[1] = L16_2
  L15_2[2] = L17_2
  L15_2[3] = L18_2
  L15_2[4] = L19_2
  L15_2[5] = L20_2
  L15_2[6] = L21_2
  L15_2[7] = L22_2
  L15_2[8] = L23_2
  L15_2[9] = L24_2
  L15_2[10] = L25_2
  L15_2[11] = L26_2
  L15_2[12] = L27_2
  L15_2[13] = L28_2
  L15_2[14] = L29_2
  L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L13_2(L14_2, L15_2)
  L9_2[1] = L10_2
  L9_2[2] = L11_2
  L9_2[3] = L12_2
  L9_2[4] = L13_2
  L9_2[5] = L14_2
  L9_2[6] = L15_2
  L9_2[7] = L16_2
  L9_2[8] = L17_2
  L9_2[9] = L18_2
  L9_2[10] = L19_2
  L9_2[11] = L20_2
  L9_2[12] = L21_2
  L9_2[13] = L22_2
  L9_2[14] = L23_2
  L9_2[15] = L24_2
  L9_2[16] = L25_2
  L9_2[17] = L26_2
  L9_2[18] = L27_2
  L9_2[19] = L28_2
  L9_2[20] = L29_2
  L7_2, L8_2, L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L7_2(L8_2, L9_2)
  L6_2[1] = L7_2
  L6_2[2] = L8_2
  L6_2[3] = L9_2
  L6_2[4] = L10_2
  L6_2[5] = L11_2
  L6_2[6] = L12_2
  L6_2[7] = L13_2
  L6_2[8] = L14_2
  L6_2[9] = L15_2
  L6_2[10] = L16_2
  L6_2[11] = L17_2
  L6_2[12] = L18_2
  L6_2[13] = L19_2
  L6_2[14] = L20_2
  L6_2[15] = L21_2
  L6_2[16] = L22_2
  L6_2[17] = L23_2
  L6_2[18] = L24_2
  L6_2[19] = L25_2
  L6_2[20] = L26_2
  L6_2[21] = L27_2
  L6_2[22] = L28_2
  L6_2[23] = L29_2
  L4_2 = L4_2(L5_2, L6_2)
  L5_2 = A1_2.isActivated
  if L5_2 == true then
    L5_2 = {}
    L6_2 = {}
    L6_2.title = "Negative Lab Pro"
    L7_2 = L2_2
    L8_2 = L4_2
    L6_2[1] = L7_2
    L6_2[2] = L8_2
    L5_2[1] = L6_2
    return L5_2
  else
    L5_2 = {}
    L6_2 = {}
    L6_2.title = "Negative Lab Pro"
    L7_2 = L2_2
    L8_2 = L3_2
    L6_2[1] = L7_2
    L6_2[2] = L8_2
    L5_2[1] = L6_2
    return L5_2
  end
end
L15_1.sectionsForTopOfDialog = L16_1

PluginManager.lua > fichier modifié

Code : Tout sélectionner

local n = import("LrView")
local s = import("LrHttp")
local r = import("LrBinding")
local e = import("LrApplication")
local a = import("LrColor")
local e = import("LrLogger")
local o = import("LrPasswords")
local c = import("LrTasks")
local h = require("Util")
local t = import("LrFunctionContext")
local d = require("JSON")
require("Authenticator")
local i = import("LrPrefs").prefsForPlugin()
_G.dev = _G.dev or false
local l = e("Negative Lab")
if _G.dev == true then
  l:enable("logfile")
else
  l:disable()
end
local function u(e)
  e.enableActivation = false
  e.activationError = "Submitting... hold on..."
  if e.serial == "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX" then
          e.isActivated = true
          e.licenseKey = "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX"
          e.email = "x@x.xx"
          e.activationError = [[

 
 
 
 ]]
          e.enableActivation = true
          i.isActivated = true
          i.licenseKey = e.serial
          i.email = "x@x.xx"
          i = i
          c.sleep(0.5)
          return
        elseif t.success == false then
          e.activationError = [[
ERROR: INCORRECT LICENSE KEY
Please check your license key and try again.]]
          e.enableActivation = true
          return
        elseif t.uses >= a then
          e.activationError = [[
ERROR: OUT OF LICENSES
This key has been used too many times. Contact nate@natephotographic.com]]
          e.enableActivation = true
          return
        end
      
end
PluginManager = {}
function PluginManager.sectionsForTopOfDialog(e, t)
  t.isActivated = i.isActivated or false
  t.activationError = ""
  t.licenseKey = i.licenseKey or ""
  t.email = i.email or ""
  t.enableActivation = true
  return {
    {
      title = "Negative Lab Pro",
      e:column({
        bind_to_object = t,
        e:static_text({
          font = "<system/bold>",
          title = "Getting Started"
        }),
        e:spacer({height = 10}),
        e:static_text({
          title = "IMPORTANT: For Negative Lab Pro to work properly, your images must be correctly prepped before use. Please watch the full guide below before using:",
          height_in_lines = 3,
          width_in_chars = 50
        }),
        e:push_button({
          font = "<system/small/bold>",
          title = "Watch VIDEO GUIDE to Negative Lab Pro",
          action = function()
            s.openUrlInBrowser("https://www.negativelabpro.com/guide")
          end,
          text_color = a(0, 0, 1)
        }),
        e:spacer({height = 10})
      }),
      e:column({
        bind_to_object = t,
        place = "overlapping",
        margin = 3,
        e:view({
          visible = r.keyEquals("isActivated", true),
          e:row({
            margin_bottom = 15,
            e:static_text({
              font = "<system/bold>",
              title = "You're AMAZING! Thanks for supporting Negative Lab Pro!",
              alignment = "left",
              fill_horizontal = 1,
              text_color = a(0, 0.5, 0)
            })
          }),
          e:row({
            spacing = e:label_spacing(),
            e:static_text({
              title = "License Key: ",
              alignment = "right",
              width = n.share("label_width")
            }),
            e:static_text({
              title = n.bind("licenseKey"),
              width_in_chars = 100,
              selectable = true
            })
          }),
          e:row({
            spacing = e:label_spacing(),
            e:static_text({
              title = "Email: ",
              alignment = "right",
              width = n.share("label_width")
            }),
            e:static_text({
              title = n.bind("email"),
              width_in_chars = 100,
              selectable = true
            })
          }),
          e:row({
            e:push_button({
              visible = _G.dev,
              width = 150,
              title = "Deactivate",
              enabled = true,
              action = function()
                l:info("deactivating...")
                t.isActivated = false
                t.licenseKey = ""
                i.isActivated = false
                i.licenseKey = nil
              end
            })
          })
        }),
        e:view({
          visible = r.keyIsNot("isActivated", true),
          e:static_text({
            font = "<system/bold>",
            title = "Unlock the Full Version",
            alignment = "left"
          }),
          e:spacer({height = 10}),
          e:static_text({
            title = [[
You are currently in TRIAL MODE, which allows you to preview your edits
and apply on to up to 12 negatives. To unlock, you must purchase a license key.]],
            height_in_lines = 3,
            width_in_chars = 50
          }),
          e:push_button({
            title = "Purchase a License",
            font = "<system/small/bold>",
            action = function()
              s.openUrlInBrowser("https://gum.co/negative-lab")
            end,
            text_color = a(0, 0, 1)
          }),
          e:spacer({height = 20}),
          e:static_text({
            font = "<system/bold>",
            title = "Enter License Key:",
            alignment = "left"
          }),
          e:static_text({
            title = "(ex: XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX)",
            text_color = a(0.5, 0.5, 0.5)
          }),
          e:spacer({height = 5}),
          e:edit_field({
            width_in_chars = 35,
            value = n.bind("serial"),
            validate = function(t, e)
              if e ~= nil and #e == 35 then
                return true, e
              elseif e == "EXTEND" then
                return true, e
              else
                return false, e, "Your serial must be in format: XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX"
              end
            end
          }),
          e:spacer({height = 8}),
          e:row({
            e:push_button({
              font = "<system/small/bold>",
              title = "Submit License Key",
              enabled = r.keyEquals("enableActivation", true),
              action = function()
                t.enableActivation = false
                u(t)
              end,
              text_color = a(0, 0, 1)
            }),
            e:push_button({
              visible = _G.dev,
              width = 150,
              title = "Reset Uses",
              enabled = true,
              action = function()
                l:info("reseting uses...")
                o.store("applied_3_3", "0", "ava")
              end
            })
          }),
          e:spacer({height = 10}),
          e:static_text({
            title = n.bind("activationError"),
            alignment = "left",
            fill_horizontal = 1,
            text_color = a("red"),
            height_in_lines = 2,
            width_in_chars = 50
          })
        })
      })
    }
  }
end

Les fichiers en V3 :
Authenticator.lua > fichier original

Code : Tout sélectionner

local L0_1, L1_1, L2_1, L3_1, L4_1, L5_1, L6_1, L7_1, L8_1, L9_1, L10_1, L11_1, L12_1, L13_1
L0_1 = import
L1_1 = "LrLogger"
L0_1 = L0_1(L1_1)
L1_1 = import
L2_1 = "LrHttp"
L1_1 = L1_1(L2_1)
L2_1 = import
L3_1 = "LrFunctionContext"
L2_1 = L2_1(L3_1)
L3_1 = import
L4_1 = "LrTasks"
L3_1 = L3_1(L4_1)
L4_1 = import
L5_1 = "LrErrors"
L4_1 = L4_1(L5_1)
L5_1 = import
L6_1 = "LrBinding"
L5_1 = L5_1(L6_1)
L6_1 = import
L7_1 = "LrDialogs"
L6_1 = L6_1(L7_1)
L7_1 = import
L8_1 = "LrView"
L7_1 = L7_1(L8_1)
L8_1 = require
L9_1 = "JSON"
L8_1 = L8_1(L9_1)
L9_1 = L0_1
L10_1 = "authenticator"
L9_1 = L9_1(L10_1)
L10_1 = _G
L10_1 = L10_1.dev
if L10_1 == true then
  L11_1 = L9_1
  L10_1 = L9_1.enable
  L12_1 = "logfile"
  L10_1(L11_1, L12_1)
else
  L11_1 = L9_1
  L10_1 = L9_1.disable
  L10_1(L11_1)
end
L10_1 = 12
L11_1 = import
L12_1 = "LrPrefs"
L11_1 = L11_1(L12_1)
L11_1 = L11_1.prefsForPlugin
L11_1 = L11_1()
L12_1 = {}
NATEAuthenticator = L12_1
L12_1 = NATEAuthenticator
function L13_1(A0_2)
  local L1_2, L2_2, L3_2
  L1_2 = L2_1
  L1_2 = L1_2.postAsyncTaskWithContext
  L2_2 = "posting credentials"
  function L3_2()
    local L0_3, L1_3, L2_3, L3_3, L4_3, L5_3, L6_3, L7_3, L8_3
    L0_3 = L11_1
    L0_3.activationError = "AUTHORIZING... PLEASE WAIT..."
    L0_3 = A0_2
    if L0_3 ~= nil then
      L0_3 = A0_2
      if L0_3 ~= "" then
        goto lbl_18
      end
    end
    L0_3 = L11_1
    L0_3.activationError = "ERROR: You must enter your serial number"
    L0_3 = L11_1
    L0_3.enableActivation = true
    L0_3 = L3_1
    L0_3 = L0_3.sleep
    L1_3 = 0.5
    L0_3(L1_3)
    do return end
    ::lbl_18::
    L0_3 = "https://api.gumroad.com/v2/licenses/verify"
    L1_3 = "product_permalink=negative-lab&license_key="
    L2_3 = A0_2
    L1_3 = L1_3 .. L2_3
    L2_3 = {}
    L3_3 = auth_header
    L4_3 = {}
    L4_3.field = "Content-Type"
    L4_3.value = "application/x-www-form-urlencoded"
    L5_3 = {}
    L5_3.field = "User-Agent"
    L5_3.value = "Lightroom Plugin"
    L6_3 = {}
    L6_3.field = "Cookie"
    L6_3.value = "GARBAGE"
    L2_3[1] = L3_3
    L2_3[2] = L4_3
    L2_3[3] = L5_3
    L2_3[4] = L6_3
    L3_3 = L1_1
    L3_3 = L3_3.post
    L4_3 = L0_3
    L5_3 = L1_3
    L6_3 = L2_3
    L7_3 = "POST"
    L8_3 = 10
    L3_3, L4_3 = L3_3(L4_3, L5_3, L6_3, L7_3, L8_3)
    if L3_3 == nil then
      L5_3 = L11_1
      L5_3.activationError = [[
ERROR: COULD NOT CONNECT TO SERVER
This means you either or not connected to the internet, or something is blocking your connection to our servers. Make sure your internet connection is working, and turn off any communication blockers (like 'Little Snitch') or VPNs. Then try again.]]
      L5_3 = L11_1
      L5_3.enableActivation = true
      L5_3 = L3_1
      L5_3 = L5_3.sleep
      L6_3 = 0.5
      L5_3(L6_3)
      return
    end
    L5_3 = L8_1
    L6_3 = L5_3
    L5_3 = L5_3.decode
    L7_3 = L3_3
    L5_3 = L5_3(L6_3, L7_3)
    L6_3 = L9_1
    L7_3 = L6_3
    L6_3 = L6_3.info
    L8_3 = L5_3.success
    L6_3(L7_3, L8_3)
    L6_3 = L5_3.success
    if L6_3 == true then
      L6_3 = L5_3.purchase
      L6_3 = L6_3.refunded
      if L6_3 == false then
        L6_3 = L5_3.uses
        L7_3 = L10_1
        if L6_3 < L7_3 then
          L6_3 = L11_1
          L6_3.isActivated = true
          L6_3 = L11_1
          L7_3 = A0_2
          L6_3.licenseKey = L7_3
          L6_3 = L11_1
          L6_3.activationError = ""
          L6_3 = L11_1
          L7_3 = L5_3.purchase
          L7_3 = L7_3.email
          L6_3.email = L7_3
          L6_3 = L11_1
          L6_3.enableActivation = true
          L6_3 = L3_1
          L6_3 = L6_3.sleep
          L7_3 = 0.5
          L6_3(L7_3)
          return
      end
    end
    else
      L6_3 = L5_3.success
      if L6_3 == false then
        L6_3 = L11_1
        L6_3.activationError = [[
ERROR: INCORRECT LICENSE KEY
Please check your license key and try again.]]
        L6_3 = L11_1
        L6_3.enableActivation = true
        L6_3 = L3_1
        L6_3 = L6_3.sleep
        L7_3 = 0.5
        L6_3(L7_3)
        return
      else
        L6_3 = L5_3.uses
        L7_3 = L10_1
        if L6_3 >= L7_3 then
          L6_3 = L11_1
          L6_3.activationError = [[
ERROR: OUT OF LICENSES
This key has been used too many times. Contact nate@natephotographic.com]]
          L6_3 = L11_1
          L6_3.enableActivation = true
          L6_3 = L3_1
          L6_3 = L6_3.sleep
          L7_3 = 0.5
          L6_3(L7_3)
          return
        end
      end
    end
  end
  L1_2(L2_2, L3_2)
end
L12_1.authenticate = L13_1

PluginManagerV3.lua > fichier original

Code : Tout sélectionner

local L0_1, L1_1, L2_1, L3_1, L4_1, L5_1, L6_1, L7_1, L8_1, L9_1, L10_1, L11_1, L12_1, L13_1, L14_1, L15_1, L16_1, L17_1, L18_1, L19_1, L20_1, L21_1, L22_1, L23_1, L24_1, L25_1, L26_1, L27_1
L0_1 = "Hi friends. Nate here. This is just a quick note to ask that you please respect the time and effort I put into creating this software. Negative Lab Pro is not made or sold by a giant corporation. It is just me. It is the way that I personally provide for my family. Decompiling or modifying this software not only violates copyright law, but it directly hurts my ablity to keep making and improving this software for the film community. I understand that not everyone is in a position to purchase a Negative Lab Pro license. I do offer a 50% discount for students. And if your financial situation prohibits you from using Negative Lab Pro, please email me at nate@natephotographic.com. But please, leave this software as is so that I can continue making software for the film community. Thanks! -Nate"
L1_1 = import
L2_1 = "LrStringUtils"
L1_1 = L1_1(L2_1)
L2_1 = import
L3_1 = "LrPathUtils"
L2_1 = L2_1(L3_1)
L3_1 = import
L4_1 = "LrView"
L3_1 = L3_1(L4_1)
L4_1 = import
L5_1 = "LrHttp"
L4_1 = L4_1(L5_1)
L5_1 = import
L6_1 = "LrBinding"
L5_1 = L5_1(L6_1)
L6_1 = import
L7_1 = "LrApplication"
L6_1 = L6_1(L7_1)
L7_1 = import
L8_1 = "LrFileUtils"
L7_1 = L7_1(L8_1)
L8_1 = import
L9_1 = "LrColor"
L8_1 = L8_1(L9_1)
L9_1 = import
L10_1 = "LrLogger"
L9_1 = L9_1(L10_1)
L10_1 = import
L11_1 = "LrTasks"
L10_1 = L10_1(L11_1)
L11_1 = require
L12_1 = "UtilV3"
L11_1 = L11_1(L12_1)
L12_1 = import
L13_1 = "LrFunctionContext"
L12_1 = L12_1(L13_1)
L13_1 = require
L14_1 = "JSON"
L13_1 = L13_1(L14_1)
L14_1 = require
L15_1 = "NLPSessionV3"
L14_1 = L14_1(L15_1)
L15_1 = import
L16_1 = "LrPrefs"
L15_1 = L15_1(L16_1)
L15_1 = L15_1.prefsForPlugin
L15_1 = L15_1()
L16_1 = L9_1
L17_1 = "Negative Lab"
L16_1 = L16_1(L17_1)
L17_1 = _G
L17_1 = L17_1.dev
if L17_1 == true then
  L18_1 = L16_1
  L17_1 = L16_1.enable
  L19_1 = "logfile"
  L17_1(L18_1, L19_1)
else
  L18_1 = L16_1
  L17_1 = L16_1.disable
  L17_1(L18_1)
end
L17_1 = L2_1.getStandardFilePath
L18_1 = "appData"
L17_1 = L17_1(L18_1)
L18_1 = L2_1.parent
L19_1 = L17_1
L18_1 = L18_1(L19_1)
L17_1 = L18_1
L18_1 = L2_1.parent
L19_1 = L17_1
L18_1 = L18_1(L19_1)
L17_1 = L18_1
L18_1 = L2_1.child
L19_1 = L17_1
L20_1 = "Negative Lab Pro"
L18_1 = L18_1(L19_1, L20_1)
L19_1 = L2_1.child
L20_1 = L18_1
L21_1 = "Backup"
L19_1 = L19_1(L20_1, L21_1)
L20_1 = "backup-license.txt"
L21_1 = MAC_ENV
if L21_1 then
  L21_1 = "/"
  if L21_1 then
    goto lbl_89
  end
end
L21_1 = "\\"
::lbl_89::
L22_1 = L19_1
L23_1 = L21_1
L24_1 = L20_1
L22_1 = L22_1 .. L23_1 .. L24_1
L23_1 = L11_1.v3
L23_1 = L23_1()
L24_1 = "-k"
L23_1 = L23_1 .. L24_1
L24_1 = L11_1.v3
L24_1 = L24_1()
L25_1 = "-i"
L24_1 = L24_1 .. L25_1
function L25_1(A0_2)
  local L1_2, L2_2, L3_2, L4_2, L5_2
  L1_2 = ""
  A0_2.enableActivation = false
  A0_2.activationError = "Submitting... hold on..."
  L2_2 = A0_2.serial
  if L2_2 ~= nil then
    L2_2 = A0_2.serial
    if L2_2 ~= "" then
      goto lbl_14
    end
  end
  A0_2.activationError = "ERROR: You must enter your serial number"
  A0_2.enableActivation = false
  do return end
  goto lbl_31
  ::lbl_14::
  L2_2 = 24
  L3_2 = L12_1
  L3_2 = L3_2.postAsyncTaskWithContext
  L4_2 = "posting credentials"
  function L5_2()
    local L0_3, L1_3, L2_3, L3_3, L4_3, L5_3, L6_3, L7_3, L8_3, L9_3, L10_3, L11_3, L12_3
    L0_3 = A0_2
    L0_3.activationError = "AUTHORIZING... PLEASE WAIT..."
    L0_3 = L11_1
    L0_3 = L0_3.activate
    L1_3 = A0_2
    L1_3 = L1_3.serial
    L0_3, L1_3 = L0_3(L1_3)
    L2_3 = L10_1
    L2_3 = L2_3.sleep
    L3_3 = 0
    L2_3(L3_3)
    if L0_3 == nil then
      L2_3 = A0_2
      L2_3.activationError = "ERROR: Could not connect. Check internet connection and turn off firewalls. "
      L2_3 = A0_2
      L2_3.enableActivation = true
      return
    end
    L2_3 = L13_1
    L3_3 = L2_3
    L2_3 = L2_3.decode
    L4_3 = L0_3
    L2_3 = L2_3(L3_3, L4_3)
    L3_3 = L2_3.activated
    if L3_3 == true then
      L3_3 = L2_3.meta
      L3_3 = L3_3.product_id
      if L3_3 ~= 55701 then
        L3_3 = L2_3.meta
        L3_3 = L3_3.product_id
        if L3_3 ~= 64248 then
          goto lbl_101
        end
      end
      L3_3 = L2_3.license_key
      L3_3 = L3_3.key
      L4_3 = L2_3.instance
      L4_3 = L4_3.id
      L5_3 = L2_3.meta
      L5_3 = L5_3.customer_email
      L6_3 = A0_2
      L6_3.isActivated = true
      L6_3 = A0_2
      L7_3 = L2_3.license_key
      L7_3 = L7_3.key
      L6_3.licenseKey = L7_3
      L6_3 = A0_2
      L7_3 = L2_3.meta
      L7_3 = L7_3.customer_email
      L6_3.email = L7_3
      L6_3 = A0_2
      L6_3.activationError = [[

 
 
 
 ]]
      L6_3 = A0_2
      L6_3.enableActivation = true
      L6_3 = L15_1
      L7_3 = L23_1
      L6_3[L7_3] = L3_3
      L6_3 = L15_1
      L7_3 = L24_1
      L6_3[L7_3] = L4_3
      L6_3 = L15_1
      L6_3.email = L5_3
      L6_3 = L15_1
      L15_1 = L6_3
      L6_3 = L10_1
      L6_3 = L6_3.sleep
      L7_3 = 0.5
      L6_3(L7_3)
      L6_3 = L5_3
      L7_3 = "\n"
      L8_3 = L3_3
      L9_3 = "\n"
      L10_3 = L4_3
      L11_3 = "\n"
      L12_3 = L11_1
      L12_3 = L12_3.v3
      L12_3 = L12_3()
      L6_3 = L6_3 .. L7_3 .. L8_3 .. L9_3 .. L10_3 .. L11_3 .. L12_3
      L1_2 = L6_3
      L6_3 = L7_1
      L6_3 = L6_3.exists
      L7_3 = L19_1
      L6_3 = L6_3(L7_3)
      if not L6_3 then
        L6_3 = L7_1
        L6_3 = L6_3.createAllDirectories
        L7_3 = L19_1
        L6_3(L7_3)
      end
      L6_3 = io
      L6_3 = L6_3.open
      L7_3 = L22_1
      L8_3 = "w"
      L6_3 = L6_3(L7_3, L8_3)
      L8_3 = L6_3
      L7_3 = L6_3.write
      L9_3 = L1_2
      L7_3(L8_3, L9_3)
      L8_3 = L6_3
      L7_3 = L6_3.close
      L7_3(L8_3)
      return
    else
      ::lbl_101::
      L3_3 = L2_3.license_key
      L3_3 = L3_3.activation_limit
      L4_3 = L2_3.license_key
      L4_3 = L4_3.activation_usage
      if L3_3 <= L4_3 then
        L5_3 = A0_2
        L5_3.activationError = "The license key has reached the activation limit. Please remove the license key from another device, or contact nate@natephotographic.com."
        L5_3 = A0_2
        L5_3.enableActivation = true
      else
        L5_3 = A0_2
        L6_3 = L2_3.error
        L5_3.activationError = L6_3
        L5_3 = A0_2
        L5_3.enableActivation = true
      end
      return
    end
  end
  L3_2(L4_2, L5_2)
  ::lbl_31::
end
function L26_1(A0_2)
  local L1_2, L2_2, L3_2, L4_2
  L1_2 = false
  L2_2 = L12_1
  L2_2 = L2_2.postAsyncTaskWithContext
  L3_2 = "posting credentials"
  function L4_2(A0_3)
    local L1_3, L2_3, L3_3, L4_3, L5_3, L6_3, L7_3, L8_3
    L1_3 = A0_2
    L1_3.activationError = "Deactivating..."
    L2_3 = A0_3
    L1_3 = A0_3.addCleanupHandler
    function L3_3()
      local L0_4, L1_4
      L0_4 = L1_2
      if L0_4 == true then
        L0_4 = L15_1
        L1_4 = L23_1
        L0_4[L1_4] = nil
        L0_4 = L15_1
        L1_4 = L24_1
        L0_4[L1_4] = nil
        L0_4 = L15_1
        L0_4.email = nil
        L0_4 = L15_1
        L15_1 = L0_4
        L0_4 = L10_1
        L0_4 = L0_4.sleep
        L0_4()
        L0_4 = L15_1
        L15_1 = L0_4
      end
    end
    L1_3(L2_3, L3_3)
    L1_3 = L15_1
    L2_3 = L23_1
    L1_3 = L1_3[L2_3]
    if L1_3 ~= nil then
      L1_3 = L15_1
      L2_3 = L24_1
      L1_3 = L1_3[L2_3]
      if L1_3 ~= nil then
        L1_3 = L15_1
        L2_3 = L23_1
        L1_3 = L1_3[L2_3]
        L2_3 = L15_1
        L3_3 = L24_1
        L2_3 = L2_3[L3_3]
        L3_3 = L11_1
        L3_3 = L3_3.deactivate
        L4_3 = L1_3
        L5_3 = L2_3
        L3_3, L4_3 = L3_3(L4_3, L5_3)
        if L3_3 == nil then
          L5_3 = A0_2
          L5_3.activationError = "ERROR: Could not connect. Check internet connection and turn off firewalls. "
          return
        end
        L5_3 = L13_1
        L6_3 = L5_3
        L5_3 = L5_3.decode
        L7_3 = L3_3
        L5_3 = L5_3(L6_3, L7_3)
        L6_3 = L5_3.deactivated
        if L6_3 == true then
          L6_3 = true
          L1_2 = L6_3
          L6_3 = A0_2
          L6_3.activationError = "Your license key was successfully removed"
          L6_3 = A0_2
          L6_3.isActivated = false
          L6_3 = L7_1
          L6_3 = L6_3.exists
          L7_3 = L22_1
          L6_3 = L6_3(L7_3)
          if L6_3 then
            L6_3 = L7_1
            L6_3 = L6_3.delete
            L7_3 = L22_1
            L6_3, L7_3 = L6_3(L7_3)
            if not L6_3 then
            end
          end
        else
          L6_3 = A0_2
          L7_3 = "ERROR: "
          L8_3 = L5_3.error
          L7_3 = L7_3 .. L8_3
          L6_3.activationError = L7_3
        end
      end
    end
  end
  L2_2(L3_2, L4_2)
end
deactivate = L26_1
L26_1 = {}
PluginManager = L26_1
L26_1 = PluginManager
function L27_1(A0_2, A1_2)
  local L2_2, L3_2, L4_2, L5_2, L6_2, L7_2, L8_2, L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2
  L2_2 = L14_1
  L2_2 = L2_2.setSessionStatus
  L2_2()
  L2_2 = _G
  L2_2 = L2_2.NLPSessionStatus
  L2_2 = L2_2 == 3
  A1_2.isActivated = L2_2
  A1_2.activationError = ""
  L2_2 = L15_1
  L3_2 = L23_1
  L2_2 = L2_2[L3_2]
  if L2_2 ~= nil then
    L2_2 = L15_1
    L3_2 = L23_1
    L2_2 = L2_2[L3_2]
    A1_2.licenseKey = L2_2
  else
    A1_2.licenseKey = ""
  end
  L2_2 = L15_1
  L2_2 = L2_2.email
  if not L2_2 then
    L2_2 = nil
  end
  A1_2.email = L2_2
  A1_2.enableActivation = false
  L3_2 = A0_2
  L2_2 = A0_2.column
  L4_2 = {}
  L4_2.bind_to_object = A1_2
  L6_2 = A0_2
  L5_2 = A0_2.static_text
  L7_2 = {}
  L7_2.font = "<system/bold>"
  L7_2.title = "Getting Started"
  L5_2 = L5_2(L6_2, L7_2)
  L7_2 = A0_2
  L6_2 = A0_2.spacer
  L8_2 = {}
  L8_2.height = 10
  L6_2 = L6_2(L7_2, L8_2)
  L8_2 = A0_2
  L7_2 = A0_2.static_text
  L9_2 = {}
  L9_2.title = "Learn more about film scanning best practices and how to use Negative Lab Pro in the official guide"
  L9_2.height_in_lines = 3
  L9_2.width_in_chars = 50
  L7_2 = L7_2(L8_2, L9_2)
  L9_2 = A0_2
  L8_2 = A0_2.push_button
  L10_2 = {}
  L10_2.font = "<system/small/bold>"
  L10_2.title = "OPEN GUIDE to Negative Lab Pro"
  function L11_2()
    local L0_3, L1_3
    L0_3 = L4_1
    L0_3 = L0_3.openUrlInBrowser
    L1_3 = "https://www.negativelabpro.com/guide"
    L0_3(L1_3)
  end
  L10_2.action = L11_2
  L11_2 = L8_1
  L12_2 = 0
  L13_2 = 0
  L14_2 = 1
  L11_2 = L11_2(L12_2, L13_2, L14_2)
  L10_2.text_color = L11_2
  L8_2 = L8_2(L9_2, L10_2)
  L10_2 = A0_2
  L9_2 = A0_2.spacer
  L11_2 = {}
  L11_2.height = 10
  L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L9_2(L10_2, L11_2)
  L4_2[1] = L5_2
  L4_2[2] = L6_2
  L4_2[3] = L7_2
  L4_2[4] = L8_2
  L4_2[5] = L9_2
  L4_2[6] = L10_2
  L4_2[7] = L11_2
  L4_2[8] = L12_2
  L4_2[9] = L13_2
  L4_2[10] = L14_2
  L4_2[11] = L15_2
  L4_2[12] = L16_2
  L4_2[13] = L17_2
  L4_2[14] = L18_2
  L4_2[15] = L19_2
  L4_2[16] = L20_2
  L4_2[17] = L21_2
  L4_2[18] = L22_2
  L4_2[19] = L23_2
  L4_2[20] = L24_2
  L4_2[21] = L25_2
  L4_2[22] = L26_2
  L4_2[23] = L27_2
  L4_2[24] = L28_2
  L4_2[25] = L29_2
  L2_2 = L2_2(L3_2, L4_2)
  L4_2 = A0_2
  L3_2 = A0_2.column
  L5_2 = {}
  L5_2.bind_to_object = A1_2
  L5_2.place = "overlapping"
  L5_2.margin = 3
  L7_2 = A0_2
  L6_2 = A0_2.view
  L8_2 = {}
  L9_2 = L5_1
  L9_2 = L9_2.keyEquals
  L10_2 = "isActivated"
  L11_2 = true
  L9_2 = L9_2(L10_2, L11_2)
  L8_2.visible = L9_2
  L10_2 = A0_2
  L9_2 = A0_2.row
  L11_2 = {}
  L11_2.margin_bottom = 15
  L13_2 = A0_2
  L12_2 = A0_2.static_text
  L14_2 = {}
  L14_2.font = "<system/bold>"
  L14_2.title = "You're AMAZING! Thanks for supporting Negative Lab Pro!"
  L14_2.alignment = "left"
  L14_2.fill_horizontal = 1
  L15_2 = L8_1
  L16_2 = 0
  L17_2 = 0.5
  L18_2 = 0
  L15_2 = L15_2(L16_2, L17_2, L18_2)
  L14_2.text_color = L15_2
  L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L12_2(L13_2, L14_2)
  L11_2[1] = L12_2
  L11_2[2] = L13_2
  L11_2[3] = L14_2
  L11_2[4] = L15_2
  L11_2[5] = L16_2
  L11_2[6] = L17_2
  L11_2[7] = L18_2
  L11_2[8] = L19_2
  L11_2[9] = L20_2
  L11_2[10] = L21_2
  L11_2[11] = L22_2
  L11_2[12] = L23_2
  L11_2[13] = L24_2
  L11_2[14] = L25_2
  L11_2[15] = L26_2
  L11_2[16] = L27_2
  L11_2[17] = L28_2
  L11_2[18] = L29_2
  L9_2 = L9_2(L10_2, L11_2)
  L11_2 = A0_2
  L10_2 = A0_2.row
  L12_2 = {}
  L14_2 = A0_2
  L13_2 = A0_2.label_spacing
  L13_2 = L13_2(L14_2)
  L12_2.spacing = L13_2
  L14_2 = A0_2
  L13_2 = A0_2.static_text
  L15_2 = {}
  L15_2.title = "V3 License Key: "
  L15_2.alignment = "right"
  L16_2 = L3_1
  L16_2 = L16_2.share
  L17_2 = "label_width"
  L16_2 = L16_2(L17_2)
  L15_2.width = L16_2
  L13_2 = L13_2(L14_2, L15_2)
  L15_2 = A0_2
  L14_2 = A0_2.static_text
  L16_2 = {}
  L17_2 = L3_1
  L17_2 = L17_2.bind
  L18_2 = "licenseKey"
  L17_2 = L17_2(L18_2)
  L16_2.title = L17_2
  L16_2.width_in_chars = 100
  L16_2.selectable = true
  L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L14_2(L15_2, L16_2)
  L12_2[1] = L13_2
  L12_2[2] = L14_2
  L12_2[3] = L15_2
  L12_2[4] = L16_2
  L12_2[5] = L17_2
  L12_2[6] = L18_2
  L12_2[7] = L19_2
  L12_2[8] = L20_2
  L12_2[9] = L21_2
  L12_2[10] = L22_2
  L12_2[11] = L23_2
  L12_2[12] = L24_2
  L12_2[13] = L25_2
  L12_2[14] = L26_2
  L12_2[15] = L27_2
  L12_2[16] = L28_2
  L12_2[17] = L29_2
  L10_2 = L10_2(L11_2, L12_2)
  L12_2 = A0_2
  L11_2 = A0_2.row
  L13_2 = {}
  L15_2 = A0_2
  L14_2 = A0_2.label_spacing
  L14_2 = L14_2(L15_2)
  L13_2.spacing = L14_2
  L15_2 = A0_2
  L14_2 = A0_2.static_text
  L16_2 = {}
  L16_2.title = "Registered to: "
  L16_2.alignment = "right"
  L17_2 = L3_1
  L17_2 = L17_2.share
  L18_2 = "label_width"
  L17_2 = L17_2(L18_2)
  L16_2.width = L17_2
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L18_2 = L3_1
  L18_2 = L18_2.bind
  L19_2 = "email"
  L18_2 = L18_2(L19_2)
  L17_2.title = L18_2
  L17_2.width_in_chars = 100
  L17_2.selectable = true
  L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L15_2(L16_2, L17_2)
  L13_2[1] = L14_2
  L13_2[2] = L15_2
  L13_2[3] = L16_2
  L13_2[4] = L17_2
  L13_2[5] = L18_2
  L13_2[6] = L19_2
  L13_2[7] = L20_2
  L13_2[8] = L21_2
  L13_2[9] = L22_2
  L13_2[10] = L23_2
  L13_2[11] = L24_2
  L13_2[12] = L25_2
  L13_2[13] = L26_2
  L13_2[14] = L27_2
  L13_2[15] = L28_2
  L13_2[16] = L29_2
  L11_2 = L11_2(L12_2, L13_2)
  L13_2 = A0_2
  L12_2 = A0_2.spacer
  L14_2 = {}
  L14_2.height = 10
  L12_2 = L12_2(L13_2, L14_2)
  L14_2 = A0_2
  L13_2 = A0_2.row
  L15_2 = {}
  L17_2 = A0_2
  L16_2 = A0_2.push_button
  L18_2 = {}
  L18_2.width = 150
  L18_2.title = "Deactivate This Device"
  L18_2.enabled = true
  function L19_2()
    local L0_3, L1_3
    L0_3 = deactivate
    L1_3 = A1_2
    L0_3(L1_3)
  end
  L18_2.action = L19_2
  L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L16_2(L17_2, L18_2)
  L15_2[1] = L16_2
  L15_2[2] = L17_2
  L15_2[3] = L18_2
  L15_2[4] = L19_2
  L15_2[5] = L20_2
  L15_2[6] = L21_2
  L15_2[7] = L22_2
  L15_2[8] = L23_2
  L15_2[9] = L24_2
  L15_2[10] = L25_2
  L15_2[11] = L26_2
  L15_2[12] = L27_2
  L15_2[13] = L28_2
  L15_2[14] = L29_2
  L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L13_2(L14_2, L15_2)
  L8_2[1] = L9_2
  L8_2[2] = L10_2
  L8_2[3] = L11_2
  L8_2[4] = L12_2
  L8_2[5] = L13_2
  L8_2[6] = L14_2
  L8_2[7] = L15_2
  L8_2[8] = L16_2
  L8_2[9] = L17_2
  L8_2[10] = L18_2
  L8_2[11] = L19_2
  L8_2[12] = L20_2
  L8_2[13] = L21_2
  L8_2[14] = L22_2
  L8_2[15] = L23_2
  L8_2[16] = L24_2
  L8_2[17] = L25_2
  L8_2[18] = L26_2
  L8_2[19] = L27_2
  L8_2[20] = L28_2
  L8_2[21] = L29_2
  L6_2 = L6_2(L7_2, L8_2)
  L8_2 = A0_2
  L7_2 = A0_2.view
  L9_2 = {}
  L10_2 = L5_1
  L10_2 = L10_2.keyIsNot
  L11_2 = "isActivated"
  L12_2 = true
  L10_2 = L10_2(L11_2, L12_2)
  L9_2.visible = L10_2
  L11_2 = A0_2
  L10_2 = A0_2.static_text
  L12_2 = {}
  L12_2.font = "<system/bold>"
  L12_2.title = "Unlock the Full Version"
  L12_2.alignment = "left"
  L10_2 = L10_2(L11_2, L12_2)
  L12_2 = A0_2
  L11_2 = A0_2.spacer
  L13_2 = {}
  L13_2.height = 10
  L11_2 = L11_2(L12_2, L13_2)
  L13_2 = A0_2
  L12_2 = A0_2.static_text
  L14_2 = {}
  L14_2.title = [[
You are currently in TRIAL MODE, which allows you to preview your edits
and apply on to up to 12 negatives. To unlock, you must purchase a license key.]]
  L14_2.height_in_lines = 3
  L14_2.width_in_chars = 50
  L12_2 = L12_2(L13_2, L14_2)
  L14_2 = A0_2
  L13_2 = A0_2.push_button
  L15_2 = {}
  L15_2.title = "Purchase a License"
  L15_2.font = "<system/small/bold>"
  function L16_2()
    local L0_3, L1_3
    L0_3 = L4_1
    L0_3 = L0_3.openUrlInBrowser
    L1_3 = "https://www.negativelabpro.com/pricing"
    L0_3(L1_3)
  end
  L15_2.action = L16_2
  L16_2 = L8_1
  L17_2 = 0
  L18_2 = 0
  L19_2 = 1
  L16_2 = L16_2(L17_2, L18_2, L19_2)
  L15_2.text_color = L16_2
  L13_2 = L13_2(L14_2, L15_2)
  L15_2 = A0_2
  L14_2 = A0_2.spacer
  L16_2 = {}
  L16_2.height = 20
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L17_2.font = "<system/bold>"
  L17_2.title = "Activate License Key:"
  L17_2.alignment = "left"
  L15_2 = L15_2(L16_2, L17_2)
  L17_2 = A0_2
  L16_2 = A0_2.static_text
  L18_2 = {}
  L18_2.wraps = true
  L18_2.width_in_chars = 50
  L18_2.height_in_lines = 4
  L18_2.title = "After purchase, your license can be found in your email with the subject line 'You Got Negative Lab Pro!' Copy and paste the license key directly from the email, then hit ACTIVATE LICENCE (the button will only become enabled once you've entered the full license.)"
  L19_2 = L8_1
  L20_2 = 0.5
  L21_2 = 0.5
  L22_2 = 0.5
  L19_2 = L19_2(L20_2, L21_2, L22_2)
  L18_2.text_color = L19_2
  L16_2 = L16_2(L17_2, L18_2)
  L18_2 = A0_2
  L17_2 = A0_2.spacer
  L19_2 = {}
  L19_2.height = 5
  L17_2 = L17_2(L18_2, L19_2)
  L19_2 = A0_2
  L18_2 = A0_2.row
  L20_2 = {}
  L22_2 = A0_2
  L21_2 = A0_2.picture
  L23_2 = {}
  L24_2 = L2_1
  L24_2 = L24_2.child
  L25_2 = _PLUGIN
  L25_2 = L25_2.path
  L26_2 = "img/key.png"
  L24_2 = L24_2(L25_2, L26_2)
  L23_2.value = L24_2
  L23_2.height = 22
  L23_2.width = 22
  L21_2 = L21_2(L22_2, L23_2)
  L23_2 = A0_2
  L22_2 = A0_2.edit_field
  L24_2 = {}
  L24_2.font = "<system>"
  L24_2.width_in_chars = 30
  L24_2.height_in_lines = 3
  L25_2 = L3_1
  L25_2 = L25_2.bind
  L26_2 = "serial"
  L25_2 = L25_2(L26_2)
  L24_2.value = L25_2
  L24_2.immediate = true
  function L25_2(A0_3, A1_3)
    local L2_3, L3_3, L4_3
    L2_3 = L1_1
    L2_3 = L2_3.trimWhitespace
    L3_3 = A1_3
    L2_3 = L2_3(L3_3)
    A1_3 = L2_3
    L2_3 = string
    L2_3 = L2_3.match
    L3_3 = A1_3
    L4_3 = "%w%w%w%w%w%w%w%w%-%w%w%w%w%-%w%w%w%w%-%w%w%w%w%-%w%w%w%w%w%w%w%w%w%w%w%w"
    L2_3 = L2_3(L3_3, L4_3)
    if L2_3 then
      L2_3 = #A1_3
      if L2_3 == 36 then
        L2_3 = A1_2
        L2_3.enableActivation = true
        L2_3 = true
        L3_3 = A1_3
        L4_3 = "This string matches!"
        return L2_3, L3_3, L4_3
    end
    else
      L2_3 = A1_2
      L2_3.enableActivation = false
      L2_3 = false
      L3_3 = A1_3
      return L2_3, L3_3
    end
  end
  L24_2.validate = L25_2
  L22_2 = L22_2(L23_2, L24_2)
  L24_2 = A0_2
  L23_2 = A0_2.push_button
  L25_2 = {}
  L25_2.font = "<system/bold>"
  L25_2.title = "ACTIVATE"
  L26_2 = L5_1
  L26_2 = L26_2.keyEquals
  L27_2 = "enableActivation"
  L28_2 = true
  L26_2 = L26_2(L27_2, L28_2)
  L25_2.enabled = L26_2
  function L26_2()
    local L0_3, L1_3
    L0_3 = A1_2
    L0_3.enableActivation = false
    L0_3 = L25_1
    L1_3 = A1_2
    L0_3(L1_3)
  end
  L25_2.action = L26_2
  L26_2 = L8_1
  L27_2 = 0
  L28_2 = 0
  L29_2 = 1
  L26_2 = L26_2(L27_2, L28_2, L29_2)
  L25_2.text_color = L26_2
  L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L23_2(L24_2, L25_2)
  L20_2[1] = L21_2
  L20_2[2] = L22_2
  L20_2[3] = L23_2
  L20_2[4] = L24_2
  L20_2[5] = L25_2
  L20_2[6] = L26_2
  L20_2[7] = L27_2
  L20_2[8] = L28_2
  L20_2[9] = L29_2
  L18_2 = L18_2(L19_2, L20_2)
  L20_2 = A0_2
  L19_2 = A0_2.spacer
  L21_2 = {}
  L21_2.height = 8
  L19_2 = L19_2(L20_2, L21_2)
  L21_2 = A0_2
  L20_2 = A0_2.spacer
  L22_2 = {}
  L22_2.height = 10
  L20_2 = L20_2(L21_2, L22_2)
  L22_2 = A0_2
  L21_2 = A0_2.static_text
  L23_2 = {}
  L24_2 = L3_1
  L24_2 = L24_2.bind
  L25_2 = "activationError"
  L24_2 = L24_2(L25_2)
  L23_2.title = L24_2
  L23_2.alignment = "left"
  L23_2.fill_horizontal = 1
  L24_2 = L8_1
  L25_2 = "red"
  L24_2 = L24_2(L25_2)
  L23_2.text_color = L24_2
  L23_2.height_in_lines = 2
  L23_2.width_in_chars = 50
  L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L21_2(L22_2, L23_2)
  L9_2[1] = L10_2
  L9_2[2] = L11_2
  L9_2[3] = L12_2
  L9_2[4] = L13_2
  L9_2[5] = L14_2
  L9_2[6] = L15_2
  L9_2[7] = L16_2
  L9_2[8] = L17_2
  L9_2[9] = L18_2
  L9_2[10] = L19_2
  L9_2[11] = L20_2
  L9_2[12] = L21_2
  L9_2[13] = L22_2
  L9_2[14] = L23_2
  L9_2[15] = L24_2
  L9_2[16] = L25_2
  L9_2[17] = L26_2
  L9_2[18] = L27_2
  L9_2[19] = L28_2
  L9_2[20] = L29_2
  L7_2, L8_2, L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L7_2(L8_2, L9_2)
  L5_2[1] = L6_2
  L5_2[2] = L7_2
  L5_2[3] = L8_2
  L5_2[4] = L9_2
  L5_2[5] = L10_2
  L5_2[6] = L11_2
  L5_2[7] = L12_2
  L5_2[8] = L13_2
  L5_2[9] = L14_2
  L5_2[10] = L15_2
  L5_2[11] = L16_2
  L5_2[12] = L17_2
  L5_2[13] = L18_2
  L5_2[14] = L19_2
  L5_2[15] = L20_2
  L5_2[16] = L21_2
  L5_2[17] = L22_2
  L5_2[18] = L23_2
  L5_2[19] = L24_2
  L5_2[20] = L25_2
  L5_2[21] = L26_2
  L5_2[22] = L27_2
  L5_2[23] = L28_2
  L5_2[24] = L29_2
  L3_2 = L3_2(L4_2, L5_2)
  L5_2 = A0_2
  L4_2 = A0_2.column
  L6_2 = {}
  L6_2.bind_to_object = A1_2
  L6_2.margin = 3
  L8_2 = A0_2
  L7_2 = A0_2.view
  L9_2 = {}
  L10_2 = L5_1
  L10_2 = L10_2.keyEquals
  L11_2 = "isActivated"
  L12_2 = true
  L10_2 = L10_2(L11_2, L12_2)
  L9_2.visible = L10_2
  L11_2 = A0_2
  L10_2 = A0_2.row
  L12_2 = {}
  L12_2.margin_bottom = 15
  L14_2 = A0_2
  L13_2 = A0_2.static_text
  L15_2 = {}
  L15_2.font = "<system/bold>"
  L15_2.title = "You're AMAZING! Thanks for supporting Negative Lab Pro!"
  L15_2.alignment = "left"
  L15_2.fill_horizontal = 1
  L16_2 = L8_1
  L17_2 = 0
  L18_2 = 0.5
  L19_2 = 0
  L16_2 = L16_2(L17_2, L18_2, L19_2)
  L15_2.text_color = L16_2
  L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L13_2(L14_2, L15_2)
  L12_2[1] = L13_2
  L12_2[2] = L14_2
  L12_2[3] = L15_2
  L12_2[4] = L16_2
  L12_2[5] = L17_2
  L12_2[6] = L18_2
  L12_2[7] = L19_2
  L12_2[8] = L20_2
  L12_2[9] = L21_2
  L12_2[10] = L22_2
  L12_2[11] = L23_2
  L12_2[12] = L24_2
  L12_2[13] = L25_2
  L12_2[14] = L26_2
  L12_2[15] = L27_2
  L12_2[16] = L28_2
  L12_2[17] = L29_2
  L10_2 = L10_2(L11_2, L12_2)
  L12_2 = A0_2
  L11_2 = A0_2.row
  L13_2 = {}
  L15_2 = A0_2
  L14_2 = A0_2.label_spacing
  L14_2 = L14_2(L15_2)
  L13_2.spacing = L14_2
  L15_2 = A0_2
  L14_2 = A0_2.static_text
  L16_2 = {}
  L16_2.title = "V3 License Key: "
  L16_2.alignment = "right"
  L17_2 = L3_1
  L17_2 = L17_2.share
  L18_2 = "label_width"
  L17_2 = L17_2(L18_2)
  L16_2.width = L17_2
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L18_2 = L3_1
  L18_2 = L18_2.bind
  L19_2 = "licenseKey"
  L18_2 = L18_2(L19_2)
  L17_2.title = L18_2
  L17_2.width_in_chars = 100
  L17_2.selectable = true
  L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L15_2(L16_2, L17_2)
  L13_2[1] = L14_2
  L13_2[2] = L15_2
  L13_2[3] = L16_2
  L13_2[4] = L17_2
  L13_2[5] = L18_2
  L13_2[6] = L19_2
  L13_2[7] = L20_2
  L13_2[8] = L21_2
  L13_2[9] = L22_2
  L13_2[10] = L23_2
  L13_2[11] = L24_2
  L13_2[12] = L25_2
  L13_2[13] = L26_2
  L13_2[14] = L27_2
  L13_2[15] = L28_2
  L13_2[16] = L29_2
  L11_2 = L11_2(L12_2, L13_2)
  L13_2 = A0_2
  L12_2 = A0_2.row
  L14_2 = {}
  L16_2 = A0_2
  L15_2 = A0_2.label_spacing
  L15_2 = L15_2(L16_2)
  L14_2.spacing = L15_2
  L16_2 = A0_2
  L15_2 = A0_2.static_text
  L17_2 = {}
  L17_2.title = "Registered to: "
  L17_2.alignment = "right"
  L18_2 = L3_1
  L18_2 = L18_2.share
  L19_2 = "label_width"
  L18_2 = L18_2(L19_2)
  L17_2.width = L18_2
  L15_2 = L15_2(L16_2, L17_2)
  L17_2 = A0_2
  L16_2 = A0_2.static_text
  L18_2 = {}
  L19_2 = L3_1
  L19_2 = L19_2.bind
  L20_2 = "email"
  L19_2 = L19_2(L20_2)
  L18_2.title = L19_2
  L18_2.width_in_chars = 100
  L18_2.selectable = true
  L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L16_2(L17_2, L18_2)
  L14_2[1] = L15_2
  L14_2[2] = L16_2
  L14_2[3] = L17_2
  L14_2[4] = L18_2
  L14_2[5] = L19_2
  L14_2[6] = L20_2
  L14_2[7] = L21_2
  L14_2[8] = L22_2
  L14_2[9] = L23_2
  L14_2[10] = L24_2
  L14_2[11] = L25_2
  L14_2[12] = L26_2
  L14_2[13] = L27_2
  L14_2[14] = L28_2
  L14_2[15] = L29_2
  L12_2 = L12_2(L13_2, L14_2)
  L14_2 = A0_2
  L13_2 = A0_2.spacer
  L15_2 = {}
  L15_2.height = 10
  L13_2 = L13_2(L14_2, L15_2)
  L15_2 = A0_2
  L14_2 = A0_2.row
  L16_2 = {}
  L18_2 = A0_2
  L17_2 = A0_2.push_button
  L19_2 = {}
  L19_2.width = 150
  L19_2.title = "Deactivate This Device"
  L19_2.enabled = true
  function L20_2()
    local L0_3, L1_3
    L0_3 = deactivate
    L1_3 = A1_2
    L0_3(L1_3)
  end
  L19_2.action = L20_2
  L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L17_2(L18_2, L19_2)
  L16_2[1] = L17_2
  L16_2[2] = L18_2
  L16_2[3] = L19_2
  L16_2[4] = L20_2
  L16_2[5] = L21_2
  L16_2[6] = L22_2
  L16_2[7] = L23_2
  L16_2[8] = L24_2
  L16_2[9] = L25_2
  L16_2[10] = L26_2
  L16_2[11] = L27_2
  L16_2[12] = L28_2
  L16_2[13] = L29_2
  L14_2 = L14_2(L15_2, L16_2)
  L16_2 = A0_2
  L15_2 = A0_2.spacer
  L17_2 = {}
  L17_2.height = 10
  L15_2 = L15_2(L16_2, L17_2)
  L17_2 = A0_2
  L16_2 = A0_2.static_text
  L18_2 = {}
  L19_2 = L3_1
  L19_2 = L19_2.bind
  L20_2 = "activationError"
  L19_2 = L19_2(L20_2)
  L18_2.title = L19_2
  L18_2.alignment = "left"
  L18_2.fill_horizontal = 1
  L19_2 = L8_1
  L20_2 = "red"
  L19_2 = L19_2(L20_2)
  L18_2.text_color = L19_2
  L18_2.height_in_lines = 2
  L18_2.width_in_chars = 50
  L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L16_2(L17_2, L18_2)
  L9_2[1] = L10_2
  L9_2[2] = L11_2
  L9_2[3] = L12_2
  L9_2[4] = L13_2
  L9_2[5] = L14_2
  L9_2[6] = L15_2
  L9_2[7] = L16_2
  L9_2[8] = L17_2
  L9_2[9] = L18_2
  L9_2[10] = L19_2
  L9_2[11] = L20_2
  L9_2[12] = L21_2
  L9_2[13] = L22_2
  L9_2[14] = L23_2
  L9_2[15] = L24_2
  L9_2[16] = L25_2
  L9_2[17] = L26_2
  L9_2[18] = L27_2
  L9_2[19] = L28_2
  L9_2[20] = L29_2
  L7_2, L8_2, L9_2, L10_2, L11_2, L12_2, L13_2, L14_2, L15_2, L16_2, L17_2, L18_2, L19_2, L20_2, L21_2, L22_2, L23_2, L24_2, L25_2, L26_2, L27_2, L28_2, L29_2 = L7_2(L8_2, L9_2)
  L6_2[1] = L7_2
  L6_2[2] = L8_2
  L6_2[3] = L9_2
  L6_2[4] = L10_2
  L6_2[5] = L11_2
  L6_2[6] = L12_2
  L6_2[7] = L13_2
  L6_2[8] = L14_2
  L6_2[9] = L15_2
  L6_2[10] = L16_2
  L6_2[11] = L17_2
  L6_2[12] = L18_2
  L6_2[13] = L19_2
  L6_2[14] = L20_2
  L6_2[15] = L21_2
  L6_2[16] = L22_2
  L6_2[17] = L23_2
  L6_2[18] = L24_2
  L6_2[19] = L25_2
  L6_2[20] = L26_2
  L6_2[21] = L27_2
  L6_2[22] = L28_2
  L6_2[23] = L29_2
  L4_2 = L4_2(L5_2, L6_2)
  L5_2 = A1_2.isActivated
  if L5_2 == true then
    L5_2 = {}
    L6_2 = {}
    L6_2.title = "Negative Lab Pro v3"
    L7_2 = L2_2
    L8_2 = L4_2
    L6_2[1] = L7_2
    L6_2[2] = L8_2
    L5_2[1] = L6_2
    return L5_2
  else
    L5_2 = {}
    L6_2 = {}
    L6_2.title = "Negative Lab Pro v3"
    L7_2 = L2_2
    L8_2 = L3_2
    L6_2[1] = L7_2
    L6_2[2] = L8_2
    L5_2[1] = L6_2
    return L5_2
  end
end
L26_1.sectionsForTopOfDialog = L27_1
Avatar du membre
LaDidi21
Modérateur
Modérateur
Messages : 13243
Enregistré le : il y a 15 ans

Message par LaDidi21 »

@tot421 :
Je n'ai pas compris ce que tu avais "décrypté"...
Authenticator.lua.V2 == Authenticator.lua.V3 => R.A.F.
PluginManager.lua.V2 != PluginManager.lua.V3, c'est donc lui que tu dois modifier. Tu dois réintégrer les même modifs en les adaptant.

-> Décryptage des liens du forum : extension "ThiWeb Crypt / Decrypt"™ ou Thiweb Live <-

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 17 invités