[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: hemulgm\nopen_collective: hemulgm\n"
  },
  {
    "path": ".gitignore",
    "content": "# Uncomment these types if you want even more clean repository. But be careful.\n# It can make harm to an existing project source. Read explanations below.\n#\n# Resource files are binaries containing manifest, project icon and version info.\n# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.\n#*.res\n#\n# Type library file (binary). In old Delphi versions it should be stored.\n# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.\n#*.tlb\n#\n# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.\n# Uncomment this if you are not using diagrams or use newer Delphi version.\n#*.ddp\n#\n# Visual LiveBindings file. Added in Delphi XE2.\n# Uncomment this if you are not using LiveBindings Designer.\n#*.vlb\n#\n# Deployment Manager configuration file for your project. Added in Delphi XE2.\n# Uncomment this if it is not mobile development and you do not use remote debug feature.\n#*.deployproj\n#\n# C++ object files produced when C/C++ Output file generation is configured.\n# Uncomment this if you are not using external objects (zlib library for example).\n#*.obj\n#\n\n# Delphi compiler-generated binaries (safe to delete)\n*.exe\n*.dll\n*.bpl\n*.bpi\n*.dcp\n*.so\n*.apk\n*.drc\n*.map\n*.dres\n*.rsm\n*.tds\n*.dcu\n*.lib\n*.a\n*.o\n*.ocx\n\n# Delphi autogenerated files (duplicated info)\n*.cfg\n*.hpp\n*Resource.rc\n\n# Delphi local files (user-specific info)\n*.local\n*.identcache\n*.projdata\n*.tvsconfig\n*.dsk\n\n# Delphi history and backups\n__history/\n__recovery/\nWin32/\nWin64/\nAndroid/\nAndroid64/\n*.~*\n\n# Castalia statistics file (since XE7 Castalia is distributed with Delphi)\n*.stat\n\n# Boss dependency manager vendor folder https://github.com/HashLoad/boss\nmodules/\nMY_TOKEN.txt\n/Linux64/Release/ChatGPT\n/FMX.Memo.Style.1.pas\n/Linux64/Release/ChatGPT_Linux64.zip\n/Linux64/Debug/ChatGPT\n/MacOS/ChatGPT_MacOSarm64.zip\n/MacOS/ChatGPT_MacOSi64.zip\n/iOSDevice64/*\n/Keys/*\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"DelphiOpenAI\"]\n\tpath = DelphiOpenAI\n\turl = https://github.com/HemulGM/DelphiOpenAI\n[submodule \"WindowDarkMode\"]\n\tpath = WindowDarkMode\n\turl = https://github.com/HemulGM/WindowDarkMode\n[submodule \"OWM_API\"]\n\tpath = OWM_API\n\turl = https://github.com/HemulGM/OWM_API\n[submodule \"TProcessDelphi\"]\n\tpath = TProcessDelphi\n\turl = https://github.com/HemulGM/TProcessDelphi\n[submodule \"FMXRichMemo\"]\n\tpath = FMXRichMemo\n\turl = https://github.com/HemulGM/FMXRichMemo\n"
  },
  {
    "path": "AndroidManifest.template.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- BEGIN_INCLUDE(manifest) -->\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"%package%\"\n    android:versionCode=\"%versionCode%\"\n    android:versionName=\"%versionName%\"\n    android:installLocation=\"%installLocation%\">\n    <uses-sdk android:minSdkVersion=\"%minSdkVersion%\" android:targetSdkVersion=\"33\" />\n<%uses-permission%>\n    <uses-feature android:glEsVersion=\"0x00020000\" android:required=\"true\"/>\n    <queries>\n<%queries-child-elements%>\n    </queries>\n    <application\n        android:persistent=\"%persistent%\"\n        android:restoreAnyVersion=\"%restoreAnyVersion%\"\n        android:label=\"%label%\"\n        android:debuggable=\"%debuggable%\"\n        android:largeHeap=\"%largeHeap%\"\n        android:icon=\"%icon%\"\n        android:theme=\"%theme%\"\n        android:hardwareAccelerated=\"%hardwareAccelerated%\"\n        android:resizeableActivity=\"false\"\n        android:requestLegacyExternalStorage=\"true\">\n<%provider%>\n<%application-meta-data%>\n<%uses-libraries%>\n<%services%>\n        <!-- Our activity is a subclass of the built-in NativeActivity framework class.\n             This will take care of integrating with our NDK code. -->\n        <activity\n            android:name=\"com.embarcadero.firemonkey.FMXNativeActivity\"\n            android:exported=\"true\"\n            android:label=\"%activityLabel%\"\n            android:configChanges=\"orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode\"\n            android:launchMode=\"singleTask\">\n            <!-- Tell NativeActivity the name of our .so -->\n            <meta-data android:name=\"android.app.lib_name\" android:value=\"%libNameValue%\" />\n\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n<%activity%>\n<%receivers%>\n    </application>\n</manifest>\n<!-- END_INCLUDE(manifest) -->\n"
  },
  {
    "path": "ChatGPT.About.fmx",
    "content": "inherited FrameAbout: TFrameAbout\n  Size.Width = 944.000000000000000000\n  Size.Height = 703.000000000000000000\n  OnResize = FrameResize\n  OnResized = FrameResize\n  inherited RectangleBG: TRectangle\n    Size.Width = 944.000000000000000000\n    Size.Height = 703.000000000000000000\n    OnClick = ButtonOkClick\n  end\n  object LayoutClient: TLayout\n    Align = Center\n    Padding.Left = 20.000000000000000000\n    Padding.Top = 20.000000000000000000\n    Padding.Right = 20.000000000000000000\n    Padding.Bottom = 20.000000000000000000\n    Size.Width = 635.000000000000000000\n    Size.Height = 641.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleFrame: TRectangle\n      Align = Contents\n      Fill.Color = xFF202123\n      Locked = True\n      Size.Width = 635.000000000000000000\n      Size.Height = 641.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n    end\n    object VertScrollBoxContent: TVertScrollBox\n      Align = Client\n      Padding.Right = 10.000000000000000000\n      Padding.Bottom = 10.000000000000000000\n      Size.Width = 595.000000000000000000\n      Size.Height = 555.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      Viewport.Width = 579.000000000000000000\n      Viewport.Height = 555.000000000000000000\n      object Label1: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = []\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 10.000000000000000000\n        Position.Y = 10.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 27.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Size = 20.000000000000000000\n        TextSettings.Font.StyleExt = {00070000000000000004000000}\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'About'\n        TabOrder = 10\n      end\n      object Label5: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 57.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 38.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = \n          'The ChatGPT client is an amazing open source cross-platform appl' +\n          'ication that allows you to play with the OpenAI ChatGPT API for ' +\n          'free!'\n        TabOrder = 8\n        TabStop = False\n      end\n      object LabelAppearance: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = []\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 220.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 24.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.Font.StyleExt = {00070000000000000004000000}\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Support'\n        TabOrder = 2\n        TabStop = False\n      end\n      object LabelVersion: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 780.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 19.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'HemulGM'\n        TabOrder = 9\n        TabStop = False\n      end\n      object Label34: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 110.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 19.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Check out the source code on GitHub and give it a '#11088'!'\n        TabOrder = 4\n        TabStop = False\n      end\n      object Label2: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 259.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 149.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = \n          'At ChatGPT, we strive to bring you useful and amazing features e' +\n          'very time. And just like any other project, your support and mot' +\n          'ivation will help us move forward!'#13#10#13#10'If you liked our applicati' +\n          'on, we ask you to give this project a '#11088#65039'. Your approval means a ' +\n          'lot to us and encourages us to work harder to deliver the best p' +\n          'ossible experience.'#13#10#13#10'Thank you for being a part of our communi' +\n          'ty and we look forward to serving you better in the future.'\n        TabOrder = 7\n        TabStop = False\n      end\n      object Label3: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = []\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 499.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 24.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.Font.StyleExt = {00070000000000000004000000}\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Privacy Statement'\n        TabOrder = 1\n        TabStop = False\n      end\n      object Label4: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 538.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 168.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = \n          'We value your privacy and are committed to protecting the privac' +\n          'y of our users. We do not collect or store the text you enter or' +\n          ' receive from the OpenAI server in any form on third party serve' +\n          'rs. All history is stored only on your computer and nowhere else' +\n          '. Our source code is available for review to verify this claim.'#13 +\n          #10#13#10'We prioritize the security of your API key and handle it with' +\n          ' the utmost care. If you use your own API key, your key is store' +\n          'd solely on your computer and is never shared with any third par' +\n          'ty. It is used solely for its intended purpose to access the Ope' +\n          'nAI API and not for any other unauthorized use.'\n        TabOrder = 3\n        TabStop = False\n      end\n      object Label6: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = []\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 741.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 24.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Segoe UI Emoji'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.Font.StyleExt = {00070000000000000004000000}\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Autor'\n        TabOrder = 0\n        TabStop = False\n      end\n      object Layout4: TLayout\n        Align = Top\n        Margins.Top = 10.000000000000000000\n        Position.Y = 144.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 6\n        TabStop = False\n        object ButtonGitHub: TButton\n          OnTap = ButtonGitHubTap\n          Align = Left\n          ImageIndex = 9\n          Size.Width = 289.000000000000000000\n          Size.Height = 46.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 0\n          Text = 'Open GitHub page'\n          TextSettings.HorzAlign = Leading\n          ParentShowHint = False\n          ShowHint = True\n          OnClick = ButtonGitHubClick\n        end\n      end\n      object Layout1: TLayout\n        Align = Top\n        Margins.Top = 10.000000000000000000\n        Position.Y = 423.000000000000000000\n        Size.Width = 569.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 5\n        TabStop = False\n        object ButtonReport: TButton\n          OnTap = ButtonReportTap\n          Align = Left\n          ImageIndex = 9\n          Size.Width = 289.000000000000000000\n          Size.Height = 46.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 0\n          Text = 'Report a problem'\n          TextSettings.HorzAlign = Leading\n          ParentShowHint = False\n          ShowHint = True\n          OnClick = ButtonReportClick\n        end\n      end\n    end\n    object Layout2: TLayout\n      Align = Bottom\n      Position.X = 20.000000000000000000\n      Position.Y = 575.000000000000000000\n      Size.Width = 595.000000000000000000\n      Size.Height = 46.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 3\n      object ButtonOk: TButton\n        Align = Right\n        Cancel = True\n        Position.X = 515.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 2\n        Text = 'OK'\n        OnClick = ButtonOkClick\n      end\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.About.pas",
    "content": "﻿unit ChatGPT.About;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Overlay, FMX.Objects, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo,\n  FMX.ComboEdit, FMX.Edit, FMX.Controls.Presentation, FMX.Layouts,\n  ChatGPT.Classes;\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\ntype\n  TFrameAbout = class(TFrameOveraly)\n    LayoutClient: TLayout;\n    RectangleFrame: TRectangle;\n    VertScrollBoxContent: TVertScrollBox;\n    Label1: TLabel;\n    Label5: TLabel;\n    LabelAppearance: TLabel;\n    LabelVersion: TLabel;\n    Layout2: TLayout;\n    ButtonOk: TButton;\n    Label34: TLabel;\n    Label2: TLabel;\n    Label3: TLabel;\n    Label4: TLabel;\n    Label6: TLabel;\n    Layout4: TLayout;\n    ButtonGitHub: TButton;\n    Layout1: TLayout;\n    ButtonReport: TButton;\n    procedure ButtonOkClick(Sender: TObject);\n    procedure FrameResize(Sender: TObject);\n    procedure ButtonGitHubClick(Sender: TObject);\n    procedure ButtonReportClick(Sender: TObject);\n    procedure ButtonGitHubTap(Sender: TObject; const Point: TPointF);\n    procedure ButtonReportTap(Sender: TObject; const Point: TPointF);\n  private\n    FProcCallback: TProc<TFrameAbout, Boolean>;\n    FLayoutClientWidth, FLayoutClientHeight: Single;\n  protected\n    procedure SetMode(const Value: TWindowMode); override;\n  public\n    constructor Create(AOwner: TComponent); override;\n    procedure Cancel; override;\n    class procedure Execute(AParent: TControl; ProcSet: TProc<TFrameAbout>; ProcExecuted: TProc<TFrameAbout, Boolean>);\n  end;\n\nvar\n  FrameAbout: TFrameAbout;\n\nimplementation\n\nuses\n  System.Math;\n\n{$R *.fmx}\n\nprocedure TFrameAbout.ButtonGitHubClick(Sender: TObject);\nbegin\n  OpenUrl('https://github.com/HemulGM/ChatGPT');\nend;\n\nprocedure TFrameAbout.ButtonGitHubTap(Sender: TObject; const Point: TPointF);\nbegin\n  ButtonGitHubClick(nil);\nend;\n\nprocedure TFrameAbout.ButtonOkClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameAbout.ButtonReportClick(Sender: TObject);\nbegin\n  OpenUrl('https://github.com/HemulGM/ChatGPT/issues');\nend;\n\nprocedure TFrameAbout.ButtonReportTap(Sender: TObject; const Point: TPointF);\nbegin\n  ButtonReportClick(nil);\nend;\n\nprocedure TFrameAbout.Cancel;\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, True);\n  Release;\nend;\n\nconstructor TFrameAbout.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  FLayoutClientWidth := LayoutClient.Width;\n  FLayoutClientHeight := LayoutClient.Height;\n  VertScrollBoxContent.AniCalculations.Animation := True;\n  //VertScrollBoxContent.AniCalculations.Interval := 1;\n  VertScrollBoxContent.AniCalculations.Averaging := True;\n  VertScrollBoxContent.ViewportPosition := TPoint.Zero;\n  {$IFDEF MOBILE}\n  ButtonReport.OnClick := nil;\n  ButtonGitHub.OnClick := nil;\n  {$ENDIF}\nend;\n\nclass procedure TFrameAbout.Execute(AParent: TControl; ProcSet: TProc<TFrameAbout>; ProcExecuted: TProc<TFrameAbout, Boolean>);\nbegin\n  var Frame := TFrameAbout.Create(AParent);\n  Frame.Parent := AParent;\n  Frame.FProcCallback := ProcExecuted;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.BringToFront;\n  if Assigned(ProcSet) then\n    ProcSet(Frame);\n  Frame.ButtonOk.SetFocus;\nend;\n\nprocedure TFrameAbout.FrameResize(Sender: TObject);\nbegin\n  LayoutClient.Width := Min(FLayoutClientWidth, Width);\n  LayoutClient.Height := Min(FLayoutClientHeight, Height);\nend;\n\nprocedure TFrameAbout.SetMode(const Value: TWindowMode);\nbegin\n  inherited;\n  if Mode = TWindowMode.Compact then\n  begin\n    LayoutClient.Align := TAlignLayout.Client;\n    RectangleFrame.Corners := [];\n  end\n  else\n  begin\n    LayoutClient.Align := TAlignLayout.Center;\n    RectangleFrame.Corners := AllCorners;\n  end;\n  FrameResize(nil);\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Android.pas",
    "content": "﻿unit ChatGPT.Android;\n\n{$IFDEF ANDROID}\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.IOUtils,\n  System.Messaging, FMX.Dialogs;\n\ntype\n  TDialog = class\n  private\n    FProc: TProc<string>;\n    FRequestCode: Integer;\n    procedure ResultCallback(const Sender: TObject; const M: TMessage);\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure Show(const MimeType: string; Proc: TProc<string>);\n  end;\n\nprocedure OpenFileDialog(const MimeType: string; Proc: TProc<string>);\n\nimplementation\n\nuses\n  System.Permissions,Androidapi.Helpers, Androidapi.JNI.Os,\n  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes,\n  Androidapi.JNI.Webkit, Androidapi.JNI.Net, Androidapi.JNI.App,\n  Androidapi.JNI.Support, FMX.Platform.Android;\n\nconstructor TDialog.Create;\nbegin\n  FRequestCode := Random(9999999);\n  TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, ResultCallback);\nend;\n\ndestructor TDialog.Destroy;\nbegin\n  TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, ResultCallback);\nend;\n\nfunction GetRealPathFromURI(Uri: Jnet_Uri): string;\nvar\n  Cursor: JCursor;\n  ColumnIndex: Integer;\nbegin\n  Cursor := TAndroidHelper.Context.getContentResolver.query(Uri, nil, nil, nil, nil);\n  ColumnIndex := Cursor.getColumnIndexOrThrow(StringToJString('_data'));\n  Cursor.moveToFirst;\n  Result := JStringToString(Cursor.getString(ColumnIndex));\n  Cursor.close;\nend;\n\nprocedure TDialog.ResultCallback(const Sender: TObject; const M: TMessage);\nbegin\n  try\n    if TMessageResultNotification(M).RequestCode = FRequestCode then\n      if TMessageResultNotification(M).ResultCode = TJActivity.JavaClass.RESULT_OK then\n      try\n        FProc(GetRealPathFromURI(TMessageResultNotification(M).Value.getData));\n      except\n        on E: Exception do\n          ShowMessage(E.Message);\n      end;\n  finally\n    Free;\n  end;\nend;\n\nprocedure TDialog.Show(const MimeType: string; Proc: TProc<string>);\nbegin\n  FProc := Proc;\n  var Intent: JIntent := TJIntent.Create;\n  Intent.setAction(TJIntent.JavaClass.ACTION_PICK);\n  Intent.setType(StringToJString(MimeType));\n  //Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE, False);\n  MainActivity.startActivityForResult(Intent, FRequestCode);\nend;\n\nprocedure OpenFileDialog(const MimeType: string; Proc: TProc<string>);\nbegin\n  PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE)],\n    procedure(const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray)\n    begin\n      if (Length(AGrantResults) > 0) and (AGrantResults[0] = TPermissionStatus.Granted) then\n        TDialog.Create.Show(MimeType, Proc);\n    end);\nend;\n\n{$ELSE}\n\ninterface\n\nimplementation\n\n{$ENDIF}\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.ChatSettings.fmx",
    "content": "inherited FrameChatSettings: TFrameChatSettings\n  Size.Width = 729.000000000000000000\n  Size.Height = 719.000000000000000000\n  OnResize = FrameResize\n  OnResized = FrameResize\n  inherited RectangleBG: TRectangle\n    Size.Width = 729.000000000000000000\n    Size.Height = 719.000000000000000000\n    OnClick = RectangleBGClick\n  end\n  object LayoutClient: TLayout\n    Align = Center\n    Padding.Left = 10.000000000000000000\n    Padding.Top = 10.000000000000000000\n    Padding.Right = 10.000000000000000000\n    Padding.Bottom = 10.000000000000000000\n    Size.Width = 440.000000000000000000\n    Size.Height = 644.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleFrame: TRectangle\n      Align = Contents\n      Fill.Color = xFF202123\n      Locked = True\n      Size.Width = 440.000000000000000000\n      Size.Height = 644.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n    end\n    object LayoutActs: TLayout\n      Align = Bottom\n      Position.X = 10.000000000000000000\n      Position.Y = 588.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 46.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      TabStop = False\n      object ButtonCancel: TButton\n        Align = Right\n        Cancel = True\n        Position.X = 340.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 0\n        Text = 'CANCEL'\n        ParentShowHint = False\n        ShowHint = True\n        OnClick = ButtonCancelClick\n      end\n      object ButtonOk: TButton\n        Align = Right\n        Position.X = 260.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 1\n        Text = 'OK'\n        OnClick = ButtonOkClick\n      end\n    end\n    object VertScrollBox: TVertScrollBox\n      Align = Client\n      Padding.Right = 10.000000000000000000\n      Padding.Bottom = 10.000000000000000000\n      Margins.Right = -10.000000000000000000\n      Size.Width = 430.000000000000000000\n      Size.Height = 578.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 21\n      Viewport.Width = 414.000000000000000000\n      Viewport.Height = 578.000000000000000000\n      object ComboEditModel: TComboEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'combo_style'\n        TabOrder = 3\n        ItemHeight = 36.000000000000000000\n        Items.Strings = (\n          'gpt-3.5-turbo'\n          'gpt-3.5-turbo-0613'\n          'gpt-3.5-turbo-16k'\n          'gpt-4'\n          'gpt-4-turbo'\n          'gpt-4-0613'\n          'gpt-4-32k')\n        ItemIndex = 0\n        Text = 'gpt-3.5-turbo'\n        Position.Y = 134.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        OnMouseWheel = ComboEditModelMouseWheel\n      end\n      object EditMaxTokens: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 4\n        KeyboardType = DecimalNumberPad\n        FilterChar = '0123456789'\n        Position.Y = 382.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'Example: 4096'\n        object ClearEditButton3: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path2: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object EditQueryMaxToken: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 5\n        KeyboardType = DecimalNumberPad\n        FilterChar = '0123456789'\n        Position.Y = 492.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'Example: 1024'\n        object ClearEditButton4: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path3: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label1: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 10.000000000000000000\n        Position.Y = 10.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 25.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 20.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.HorzAlign = Center\n        TextSettings.WordWrap = False\n        Text = 'Chat Settings'\n        TabOrder = 21\n        TabStop = False\n      end\n      object Label16: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 465.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Query max tokens (default: 1024)'\n        TabOrder = 24\n        TabStop = False\n      end\n      object Label17: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 425.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = 'Limit of the selected model'\n        TabOrder = 13\n        TabStop = False\n      end\n      object Label18: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 535.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = 'Max number of tokens per request'\n        TabOrder = 10\n        TabStop = False\n      end\n      object Label19: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 177.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'GPT-4 is currently in a limited beta and only accessible to thos' +\n          'e who have been granted access'\n        TabOrder = 12\n        TabStop = False\n      end\n      object Label3: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 575.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Temperature (default: 1.0)'\n        TabOrder = 14\n        TabStop = False\n      end\n      object Label4: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 627.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'The higher, the more creativity will be in the answers (less acc' +\n          'urate)'\n        TabOrder = 11\n        TabStop = False\n      end\n      object Label8: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 112.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Model (default: gpt-3.5-turbo)'\n        TabOrder = 26\n        TabStop = False\n      end\n      object Label9: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 355.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Model max tokens (default: 4096)'\n        TabOrder = 28\n        TabStop = False\n      end\n      object Layout3: TLayout\n        Align = Top\n        Position.Y = 597.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 6\n        TabStop = False\n        object TrackBarTemp: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 20.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          Value = 10.000000000000000000\n          OnTracking = TrackBarTempTracking\n        end\n        object LabelTemp: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '2.0'\n          TabOrder = 71\n          TabStop = False\n        end\n      end\n      object Layout1: TLayout\n        Align = Top\n        Position.Y = 689.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 7\n        TabStop = False\n        object TrackBarPP: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 20.000000000000000000\n          Min = -20.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          OnTracking = TrackBarPPTracking\n        end\n        object LabelPP: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '0.0'\n          TabOrder = 71\n          TabStop = False\n        end\n      end\n      object Label12: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 667.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Presence penalty (default: 0.0)'\n        TabOrder = 23\n        TabStop = False\n      end\n      object Label11: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 719.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 44.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'Number between -2.0 and 2.0. Positive values penalize new tokens' +\n          ' based on whether they appear in the text so far, increasing the' +\n          ' model'#39's likelihood to talk about new topics.'\n        TabOrder = 19\n        TabStop = False\n      end\n      object Label15: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 788.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Frequency penalty (default: 0.0)'\n        TabOrder = 20\n        TabStop = False\n      end\n      object Layout5: TLayout\n        Align = Top\n        Position.Y = 810.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 8\n        TabStop = False\n        object TrackBarFP: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 20.000000000000000000\n          Min = -20.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          OnTracking = TrackBarFPTracking\n        end\n        object LabelFP: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '0.0'\n          TabOrder = 71\n          TabStop = False\n        end\n      end\n      object Label13: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 840.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 44.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'Number between -2.0 and 2.0. Positive values penalize new tokens' +\n          ' based on their existing frequency in the text so far, decreasin' +\n          'g the model'#39's likelihood to repeat the same line verbatim.'\n        TabOrder = 16\n        TabStop = False\n      end\n      object Label28: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 961.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 73.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'An alternative to sampling with temperature, called nucleus samp' +\n          'ling, where the model considers the results of the tokens with t' +\n          'op_p probability mass. So 0.1 means only the tokens comprising t' +\n          'he top 10% probability mass are considered.'#13#10'We generally recomm' +\n          'end altering this or temperature but not both.'\n        TabOrder = 15\n        TabStop = False\n      end\n      object Layout6: TLayout\n        Align = Top\n        Position.Y = 931.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 9\n        TabStop = False\n        object TrackBarTopP: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 10.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          Value = 10.000000000000000000\n          OnTracking = TrackBarTopPTracking\n        end\n        object LabelTopP: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '0.0'\n          TabOrder = 71\n          TabStop = False\n        end\n      end\n      object Label30: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 909.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Top P (default: 1.0)'\n        TabOrder = 18\n        TabStop = False\n      end\n      object LabelAppearance: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 75.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'General settings'\n        TabOrder = 0\n        TabStop = False\n      end\n      object Layout7: TLayout\n        Align = Top\n        Padding.Top = 4.000000000000000000\n        Padding.Bottom = 4.000000000000000000\n        Margins.Top = 20.000000000000000000\n        Position.Y = 231.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 2\n        TabStop = False\n        object SwitchUseFunctions: TSwitch\n          Align = Right\n          IsChecked = False\n          Margins.Top = 2.000000000000000000\n          Margins.Bottom = 2.000000000000000000\n          Position.X = 359.000000000000000000\n          Position.Y = 6.000000000000000000\n          Size.Width = 45.000000000000000000\n          Size.Height = 18.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n        end\n        object Label34: TLabel\n          Align = Client\n          AutoSize = True\n          StyledSettings = [Style]\n          Size.Width = 359.000000000000000000\n          Size.Height = 22.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xB4FFFFFF\n          TextSettings.WordWrap = False\n          Text = 'Use functions'\n          TabOrder = 0\n          TabStop = False\n        end\n      end\n      object Label35: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 301.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'In an API call, you can describe functions to gpt-3.5-turbo-0613' +\n          ', gpt-3.5-turbo-16k and gpt-4-0613'\n        TabOrder = 17\n        TabStop = False\n      end\n      object Layout9: TLayout\n        Align = Top\n        Padding.Top = 4.000000000000000000\n        Padding.Bottom = 4.000000000000000000\n        Position.Y = 261.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 1\n        TabStop = False\n        object SwitchAutoExecFuncs: TSwitch\n          Align = Right\n          IsChecked = False\n          Margins.Top = 2.000000000000000000\n          Margins.Bottom = 2.000000000000000000\n          Position.X = 359.000000000000000000\n          Position.Y = 6.000000000000000000\n          Size.Width = 45.000000000000000000\n          Size.Height = 18.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n        end\n        object Label37: TLabel\n          Align = Client\n          AutoSize = True\n          StyledSettings = [Style]\n          Size.Width = 359.000000000000000000\n          Size.Height = 22.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xB4FFFFFF\n          TextSettings.WordWrap = False\n          Text = 'Auto execution of functions'\n          TabOrder = 0\n          TabStop = False\n        end\n      end\n      object Layout2: TLayout\n        Align = Top\n        Position.Y = 1039.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 30\n      end\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.ChatSettings.pas",
    "content": "﻿unit ChatGPT.ChatSettings;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Overlay, FMX.Objects, FMX.Edit, FMX.Controls.Presentation, FMX.Layouts,\n  ChatGPT.Classes, FMX.ComboEdit;\n\ntype\n  TFrameChatSettings = class(TFrameOveraly)\n    LayoutClient: TLayout;\n    RectangleFrame: TRectangle;\n    LayoutActs: TLayout;\n    ButtonCancel: TButton;\n    ButtonOk: TButton;\n    VertScrollBox: TVertScrollBox;\n    ComboEditModel: TComboEdit;\n    EditMaxTokens: TEdit;\n    ClearEditButton3: TClearEditButton;\n    Path2: TPath;\n    EditQueryMaxToken: TEdit;\n    ClearEditButton4: TClearEditButton;\n    Path3: TPath;\n    Label1: TLabel;\n    Label16: TLabel;\n    Label17: TLabel;\n    Label18: TLabel;\n    Label19: TLabel;\n    Label3: TLabel;\n    Label4: TLabel;\n    Label8: TLabel;\n    Label9: TLabel;\n    Layout3: TLayout;\n    TrackBarTemp: TTrackBar;\n    LabelTemp: TLabel;\n    Layout1: TLayout;\n    TrackBarPP: TTrackBar;\n    LabelPP: TLabel;\n    Label12: TLabel;\n    Label11: TLabel;\n    Label15: TLabel;\n    Layout5: TLayout;\n    TrackBarFP: TTrackBar;\n    LabelFP: TLabel;\n    Label13: TLabel;\n    Label28: TLabel;\n    Layout6: TLayout;\n    TrackBarTopP: TTrackBar;\n    LabelTopP: TLabel;\n    Label30: TLabel;\n    LabelAppearance: TLabel;\n    Layout7: TLayout;\n    SwitchUseFunctions: TSwitch;\n    Label34: TLabel;\n    Label35: TLabel;\n    Layout9: TLayout;\n    SwitchAutoExecFuncs: TSwitch;\n    Label37: TLabel;\n    Layout2: TLayout;\n    procedure TrackBarTempTracking(Sender: TObject);\n    procedure ButtonCancelClick(Sender: TObject);\n    procedure ButtonOkClick(Sender: TObject);\n    procedure FrameResize(Sender: TObject);\n    procedure RectangleBGClick(Sender: TObject);\n    procedure TrackBarPPTracking(Sender: TObject);\n    procedure TrackBarFPTracking(Sender: TObject);\n    procedure TrackBarTopPTracking(Sender: TObject);\n    procedure ComboEditModelMouseWheel(Sender: TObject; Shift: TShiftState;\n      WheelDelta: Integer; var Handled: Boolean);\n  private\n    FProcCallback: TProc<TFrameChatSettings, Boolean>;\n    FLayoutClientWidth: Single;\n    FLayoutClientHeight: Single;\n  protected\n    procedure SetMode(const Value: TWindowMode); override;\n  public\n    constructor Create(AOwner: TComponent); override;\n    procedure Cancel; override;\n    class procedure Execute(AParent: TControl; ProcSet: TProc<TFrameChatSettings>; ProcExecuted: TProc<TFrameChatSettings, Boolean>);\n  end;\n\nvar\n  FrameChatSettings: TFrameChatSettings;\n\nimplementation\n\nuses\n  System.Math, FMX.Ani, HGM.FMX.Ani, ChatGPT.Manager;\n\n{$R *.fmx}\n\n{ TFrameChatSettings }\n\nprocedure TFrameChatSettings.Cancel;\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, False);\n  Release;\nend;\n\nprocedure TFrameChatSettings.ComboEditModelMouseWheel(Sender: TObject;\n  Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  Handled := True;\n  VertScrollBox.AniCalculations.MouseWheel(0, -WheelDelta);\nend;\n\nprocedure TFrameChatSettings.ButtonCancelClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameChatSettings.ButtonOkClick(Sender: TObject);\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, True);\n  Release;\nend;\n\nconstructor TFrameChatSettings.Create(AOwner: TComponent);\nbegin\n  inherited;\n  FLayoutClientWidth := LayoutClient.Width;\n  FLayoutClientHeight := LayoutClient.Height;\n  VertScrollBox.AniCalculations.Animation := True;\n  //VertScrollBox.AniCalculations.Interval := 1;\n  VertScrollBox.AniCalculations.Averaging := True;\n  VertScrollBox.ViewportPosition := TPoint.Zero;\n  ComboEditModel.Items.Clear;\n  ComboEditModel.Items.AddStrings(ActualModels);\n  Name := '';\nend;\n\nclass procedure TFrameChatSettings.Execute(AParent: TControl; ProcSet: TProc<TFrameChatSettings>; ProcExecuted: TProc<TFrameChatSettings, Boolean>);\nbegin\n  var Frame := TFrameChatSettings.Create(AParent);\n  Frame.Parent := AParent;\n  Frame.FProcCallback := ProcExecuted;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.BringToFront;\n  if Assigned(ProcSet) then\n    ProcSet(Frame);\n  Frame.TrackBarTempTracking(nil);\n  Frame.TrackBarPPTracking(nil);\n  Frame.TrackBarFPTracking(nil);\n  Frame.TrackBarTopPTracking(nil);\n  Frame.ButtonCancel.SetFocus;\nend;\n\nprocedure TFrameChatSettings.FrameResize(Sender: TObject);\nbegin\n  LayoutClient.Width := Min(FLayoutClientWidth, Width);\n  LayoutClient.Height := Min(FLayoutClientHeight, Height);\nend;\n\nprocedure TFrameChatSettings.RectangleBGClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameChatSettings.SetMode(const Value: TWindowMode);\nbegin\n  inherited;\n  if Mode = TWindowMode.Compact then\n  begin\n    LayoutClient.Align := TAlignLayout.Client;\n    RectangleFrame.Corners := [];\n  end\n  else\n  begin\n    LayoutClient.Align := TAlignLayout.Center;\n    RectangleFrame.Corners := AllCorners;\n  end;\n  FrameResize(nil);\nend;\n\nprocedure TFrameChatSettings.TrackBarFPTracking(Sender: TObject);\nbegin\n  LabelFP.Text := FormatFloat('0.0', TrackBarFP.Value / 10);\nend;\n\nprocedure TFrameChatSettings.TrackBarPPTracking(Sender: TObject);\nbegin\n  LabelPP.Text := FormatFloat('0.0', TrackBarPP.Value / 10);\nend;\n\nprocedure TFrameChatSettings.TrackBarTempTracking(Sender: TObject);\nbegin\n  LabelTemp.Text := FormatFloat('0.0', TrackBarTemp.Value / 10);\nend;\n\nprocedure TFrameChatSettings.TrackBarTopPTracking(Sender: TObject);\nbegin\n  LabelTopP.Text := FormatFloat('0.0', TrackBarTopP.Value / 10);\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Classes.pas",
    "content": "﻿unit ChatGPT.Classes;\n\ninterface\n\nuses\n  System.SysUtils, OpenAI.Chat.Functions;\n\n{$SCOPEDENUMS ON}\n\ntype\n  TWindowMode = (Compact, Full);\n\n  TPartType = (Text, Code);\n\n  TMessageKind = (User, Assistant, System, Error, Func);\n\n  TMessageKindHelper = record helper for TMessageKind\n    function ToString: string;\n    class function FromString(const Value: string): TMessageKind; static;\n  end;\n\n  TMessageFuncState = (Wait, Success, Error, Executing);\n\n  TPart = record\n    PartType: TPartType;\n    Content: string;\n    Language: string;\n  end;\n\n  TUnderMouse = record\n    WordStart: Int64;\n    WordLength: Int64;\n    WordLine: Int64;\n    Text: string;\n  end;\n\n  TOnFuncExecute = procedure(Sender: TObject; const FuncName, FuncArgs: string; Callback: TProc<Boolean, string>) of object;\n\n  TOnNeedFuncList = procedure(Sender: TObject; out Items: TArray<IChatFunction>) of object;\n\n  TOnTextUpdated = procedure(Sender: TObject; const MessageId, Text: string) of object;\n\nconst\n  MaxMessageWidth = 850;\n\nprocedure OpenUrl(const URL: string);\n\nimplementation\n\nuses\n  {$IFDEF ANDROID}\n  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.NET,\n  {$ENDIF}\n  {$IF DEFINED(IOS) OR DEFINED(IOS64)}\n  MacApi.Helpers, iOSApi.Foundation, FMX.Helpers.iOS,\n  {$ENDIF}\n  {$IFDEF POSIX}\n  Posix.Stdlib,\n  {$ENDIF POSIX}\n  {$IFDEF MSWINDOWS}\n  ShellAPI, DarkModeApi.FMX, FMX.Platform.Win,\n  {$ENDIF}\n  FMX.Platform;\n\nprocedure OpenUrl(const URL: string);\nbegin\n  {$IFDEF ANDROID}\n  TAndroidHelper.Context.startActivity(TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, StrToJURI(URL)));\n  {$ENDIF}\n  {$IF DEFINED(IOS) OR DEFINED(IOS64)}\n  SharedApplication.OpenURL(StrToNSUrl(URL));\n  {$ENDIF}\n  {$IFDEF POSIX}\n  _system(PAnsiChar('open ' + AnsiString(URL)));\n  {$ENDIF POSIX}\n  {$IFDEF MSWINDOWS}\n  ShellExecute(0, 'open', PChar(URL), nil, nil, 1);\n  {$ENDIF}\nend;\n\n{ TMessageKindHelper }\n\nclass function TMessageKindHelper.FromString(const Value: string): TMessageKind;\nbegin\n  if Value = 'system' then\n    Exit(TMessageKind.System)\n  else if Value = 'user' then\n    Exit(TMessageKind.User)\n  else if Value = 'assistant' then\n    Exit(TMessageKind.Assistant)\n  else if Value = 'error' then\n    Exit(TMessageKind.Error)\n  else if Value = 'function' then\n    Exit(TMessageKind.Func)\n  else\n    Result := TMessageKind.User;\nend;\n\nfunction TMessageKindHelper.ToString: string;\nbegin\n  case Self of\n    TMessageKind.System:\n      Result := 'system';\n    TMessageKind.User:\n      Result := 'user';\n    TMessageKind.Assistant:\n      Result := 'assistant';\n    TMessageKind.Error:\n      Result := 'error';\n    TMessageKind.Func:\n      Result := 'function';\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Code.pas",
    "content": "﻿unit ChatGPT.Code;\n\ninterface\n\nuses\n  System.SysUtils, FMX.Graphics, System.UITypes, System.Generics.Collections,\n  FMX.TextLayout;\n\ntype\n  TKeyWord = class\n    Word: TArray<string>;\n    Font: TFont;\n    Color: TAlphaColor;\n    constructor Create;\n    destructor Destroy; override;\n  end;\n\n  TKeyWords = class(TObjectList<TKeyWord>)\n    function FindWord(const Value: string; out Key: TKeyWord): Boolean;\n  end;\n\n  TTextAttributedRangeData = record\n  public\n    Range: TTextRange;\n    Attribute: TTextAttribute;\n    constructor Create(const ARange: TTextRange; const AAttribute: TTextAttribute);\n  end;\n\n  TLineTextAttributedRange = class(TList<TTextAttributedRangeData>)\n  private\n    FText: string;\n  public\n    property Text: string read FText write FText;\n  end;\n\n  TCodeSyntaxClass = class of TCodeSyntax;\n\n  TRegisteredSyntax = record\n    SyntaxClass: TCodeSyntaxClass;\n    Languages: TArray<string>;\n  end;\n\n  TCachedAttributes = TDictionary<Integer, TArray<TTextAttributedRangeData>>;\n\n  TCodeSyntax = class abstract\n  private\n    class var\n      FRegitered: TList<TRegisteredSyntax>;\n  protected\n    FCached: TCachedAttributes;\n    FDefaultFont: TFont;\n    FDefaultColor: TAlphaColor;\n  public\n    constructor Create(DefaultFont: TFont; DefaultColor: TAlphaColor); virtual;\n    destructor Destroy; override;\n    function GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>; virtual; abstract;\n    procedure DropCache; virtual;\n    class function FindSyntax(const Language: string; DefaultFont: TFont; DefaultColor: TAlphaColor): TCodeSyntax;\n    class procedure RegisterSyntax(Languages: TArray<string>; CodeSyntaxClass: TCodeSyntaxClass);\n  end;\n\nimplementation\n\n{ TKeyWord }\n\nconstructor TKeyWord.Create;\nbegin\n  inherited;\n  Font := TFont.Create;\nend;\n\ndestructor TKeyWord.Destroy;\nbegin\n  Font.Free;\n  inherited;\nend;\n\n{ TKeyWords }\n\nfunction TKeyWords.FindWord(const Value: string; out Key: TKeyWord): Boolean;\nbegin\n  var LowValue := Value.ToLower;\n  for var KeyWord in Self do\n    for var Word in KeyWord.Word do\n    begin\n      if Word = LowValue then\n      begin\n        Key := KeyWord;\n        Exit(True);\n      end;\n    end;\n  Result := False;\nend;\n\n{ TTextAttributedRangeData }\n\nconstructor TTextAttributedRangeData.Create(const ARange: TTextRange; const AAttribute: TTextAttribute);\nbegin\n  Self.Range := ARange;\n  Self.Attribute := AAttribute;\nend;\n\n{ TCodeSyntax }\n\nconstructor TCodeSyntax.Create(DefaultFont: TFont; DefaultColor: TAlphaColor);\nbegin\n  inherited Create;\n  FCached := TCachedAttributes.Create;\n  FDefaultFont := DefaultFont;\n  FDefaultColor := DefaultColor;\nend;\n\ndestructor TCodeSyntax.Destroy;\nbegin\n  FCached.Free;\n  inherited;\nend;\n\nprocedure TCodeSyntax.DropCache;\nbegin\n  FCached.Clear;\nend;\n\nclass function TCodeSyntax.FindSyntax(const Language: string; DefaultFont: TFont; DefaultColor: TAlphaColor): TCodeSyntax;\nbegin\n  if not Assigned(FRegitered) then\n    Exit(nil);\n  for var Item in FRegitered do\n    for var Lang in Item.Languages do\n      if Lang = Language.ToLower then\n        Exit(Item.SyntaxClass.Create(DefaultFont, DefaultColor));\n  Result := nil;\nend;\n\nclass procedure TCodeSyntax.RegisterSyntax(Languages: TArray<string>; CodeSyntaxClass: TCodeSyntaxClass);\nbegin\n  if not Assigned(FRegitered) then\n    FRegitered := TList<TRegisteredSyntax>.Create;\n  var Reg: TRegisteredSyntax;\n  Reg.SyntaxClass := CodeSyntaxClass;\n  Reg.Languages := Languages;\n  FRegitered.Add(Reg);\nend;\n\ninitialization\n\nfinalization\n  TCodeSyntax.FRegitered.Free;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameChat.fmx",
    "content": "object FrameChat: TFrameChat\n  Align = Contents\n  Size.Width = 1006.000000000000000000\n  Size.Height = 786.000000000000000000\n  Size.PlatformDefault = False\n  object RectangleBG: TRectangle\n    Align = Contents\n    Fill.Color = xFF343541\n    Locked = True\n    HitTest = False\n    Size.Width = 1006.000000000000000000\n    Size.Height = 786.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Kind = None\n  end\n  object VertScrollBoxChat: TVertScrollBox\n    Align = Contents\n    Padding.Bottom = 160.000000000000000000\n    Size.Width = 1006.000000000000000000\n    Size.Height = 786.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    OnViewportPositionChange = VertScrollBoxChatViewportPositionChange\n    Viewport.Width = 990.000000000000000000\n    Viewport.Height = 786.000000000000000000\n    object LayoutTyping: TLayout\n      Align = Top\n      Padding.Left = 16.000000000000000000\n      Padding.Top = 16.000000000000000000\n      Padding.Right = 16.000000000000000000\n      Padding.Bottom = 16.000000000000000000\n      Size.Width = 990.000000000000000000\n      Size.Height = 62.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 0\n      OnResize = LayoutTypingResize\n      OnResized = LayoutTypingResize\n      object RectangleTypeBG: TRectangle\n        Align = Contents\n        Fill.Color = x14FFFFFF\n        Locked = True\n        Size.Width = 990.000000000000000000\n        Size.Height = 62.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Kind = None\n      end\n      object LayoutTypingContent: TLayout\n        Align = HorzCenter\n        Locked = True\n        Position.X = 117.000000000000000000\n        Position.Y = 16.000000000000000000\n        Size.Width = 755.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 2\n        object Layout3: TLayout\n          Align = Left\n          Margins.Right = 14.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 2\n          object RectangleBot: TRectangle\n            Align = Top\n            Fill.Color = xFF10A37F\n            Size.Width = 30.000000000000000000\n            Size.Height = 30.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            XRadius = 2.000000000000000000\n            YRadius = 2.000000000000000000\n            object Path3: TPath\n              Align = Center\n              Data.Path = {\n                0F010000000000002D21164232F786410200000057EC1742B762784102000000\n                928B1842F38E61410200000054F4174272F94A4102000000155D1742F1633441\n                02000000D792154279921E410200000039B41242C2FA0A41020000004D730E42\n                75B0DA4002000000EBF3074261C3AB400200000032260042B6F38F4002000000\n                F2B0F04141486840020000004547DF4109C45940020000006F92CE412E737640\n                020000006C09C741E48332400200000074C6BD41E17AF83F02000000D567B341\n                3884AE3F020000003709A941711B493F0200000098CC9D419C87FB3E02000000\n                47729241E90C003F02000000CC5D81416876FD3E02000000C66D61410282953F\n                020000004BC8454157041B4002000000D1222A4184476B400200000094931541\n                0A4BAE400200000034110B41014DEF400200000090A0E9405969F84002000000\n                5B94BF40607605410200000070CE9A4001CD1241020000000A116C40A3232041\n                0200000048C42E404F4031410200000024D10140F4FD444102000000D3DA743F\n                AC8B6241020000007A70FF3EF16382410200000033C1383FE561934102000000\n                3ACA713FA45FA44102000000FB05EB3FF55BB44102000000E9265140CE08C141\n                020000004F753440A5CECB41020000001B812A408638D74102000000DCF43340\n                4783E241020000009D683D4007CEED4102000000740C5A40AEB6F84102000000\n                D7FA834055410142020000005C03A640E2A90842020000005DFED9405F870E42\n                020000001C360C415501124202000000F46C2B414A7B1542020000004F404E41\n                A36316420200000093A96F41C89814420200000099BB7E41C2D7184202000000\n                F9A088411C3C1C420200000063FF9241E18B1E4202000000015E9D418CDB2042\n                02000000A09AA841E908224202000000F1F4B341CCFF214202000000AC0BC541\n                8805224202000000D7B4D54112541F4202000000CE88E3410E4F1A4202000000\n                FB5CF141094A15420200000012A5FB41D0330E42020000009672004254120642\n                02000000C4020642CCEE0442020000004D440B426A9E02420200000015DD0F42\n                6891FE4102000000C375144232E6F741020000008C4A1842A857EF4102000000\n                CE191B42D578E5410200000019621F4261B2D641020000008E3521424D95C541\n                02000000CB5020423199B44102000000226C1F42159DA3410200000009DB1B42\n                9CA29341020000002D21164232F78641030000002D21164232F7864100000000\n                7FFBB341238A17420200000054F4A541B38C174202000000015E9841DC171542\n                020000005F988D41B499104202000000AF148E41CF77104202000000CCEE8E41\n                023C104202000000EE7C8F417D101042010000000534CF412653FB4102000000\n                6ACDD0414B6AFA41020000006221D2419318F94102000000E70CD3419D80F741\n                02000000A1F8D341A7E8F541020000004D73D4416519F441020000006F70D441\n                8F42F241010000006F70D441006F984101000000D35EEF41E7FBA74102000000\n                DE82EF41ED0DA84102000000FFA1EF418D28A841020000008CB9EF418649A841\n                02000000E5D0EF417F6AA84102000000A4DFEF41CB90A84102000000C3E4EF41\n                BBB8A84101000000C3E4EF41781CF34102000000A4DFEF410080014202000000\n                8A8EE941CC1D094202000000C353DE4185BC0E4202000000FC18D341575B1442\n                02000000D3DEC341BC851742020000007FFBB341238A1742030000007FFBB341\n                238A1742000000007A8DCC401B0DF841020000007172B04010E9EB4102000000\n                4451A64083AFDD4102000000F2EFAF4098DDCF41020000006BD4B1404C26D041\n                02000000A722B54087A7D04102000000ED81B740C5FED041010000001B2F5B41\n                64CCF54102000000295C5E41F5B9F6410200000009F961414C37F74102000000\n                B5A665414C37F74102000000F85369414C37F74102000000D8F06C41F5B9F641\n                02000000E71D704164CCF5410100000017D9C541E5E1C8410100000017D9C541\n                B3FBE7410200000057DBC5414024E841020000008FD3C541014DE84102000000\n                5BC2C541DE71E8410200000027B1C541BC96E841020000002497C541E3B6E841\n                020000009476C54142CFE84101000000B90D8541B1FF064202000000B98D6E41\n                66F70A42020000002CD44D41EF090C42020000007E1D2F414AFB094202000000\n                A5661041A5EC0742020000004469EC40BBE70242020000007A8DCC401B0DF841\n                030000007A8DCC401B0DF841000000009981894010E95941020000006B7DA540\n                C89841410200000075B0D1407FFB2E41020000007D2E0341BD52254102000000\n                7D2E0341BA6B2641020000005A1E0341645D2841020000005A1E0341AEB62941\n                010000005A1E0341C9769E41020000009E1803416A4DA04102000000AE0D0441\n                431CA2410200000045E4054105B4A34102000000DCBA0741924BA54102000000\n                04620A41159DA64102000000FD930D41F085A7410100000012949441006FD441\n                01000000C74B7341B3FBE34102000000C80773413A12E441020000008CB97241\n                BE1FE44102000000736872416E23E44102000000591772411E27E44102000000\n                6DC57141C520E44102000000787A7141CB10E44101000000734BE14079D8BE41\n                020000008048AA407CE1B641020000002D268240BAC9A941020000008D626340\n                D26F9A4102000000C07842401E168B410200000070995340F775754102000000\n                9981894010E95941030000009981894010E9594100000000D7A3FF41DE71A041\n                010000007FD9B141BF0E674101000000E3C7CC4138F8474102000000E2E9CC41\n                92CB4741020000000011CD4121B04741020000008C39CD41C1A8474102000000\n                1962CD4162A1474102000000DB8ACD417DAE47410200000055B0CD4170CE4741\n                010000006A0D074259178941020000009FFC0B42C1CA8E4102000000BE011042\n                832F97410200000074A41242584AA14102000000114715422C65AB4102000000\n                366B1642C1CAB64102000000CCEE1542AF25C24102000000617215429D80CD41\n                02000000515A13427958D84102000000AFE50F423E68E14102000000F2700C42\n                0378EA410200000019C40742A45FF14102000000366B02421450F54102000000\n                366B0242F2C1F44102000000366B024252C9F34102000000366B0242781CF341\n                01000000366B02420681A94102000000296D024236ABA741020000008A300242\n                C6DCA5410200000099BB01423945A44102000000A8460142ACADA24102000000\n                B29D0042C05BA14102000000D7A3FF41DE71A04103000000D7A3FF41DE71A041\n                00000000D5380D426E3470410200000050FC0C42BE9F6F410200000089920C42\n                90A06E4102000000A8460C427CF26D410100000004D6D841D656244102000000\n                7D3FD741857C2241020000004171D54141822141020000006B9AD34141822141\n                02000000CAC3D14141822141020000005AF5CF41857C224102000000D35ECE41\n                D656244101000000AF9480413D2C7E4101000000AF948041A1F83F4102000000\n                6F9280411EA73F4102000000379A804104563F41020000006BAB80414A0C3F41\n                020000009FBC80418FC23E4102000000A1D6804141823E410200000032F78041\n                83513E41010000000D60C1410C02E840020000000E3ECB41BC3FD14002000000\n                C286D6414833C640020000000AE8E1417C27C840020000005249ED41C51BCA40\n                020000008C4AF84111FCD840020000004ED10042E50AF340020000003C7D0542\n                DD8C0641020000000523094296A118410200000067550B424CA62D4102000000\n                C8870D42CEAA424102000000832F0E4283C0594102000000D5380D426E347041\n                03000000D5380D426E34704100000000DFE063410389AF4101000000D2002E41\n                1CFC9F4102000000BBB82D4116EA9F4102000000107A2D4176CF9F4102000000\n                5E4B2D417DAE9F4102000000AC1C2D41848D9F4102000000C5FE2C4138679F41\n                02000000F1F42C41143F9F4101000000F1F42C41AEB6294102000000A1F82C41\n                5DED124102000000107A33413A3BF94002000000DDB53F4160C8D24002000000\n                13F24B418655AC400200000038675D41A0A68D40020000003D0A724122A67440\n                02000000A156834104FF4D4002000000B7D18E412FA83F4002000000841E9A41\n                0E4F4B4002000000856BA541EDF55640020000003A12B0414B1F7C4002000000\n                C3D3B841B0389B40020000007357B84102489C4002000000FA7EB74118269E40\n                0200000035EFB641E8829F40010000003B706E41DB5C194102000000713D6B41\n                342E1B4102000000EA95684124D11D410200000077BE66416900214102000000\n                6DE76441832F24410200000013F263419FCD27410200000066F76341E17A2B41\n                01000000DFE063410389AF4103000000DFE063410389AF410000000068918041\n                28FE8F4101000000E336A341FDF677410100000029DCC541E1FA8F4101000000\n                29DCC541EEFCB74101000000E336A34185FCCB410100000068918041EEFCB741\n                010000006891804128FE8F41030000006891804128FE8F41}\n              Fill.Color = claWhite\n              Size.Width = 20.000000000000000000\n              Size.Height = 20.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n          end\n        end\n        object Layout4: TLayout\n          Align = Client\n          Locked = True\n          Size.Width = 711.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 3\n          object RectangleIndicate: TRectangle\n            Align = Left\n            Fill.Color = xFFE6E6E6\n            Margins.Top = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.Y = 7.000000000000000000\n            Size.Width = 10.000000000000000000\n            Size.Height = 16.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Color = xFFC4C4C4\n          end\n        end\n      end\n    end\n    object LayoutWelcome: TLayout\n      Align = Top\n      Locked = True\n      Position.Y = 62.000000000000000000\n      Size.Width = 990.000000000000000000\n      Size.Height = 619.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 3\n      OnResize = LayoutWelcomeResize\n      OnResized = LayoutWelcomeResize\n      object LabelWelcomeTitle: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Family]\n        Margins.Top = 188.000000000000000000\n        Margins.Bottom = 64.000000000000000000\n        Position.Y = 188.000000000000000000\n        Size.Width = 990.000000000000000000\n        Size.Height = 48.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Size = 36.000000000000000000\n        TextSettings.Font.StyleExt = {00060000000000000004000000}\n        TextSettings.FontColor = xFFECECF1\n        TextSettings.HorzAlign = Center\n        TextSettings.WordWrap = False\n        TextSettings.Trimming = None\n        Text = 'ChatGPT'\n        TabOrder = 2\n      end\n      object FlowLayoutWelcome: TFlowLayout\n        Align = HorzCenter\n        Locked = True\n        Position.X = 183.000000000000000000\n        Position.Y = 300.000000000000000000\n        Size.Width = 624.000000000000000000\n        Size.Height = 319.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 1\n        Justify = Left\n        JustifyLastLine = Left\n        FlowDirection = LeftToRight\n        OnResize = FlowLayoutWelcomeResize\n        OnResized = FlowLayoutWelcomeResize\n        object LayoutExampleTitle: TLayout\n          Align = Client\n          Locked = True\n          Size.Width = 208.000000000000000000\n          Size.Height = 319.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 2\n          object PathExaFull: TPath\n            Align = MostTop\n            Data.Path = {\n              9C00000000000000000080430000104302000000004042430000104302000000\n              0000104300404243020000000000104300008043020000000000104300E09E43\n              02000000004042430000B84302000000000080430000B8430200000000E09E43\n              0000B843020000000000B84300E09E43020000000000B8430000804302000000\n              0000B843004042430200000000E09E4300001043020000000000804300001043\n              03000000000080430000104300000000000080430000A84302000000DFCF5343\n              0000A84302000000000030431018964302000000000030430000804302000000\n              00003043DFCF534302000000DFCF534300003043020000000000804300003043\n              020000001018964300003043020000000000A843DFCF5343020000000000A843\n              00008043020000000000A8431018964302000000101896430000A84302000000\n              000080430000A84303000000000080430000A84300000000000080430000E042\n              02000000A06A84430000E04202000000000088437FAAD1420200000000008843\n              0000C042010000000000884300008042020000000000884302AB5C4202000000\n              A06A84430000404202000000000080430000404202000000C02A774300004042\n              020000000000704302AB5C420200000000007043000080420100000000007043\n              0000C04202000000000070437FAAD14202000000C12A77430000E04202000000\n              000080430000E04203000000000080430000E04200000000000080430000C843\n              02000000C02A77430000C84302000000000070436095CB430200000000007043\n              0000D04301000000000070430000E0430200000000007043A06AE44302000000\n              C02A77430000E84302000000000080430000E84302000000A06A84430000E843\n              0200000000008843A06AE44302000000000088430000E0430100000000008843\n              0000D04302000000000088436095CB4302000000A06A84430000C84302000000\n              000080430000C84303000000000080430000C843000000001038BE43C12A1A43\n              010000001088C943C18A03430200000010A8CC438295FA420200000010A8CC43\n              8255E642020000001088C94382D5D942020000001068C6438255CD4202000000\n              1058C1438255CD42020000001038BE4382D5D9420100000010E8B243C18A0343\n              0200000010C8AF43C1CA09430200000010C8AF43C1EA13430200000010E8B243\n              C12A1A43020000001008B643C16A2043020000001018BB43C16A204302000000\n              1038BE43C12A1A43030000001038BE43C12A1A4300000000DF8F0343C1EAB243\n              01000000BEDFD942C13ABE4302000000BE5FCD42A05AC14302000000BE5FCD42\n              A06AC64302000000BEDFD942A08AC94302000000BE5FE642A0AACC4302000000\n              BE9FFA42A0AACC4302000000DF8F0343A08AC94301000000DF2F1A43C13ABE43\n              02000000DF6F20431118BB4302000000DF6F2043A00AB64302000000DF2F1A43\n              C1EAB2430200000021F01343A0CAAF4302000000DFCF0943F0C7AF4302000000\n              DF8F0343C1EAB24303000000DF8F0343C1EAB243000000000000E04200008043\n              020000000000E042C02A7743020000007FAAD14200007043020000000000C042\n              000070430100000000008042000070430200000002AB5C420000704302000000\n              00004042C02A77430200000000004042000080430200000000004042A06A8443\n              0200000002AB5C4200008843020000000000804200008843010000000000C042\n              00008843020000007FAAD14200008843020000000000E042A06A844302000000\n              0000E04200008043030000000000E04200008043000000000000E04300007043\n              010000000000D04300007043020000006095CB4300007043020000000000C843\n              C02A7743020000000000C84300008043020000000000C843A06A844302000000\n              6095CB4300008843020000000000D04300008843010000000000E04300008843\n              02000000A06AE44300008843020000000000E843A06A8443020000000000E843\n              00008043020000000000E843C02A774302000000A06AE4430000704302000000\n              0000E04300007043030000000000E04300007043000000007F8A0343C12A1A43\n              02000000C1CA0943C16A204302000000C0EA1343C16A2043020000007F2A1A43\n              C12A1A4302000000C16A2043C1EA134302000000C16A2043C1CA094302000000\n              7F2A1A43C18A0343010000007F8A034382D5D94202000000FE94FA428255CD42\n              020000008155E6428255CD4202000000FED4D94282D5D94202000000FE54CD42\n              8255E64202000000FE54CD428295FA4202000000FED4D942C18A034301000000\n              7F8A0343C12A1A43030000007F8A0343C12A1A4300000000C13ABE43F0E7B243\n              020000001118BB43F0C7AF4302000000A00AB643F0C7AF4302000000C1EAB243\n              F0E7B24302000000A0CAAF43F007B6430200000011C8AF43F017BB4302000000\n              C1EAB243F037BE4301000000C13ABE43F087C94302000000A05AC143F0A7CC43\n              02000000A06AC643F0A7CC4302000000A08AC943F087C94302000000A0AACC43\n              F067C64302000000A0AACC43F057C14302000000A08AC943F037BE4301000000\n              C13ABE43F0E7B24303000000C13ABE43F0E7B243}\n            Fill.Color = xFFECECF1\n            Locked = True\n            Margins.Top = 2.000000000000000000\n            Margins.Bottom = 4.000000000000000000\n            Position.Y = 2.000000000000000000\n            Size.Width = 208.000000000000000000\n            Size.Height = 24.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n          object ButtonExample3: TButton\n            Tag = 1\n            OnTap = ButtonExample3Tap\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 226.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TabOrder = 0\n            Text = '\"How do I make an HTTP request in Javascript?\" '#8594\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.WordWrap = True\n            OnClick = ButtonExample3Click\n          end\n          object ButtonExample2: TButton\n            Tag = 1\n            OnTap = ButtonExample2Tap\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 147.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TabOrder = 1\n            Text = '\"Got any creative ideas for a 10 year old'#8217's birthday?\" '#8594\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.WordWrap = True\n            OnClick = ButtonExample2Click\n          end\n          object ButtonExample1: TButton\n            Tag = 1\n            OnTap = ButtonExample1Tap\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 68.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TabOrder = 2\n            Text = '\"Explain quantum computing in simple terms\" '#8594\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.WordWrap = True\n            OnClick = ButtonExample1Click\n          end\n          object Layout5: TLayout\n            Align = Top\n            Locked = True\n            Position.Y = 30.000000000000000000\n            Size.Width = 208.000000000000000000\n            Size.Height = 31.000000000000000000\n            Size.PlatformDefault = False\n            TabOrder = 3\n            object Label2: TLabel\n              Align = Center\n              AutoSize = True\n              StyledSettings = [Family, Style]\n              Locked = True\n              Size.Width = 75.000000000000000000\n              Size.Height = 24.000000000000000000\n              Size.PlatformDefault = False\n              TextSettings.Font.Size = 18.000000000000000000\n              TextSettings.FontColor = xFFECECF1\n              TextSettings.HorzAlign = Center\n              TextSettings.WordWrap = False\n              Text = 'Examples'\n              TabOrder = 3\n              object PathExaCompact: TPath\n                Align = Left\n                Data.Path = {\n                  9C00000000000000000080430000104302000000004042430000104302000000\n                  0000104300404243020000000000104300008043020000000000104300E09E43\n                  02000000004042430000B84302000000000080430000B8430200000000E09E43\n                  0000B843020000000000B84300E09E43020000000000B8430000804302000000\n                  0000B843004042430200000000E09E4300001043020000000000804300001043\n                  03000000000080430000104300000000000080430000A84302000000DFCF5343\n                  0000A84302000000000030431018964302000000000030430000804302000000\n                  00003043DFCF534302000000DFCF534300003043020000000000804300003043\n                  020000001018964300003043020000000000A843DFCF5343020000000000A843\n                  00008043020000000000A8431018964302000000101896430000A84302000000\n                  000080430000A84303000000000080430000A84300000000000080430000E042\n                  02000000A06A84430000E04202000000000088437FAAD1420200000000008843\n                  0000C042010000000000884300008042020000000000884302AB5C4202000000\n                  A06A84430000404202000000000080430000404202000000C02A774300004042\n                  020000000000704302AB5C420200000000007043000080420100000000007043\n                  0000C04202000000000070437FAAD14202000000C12A77430000E04202000000\n                  000080430000E04203000000000080430000E04200000000000080430000C843\n                  02000000C02A77430000C84302000000000070436095CB430200000000007043\n                  0000D04301000000000070430000E0430200000000007043A06AE44302000000\n                  C02A77430000E84302000000000080430000E84302000000A06A84430000E843\n                  0200000000008843A06AE44302000000000088430000E0430100000000008843\n                  0000D04302000000000088436095CB4302000000A06A84430000C84302000000\n                  000080430000C84303000000000080430000C843000000001038BE43C12A1A43\n                  010000001088C943C18A03430200000010A8CC438295FA420200000010A8CC43\n                  8255E642020000001088C94382D5D942020000001068C6438255CD4202000000\n                  1058C1438255CD42020000001038BE4382D5D9420100000010E8B243C18A0343\n                  0200000010C8AF43C1CA09430200000010C8AF43C1EA13430200000010E8B243\n                  C12A1A43020000001008B643C16A2043020000001018BB43C16A204302000000\n                  1038BE43C12A1A43030000001038BE43C12A1A4300000000DF8F0343C1EAB243\n                  01000000BEDFD942C13ABE4302000000BE5FCD42A05AC14302000000BE5FCD42\n                  A06AC64302000000BEDFD942A08AC94302000000BE5FE642A0AACC4302000000\n                  BE9FFA42A0AACC4302000000DF8F0343A08AC94301000000DF2F1A43C13ABE43\n                  02000000DF6F20431118BB4302000000DF6F2043A00AB64302000000DF2F1A43\n                  C1EAB2430200000021F01343A0CAAF4302000000DFCF0943F0C7AF4302000000\n                  DF8F0343C1EAB24303000000DF8F0343C1EAB243000000000000E04200008043\n                  020000000000E042C02A7743020000007FAAD14200007043020000000000C042\n                  000070430100000000008042000070430200000002AB5C420000704302000000\n                  00004042C02A77430200000000004042000080430200000000004042A06A8443\n                  0200000002AB5C4200008843020000000000804200008843010000000000C042\n                  00008843020000007FAAD14200008843020000000000E042A06A844302000000\n                  0000E04200008043030000000000E04200008043000000000000E04300007043\n                  010000000000D04300007043020000006095CB4300007043020000000000C843\n                  C02A7743020000000000C84300008043020000000000C843A06A844302000000\n                  6095CB4300008843020000000000D04300008843010000000000E04300008843\n                  02000000A06AE44300008843020000000000E843A06A8443020000000000E843\n                  00008043020000000000E843C02A774302000000A06AE4430000704302000000\n                  0000E04300007043030000000000E04300007043000000007F8A0343C12A1A43\n                  02000000C1CA0943C16A204302000000C0EA1343C16A2043020000007F2A1A43\n                  C12A1A4302000000C16A2043C1EA134302000000C16A2043C1CA094302000000\n                  7F2A1A43C18A0343010000007F8A034382D5D94202000000FE94FA428255CD42\n                  020000008155E6428255CD4202000000FED4D94282D5D94202000000FE54CD42\n                  8255E64202000000FE54CD428295FA4202000000FED4D942C18A034301000000\n                  7F8A0343C12A1A43030000007F8A0343C12A1A4300000000C13ABE43F0E7B243\n                  020000001118BB43F0C7AF4302000000A00AB643F0C7AF4302000000C1EAB243\n                  F0E7B24302000000A0CAAF43F007B6430200000011C8AF43F017BB4302000000\n                  C1EAB243F037BE4301000000C13ABE43F087C94302000000A05AC143F0A7CC43\n                  02000000A06AC643F0A7CC4302000000A08AC943F087C94302000000A0AACC43\n                  F067C64302000000A0AACC43F057C14302000000A08AC943F037BE4301000000\n                  C13ABE43F0E7B24303000000C13ABE43F0E7B243}\n                Fill.Color = xFFECECF1\n                Locked = True\n                Margins.Left = -35.000000000000000000\n                Position.X = -35.000000000000000000\n                Size.Width = 24.000000000000000000\n                Size.Height = 24.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n          end\n        end\n        object LayoutCapabilitiesTitle: TLayout\n          Align = Client\n          Locked = True\n          Size.Width = 208.000000000000000000\n          Size.Height = 319.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n          object PathCapFull: TPath\n            Align = MostTop\n            Data.Path = {\n              340000000000000085250B413C4A253D0200000096890E41D32E063E02000000\n              2E7F1041B0AFB53E02000000F1E30F415A0D153F010000006B7101411500C040\n              0100000097FF47411500C040020000005F074B411500C04002000000CDCC4D41\n              A06CC34002000000BB274F4145D8C8400200000041825041E943CE4002000000\n              B537504183C0D44002000000FE654E419A99D940010000008ECCDC40CDCC6C41\n              02000000855FD8401AC06F4102000000857CD04007CE70410200000063B4C940\n              865A6F410200000042ECC2406DE76D41020000001101BF4054526A4102000000\n              8B37C0404FAF664101000000971CDD40F6FF0F4101000000D6FF1F40F6FF0F41\n              0200000009E11340F6FF0F41020000004FCC0840B0490E4102000000BF600340\n              DE930B41020000000CEAFB3F0BDE0841020000000B41FE3FBE9F054102000000\n              3C66064033330341010000007099014180D64C3E02000000F4CF03410C01803C\n              0200000074C10741EF264EBD0200000085250B413C4A253D0300000085250B41\n              3C4A253D00000000D6FF5F400000004101000000ACFFEF400000004102000000\n              BCB3F4400000004102000000C32AF940D9080141020000000135FC4037D40241\n              020000003E3FFF408A9F044102000000F1460041DAFE064102000000F7C7FF40\n              A6500941010000007D91EA401FF448410100000097FF37410000E04001000000\n              ACFFEF400000E04002000000B24BEB400000E04002000000AAD4E6404EEEDD40\n              020000006DCAE3409357DA40020000002FC0E040ECC0D640020000008B71DF40\n              4B02D240020000007637E040B35ECD4001000000F06DF540D72F1C4001000000\n              D6FF5F400000004103000000D6FF5F4000000041}\n            Fill.Color = xFFECECF1\n            Locked = True\n            Margins.Top = 2.000000000000000000\n            Margins.Bottom = 4.000000000000000000\n            Position.Y = 2.000000000000000000\n            Size.Width = 208.000000000000000000\n            Size.Height = 24.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n          object Label5: TLabel\n            Tag = 1\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 68.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.HorzAlign = Center\n            Text = 'Remembers what user said earlier in the conversation'\n            TabOrder = 3\n          end\n          object Label6: TLabel\n            Tag = 1\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 147.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 66.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.HorzAlign = Center\n            Text = 'Allows user to provide follow-up corrections'\n            TabOrder = 1\n          end\n          object Label9: TLabel\n            Tag = 1\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 227.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 64.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.HorzAlign = Center\n            Text = 'Trained to decline inappropriate requests'\n            TabOrder = 0\n          end\n          object Layout6: TLayout\n            Align = Top\n            Locked = True\n            Position.Y = 30.000000000000000000\n            Size.Width = 208.000000000000000000\n            Size.Height = 31.000000000000000000\n            Size.PlatformDefault = False\n            TabOrder = 2\n            object Label1: TLabel\n              Align = Center\n              AutoSize = True\n              StyledSettings = [Family, Style]\n              Locked = True\n              Size.Width = 92.000000000000000000\n              Size.Height = 24.000000000000000000\n              Size.PlatformDefault = False\n              TextSettings.Font.Size = 18.000000000000000000\n              TextSettings.FontColor = xFFECECF1\n              TextSettings.HorzAlign = Center\n              TextSettings.WordWrap = False\n              Text = 'Capabilities'\n              TabOrder = 3\n              object PathCapCompact: TPath\n                Align = Left\n                Data.Path = {\n                  340000000000000085250B413C4A253D0200000096890E41D32E063E02000000\n                  2E7F1041B0AFB53E02000000F1E30F415A0D153F010000006B7101411500C040\n                  0100000097FF47411500C040020000005F074B411500C04002000000CDCC4D41\n                  A06CC34002000000BB274F4145D8C8400200000041825041E943CE4002000000\n                  B537504183C0D44002000000FE654E419A99D940010000008ECCDC40CDCC6C41\n                  02000000855FD8401AC06F4102000000857CD04007CE70410200000063B4C940\n                  865A6F410200000042ECC2406DE76D41020000001101BF4054526A4102000000\n                  8B37C0404FAF664101000000971CDD40F6FF0F4101000000D6FF1F40F6FF0F41\n                  0200000009E11340F6FF0F41020000004FCC0840B0490E4102000000BF600340\n                  DE930B41020000000CEAFB3F0BDE0841020000000B41FE3FBE9F054102000000\n                  3C66064033330341010000007099014180D64C3E02000000F4CF03410C01803C\n                  0200000074C10741EF264EBD0200000085250B413C4A253D0300000085250B41\n                  3C4A253D00000000D6FF5F400000004101000000ACFFEF400000004102000000\n                  BCB3F4400000004102000000C32AF940D9080141020000000135FC4037D40241\n                  020000003E3FFF408A9F044102000000F1460041DAFE064102000000F7C7FF40\n                  A6500941010000007D91EA401FF448410100000097FF37410000E04001000000\n                  ACFFEF400000E04002000000B24BEB400000E04002000000AAD4E6404EEEDD40\n                  020000006DCAE3409357DA40020000002FC0E040ECC0D640020000008B71DF40\n                  4B02D240020000007637E040B35ECD4001000000F06DF540D72F1C4001000000\n                  D6FF5F400000004103000000D6FF5F4000000041}\n                Fill.Color = xFFECECF1\n                Locked = True\n                Margins.Left = -35.000000000000000000\n                Position.X = -35.000000000000000000\n                Size.Width = 24.000000000000000000\n                Size.Height = 24.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n          end\n        end\n        object LayoutLimitationsTitle: TLayout\n          Align = Client\n          Locked = True\n          Size.Width = 208.000000000000000000\n          Size.Height = 319.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          object PathLimFull: TPath\n            Align = MostTop\n            Data.Path = {\n              4E00000000000000000080410000D04102000000AF536E410000D04102000000\n              0000604129D6C84102000000000060410000C0410200000000006041D729B741\n              02000000AF536E410000B04102000000000080410000B0410200000028D68841\n              0000B0410200000000009041D729B74102000000000090410000C04102000000\n              0000904129D6C8410200000029D688410000D04102000000000080410000D041\n              03000000000080410000D04100000000000080410000C0410300000000008041\n              0000C04100000000000080410000A04102000000D72977410000A04102000000\n              00007041146B9C41020000000000704100009841010000000000704100003041\n              0200000000007041D729274102000000D8297741000020410200000000008041\n              0000204102000000146B8441000020410200000000008841D729274102000000\n              00008841000030410100000000008841000098410200000000008841146B9C41\n              02000000146B84410000A04102000000000080410000A0410300000000008041\n              0000A04100000000713DDE410000F041010000003D0A87400000F04102000000\n              0D4D45400110F0410200000054C20140FC46EB41020000009E99B93FA570E341\n              0200000060485F3F54C7DB41020000005C6D593FA13BD241020000008AEBB13F\n              6766CA410100000052B8524148E16A4002000000527A6041A4D9064002000000\n              3DE77F4148BEC43F0200000093748C41256719400200000035BF9041724A2C40\n              020000006D479441348C484002000000D7A3964148E16A400100000048E1F441\n              6666CA41020000009734F941A03BD24102000000BF05F94153C7DB4102000000\n              6866F441A470E34102000000B7C7EF41FC46EB41020000005F56E7410210F041\n              02000000703DDE410000F04103000000713DDE410000F0410000000000008041\n              00008040020000000DD87841545F7F4002000000EB367241287E874002000000\n              48E16E41F7289440010000009A9949400000D241020000005AC93B4035DAD441\n              020000005AC93B40796DD841020000009A994940AE47DB4102000000D2ED5640\n              C222DE410200000038286F402FECDF4102000000CECC84400000E04101000000\n              713DDE410000E041020000009E8BE1412FECDF4102000000EB92E441C222DE41\n              02000000713DE641AE47DB410200000079F7E741796DD8410200000079F7E741\n              35DAD44102000000703DE6410000D241010000005C8F8841F628944002000000\n              8AE48641287E874002000000F9938341545F7F40020000000000804100008040\n              030000000000804100008040}\n            Fill.Color = xFFECECF1\n            Locked = True\n            Margins.Top = 2.000000000000000000\n            Margins.Bottom = 4.000000000000000000\n            Position.Y = 2.000000000000000000\n            Size.Width = 208.000000000000000000\n            Size.Height = 24.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n          object Label8: TLabel\n            Tag = 1\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 68.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.HorzAlign = Center\n            Text = 'May occasionally generate incorrect information'\n            TabOrder = 3\n          end\n          object Label7: TLabel\n            Tag = 1\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 147.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.HorzAlign = Center\n            Text = 'May occasionally produce harmful instructions or biased content'\n            TabOrder = 1\n          end\n          object Label10: TLabel\n            Tag = 1\n            Align = Top\n            StyledSettings = [Family, Style]\n            Margins.Left = 7.000000000000000000\n            Margins.Top = 7.000000000000000000\n            Margins.Right = 7.000000000000000000\n            Margins.Bottom = 7.000000000000000000\n            Position.X = 7.000000000000000000\n            Position.Y = 226.000000000000000000\n            Size.Width = 194.000000000000000000\n            Size.Height = 65.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_welcome'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xFFECECF1\n            TextSettings.HorzAlign = Center\n            Text = 'Limited knowledge of world and events after 2021'\n            TabOrder = 0\n          end\n          object Layout7: TLayout\n            Align = Top\n            Locked = True\n            Position.Y = 30.000000000000000000\n            Size.Width = 208.000000000000000000\n            Size.Height = 31.000000000000000000\n            Size.PlatformDefault = False\n            TabOrder = 2\n            object Label11: TLabel\n              Align = Center\n              AutoSize = True\n              StyledSettings = [Family, Style]\n              Locked = True\n              Size.Width = 87.000000000000000000\n              Size.Height = 24.000000000000000000\n              Size.PlatformDefault = False\n              TextSettings.Font.Size = 18.000000000000000000\n              TextSettings.FontColor = xFFECECF1\n              TextSettings.HorzAlign = Center\n              TextSettings.WordWrap = False\n              Text = 'Limitations'\n              TabOrder = 3\n              object PathLimCompact: TPath\n                Align = Left\n                Data.Path = {\n                  4E00000000000000000080410000D04102000000AF536E410000D04102000000\n                  0000604129D6C84102000000000060410000C0410200000000006041D729B741\n                  02000000AF536E410000B04102000000000080410000B0410200000028D68841\n                  0000B0410200000000009041D729B74102000000000090410000C04102000000\n                  0000904129D6C8410200000029D688410000D04102000000000080410000D041\n                  03000000000080410000D04100000000000080410000C0410300000000008041\n                  0000C04100000000000080410000A04102000000D72977410000A04102000000\n                  00007041146B9C41020000000000704100009841010000000000704100003041\n                  0200000000007041D729274102000000D8297741000020410200000000008041\n                  0000204102000000146B8441000020410200000000008841D729274102000000\n                  00008841000030410100000000008841000098410200000000008841146B9C41\n                  02000000146B84410000A04102000000000080410000A0410300000000008041\n                  0000A04100000000713DDE410000F041010000003D0A87400000F04102000000\n                  0D4D45400110F0410200000054C20140FC46EB41020000009E99B93FA570E341\n                  0200000060485F3F54C7DB41020000005C6D593FA13BD241020000008AEBB13F\n                  6766CA410100000052B8524148E16A4002000000527A6041A4D9064002000000\n                  3DE77F4148BEC43F0200000093748C41256719400200000035BF9041724A2C40\n                  020000006D479441348C484002000000D7A3964148E16A400100000048E1F441\n                  6666CA41020000009734F941A03BD24102000000BF05F94153C7DB4102000000\n                  6866F441A470E34102000000B7C7EF41FC46EB41020000005F56E7410210F041\n                  02000000703DDE410000F04103000000713DDE410000F0410000000000008041\n                  00008040020000000DD87841545F7F4002000000EB367241287E874002000000\n                  48E16E41F7289440010000009A9949400000D241020000005AC93B4035DAD441\n                  020000005AC93B40796DD841020000009A994940AE47DB4102000000D2ED5640\n                  C222DE410200000038286F402FECDF4102000000CECC84400000E04101000000\n                  713DDE410000E041020000009E8BE1412FECDF4102000000EB92E441C222DE41\n                  02000000713DE641AE47DB410200000079F7E741796DD8410200000079F7E741\n                  35DAD44102000000703DE6410000D241010000005C8F8841F628944002000000\n                  8AE48641287E874002000000F9938341545F7F40020000000000804100008040\n                  030000000000804100008040}\n                Fill.Color = xFFECECF1\n                Locked = True\n                Margins.Left = -35.000000000000000000\n                Position.X = -35.000000000000000000\n                Size.Width = 24.000000000000000000\n                Size.Height = 24.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n          end\n        end\n      end\n    end\n  end\n  object LayoutSend: TLayout\n    Align = MostBottom\n    Padding.Top = 10.000000000000000000\n    Padding.Bottom = 40.000000000000000000\n    Margins.Right = 11.000000000000000000\n    Position.Y = 686.000000000000000000\n    Size.Width = 995.000000000000000000\n    Size.Height = 100.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 1\n    OnResize = LayoutSendResize\n    OnResized = LayoutSendResize\n    object LineBorder: TLine\n      Align = Contents\n      Locked = True\n      HitTest = False\n      LineType = Top\n      Size.Width = 995.000000000000000000\n      Size.Height = 100.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Color = x33FFFFFF\n    end\n    object RectangleSendBG: TRectangle\n      Align = Contents\n      Fill.Kind = Gradient\n      Fill.Gradient.Points = <\n        item\n          Color = xFF343541\n          Offset = 0.217391297221183800\n        end\n        item\n          Color = x00353740\n          Offset = 1.000000000000000000\n        end>\n      Fill.Gradient.StartPosition.X = 0.500000000000000000\n      Fill.Gradient.StartPosition.Y = 1.000000000000000000\n      Fill.Gradient.StopPosition.X = 0.499999970197677600\n      Fill.Gradient.StopPosition.Y = 0.000000000000000000\n      Locked = True\n      HitTest = False\n      Size.Width = 995.000000000000000000\n      Size.Height = 100.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      object Label12: TLabel\n        Align = Bottom\n        AutoSize = True\n        StyledSettings = [Style]\n        Opacity = 0.699999988079071000\n        Margins.Bottom = 4.000000000000000000\n        Position.Y = 82.000000000000000000\n        Size.Width = 995.000000000000000000\n        Size.Height = 14.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 11.000000000000000000\n        TextSettings.FontColor = xAFFFFFFF\n        TextSettings.HorzAlign = Center\n        TextSettings.WordWrap = False\n        TextSettings.Trimming = None\n        Text = 'by HemulGM'\n        TabOrder = 0\n      end\n    end\n    object LayoutQuery: TLayout\n      Align = HorzCenter\n      Locked = True\n      HitTest = True\n      Padding.Top = 12.000000000000000000\n      Padding.Right = 16.000000000000000000\n      Padding.Bottom = 12.000000000000000000\n      Position.X = 113.000000000000000000\n      Position.Y = 10.000000000000000000\n      Size.Width = 768.000000000000000000\n      Size.Height = 50.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      object RectangleMemoBG: TRectangle\n        Align = Contents\n        Fill.Color = xFF40414F\n        Locked = True\n        HitTest = False\n        Margins.Left = 15.000000000000000000\n        Size.Width = 753.000000000000000000\n        Size.Height = 50.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Color = x3C000000\n        XRadius = 6.000000000000000000\n        YRadius = 6.000000000000000000\n      end\n      object MemoQuery: TMemo\n        Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]\n        DataDetectorTypes = []\n        StyledSettings = [Style]\n        TextSettings.Font.Size = 16.000000000000000000\n        TextSettings.FontColor = claWhite\n        TextSettings.WordWrap = True\n        OnChange = MemoQueryChange\n        OnChangeTracking = MemoQueryChange\n        Align = Top\n        Margins.Top = 2.000000000000000000\n        Position.X = 26.000000000000000000\n        Position.Y = 14.000000000000000000\n        Size.Width = 618.000000000000000000\n        Size.Height = 26.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'memostyle_clear'\n        TabOrder = 0\n        OnEnter = MemoQueryEnter\n        OnKeyUp = MemoQueryKeyUp\n        OnKeyDown = MemoQueryKeyDown\n        OnViewportPositionChange = MemoQueryViewportPositionChange\n        Viewport.Width = 608.000000000000000000\n        Viewport.Height = 26.000000000000000000\n        object LabelSendTip: TLabel\n          Align = Contents\n          StyledSettings = [Family, Style]\n          Opacity = 0.800000011920929000\n          Margins.Right = -200.000000000000000000\n          Size.Width = 201.000000000000000000\n          Size.Height = 21.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Size = 16.000000000000000000\n          TextSettings.FontColor = xFFACACBE\n          TextSettings.WordWrap = False\n          TextSettings.Trimming = None\n          Text = 'Send a message.'\n          TabOrder = 0\n        end\n      end\n      object LayoutSendControls: TLayout\n        Align = MostRight\n        Margins.Left = 4.000000000000000000\n        Position.X = 648.000000000000000000\n        Position.Y = 12.000000000000000000\n        Size.Width = 104.000000000000000000\n        Size.Height = 26.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 1\n        object LayoutSendCommons: TLayout\n          Align = Bottom\n          Size.Width = 104.000000000000000000\n          Size.Height = 26.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 2\n          object ButtonAudio: TButton\n            Align = Right\n            CanFocus = False\n            Hint = \n              'Submit an audio recording for recognition. Will be taken into ac' +\n              'count in the context of communication with GPT (Whisper)'\n            Position.X = 26.000000000000000000\n            Size.Width = 26.000000000000000000\n            Size.Height = 26.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_clearmini'\n            TabOrder = 3\n            ParentShowHint = False\n            ShowHint = True\n            OnClick = ButtonAudioClick\n            object Path8: TPath\n              Align = Center\n              Data.Path = {\n                19000000000000000000A0400000A84101000000000040400000A84101000000\n                0000404000003041010000000000A04000003041030000000000A0400000A841\n                00000000000030410000E04001000000000010410000E0400100000000001041\n                0000C84101000000000030410000C84103000000000030410000E04000000000\n                000088410000004001000000000070410000004001000000000070410000F041\n                01000000000088410000F041030000000000884100000040000000000000B841\n                00003041010000000000A84100003041010000000000A8410000A84101000000\n                0000B8410000A841030000000000B84100003041000000000000E8410000E040\n                010000000000D8410000E040010000000000D8410000C841010000000000E841\n                0000C841030000000000E8410000E040}\n              Fill.Color = xFFACACBE\n              Locked = True\n              HitTest = False\n              Size.Width = 14.000000000000000000\n              Size.Height = 14.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n          end\n          object ButtonSend: TButton\n            Align = Right\n            CanFocus = False\n            Hint = 'Send prompt'\n            Position.X = 78.000000000000000000\n            Size.Width = 26.000000000000000000\n            Size.Height = 26.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_clearmini'\n            TabOrder = 5\n            Text = 'ButtonSend'\n            OnClick = ButtonSendClick\n            object PathSend: TPath\n              Align = Center\n              Data.Path = {\n                2700000000000000D34D2E415A642340020000003A582A41DFCA034002000000\n                16BB20419307EE3F02000000B8D418412EDA064002000000CDBE1541CA090D40\n                02000000143E1341AC0C1740020000002DB211415964234001000000B4C80640\n                8B6C84410200000068EFED3F116088410200000059C503405D2E8D4102000000\n                876123407D288F4102000000BBB43140DA0D904102000000B3324240FC3E9041\n                02000000989951402DB28F41010000006666044195438441020000000F450B41\n                124883410200000004011041002480410200000000001041D122794101000000\n                00001041000030410200000000001041D729274102000000D829174100002041\n                0200000000002041000020410200000028D62841000020410200000000003041\n                D72927410200000000003041000030410100000000003041D122794102000000\n                1CFF2F4124248041020000002CBB34412C48834102000000DF993B41A0438441\n                01000000F0CC85412BB08F4102000000500C8A4189E7904102000000397A8E41\n                75728E410200000097B18F4114338A4102000000A23E90418646884102000000\n                EE0D9041FE3686410200000019298F41966C84410100000032522E41B0642340\n                03000000D34D2E415A64234003000000D34D2E415A642340}\n              Fill.Color = xFFACACBE\n              Locked = True\n              HitTest = False\n              Margins.Left = 2.000000000000000000\n              RotationAngle = 90.000000000000000000\n              Size.Width = 12.800000190734860000\n              Size.Height = 12.800000190734860000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              Visible = False\n              WrapMode = Fit\n            end\n            object PathAudio: TPath\n              Align = Center\n              Data.Path = {\n                4F0000000000000000004041000080410200000039B41C410000804102000000\n                00000041AE47634102000000000000410000404101000000000000410000C040\n                020000000000004148E172400200000039B41C41000000400200000000004041\n                0000004002000000C74B634100000040020000000000804148E1724002000000\n                000080410000C0400100000000008041000040410200000000008041AE476341\n                02000000C74B6341000080410200000000004041000080410300000000004041\n                00008041000000000000404100008040020000001D5A2E410000804002000000\n                0000204108AC9C4002000000000020410000C040010000000000204100004041\n                0200000000002041FCA95141020000001D5A2E41000060410200000000004041\n                0000604102000000E3A55141000060410200000000006041FCA9514102000000\n                000060410000404101000000000060410000C040020000000000604108AC9C40\n                02000000E3A55141000080400200000000004041000080400300000000004041\n                0000804000000000000098410000404101000000000098410000204102000000\n                00009841EA261741020000008B6C944100001041020000000000904100001041\n                0200000075938B41000010410200000000008841E92617410200000000008841\n                000020410100000000008841000040410200000000008841AC1C6C4102000000\n                AC1C6C41000088410200000000004041000088410200000054E3134100008841\n                020000000000E040AC1C6C41020000000000E04000004041010000000000E040\n                00002041020000000000E040EA261741020000002DB2D1400000104102000000\n                0000C0400000104102000000D34DAE4000001041020000000000A040E9261741\n                020000000000A04000002041010000000000A04000004041020000000000A040\n                EC51784102000000B29DF340BC7493410200000000003041295C974101000000\n                000030410000A04101000000000000410000A04102000000D34DEE400000A041\n                020000000000E0407593A341020000000000E0400000A841020000000000E040\n                8B6CAC4102000000D34DEE400000B04102000000000000410000B04101000000\n                000080410000B041020000008B6C84410000B04102000000000088418B6CAC41\n                02000000000088410000A84102000000000088417593A341020000008B6C8441\n                0000A04102000000000080410000A04101000000000050410000A04101000000\n                00005041295C97410200000093188341BC7493410200000000009841EC517841\n                020000000000984100004041030000000000984100004041}\n              Fill.Color = xFFACACBE\n              Locked = True\n              HitTest = False\n              Margins.Left = 2.000000000000000000\n              Size.Width = 15.000000000000000000\n              Size.Height = 15.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n            object PathStopRecord: TPath\n              Align = Center\n              Data.Path = {\n                1200000000000000000080410000C04001000000000000410000C04002000000\n                CDCCDC400000C040020000000000C040CDCCDC40020000000000C04000000041\n                010000000000C04000008041020000000000C040CDCC884102000000CDCCDC40\n                0000904102000000000000410000904101000000000080410000904102000000\n                CDCC8841000090410200000000009041CDCC8841020000000000904100008041\n                0100000000009041000000410200000000009041CDCCDC4002000000CDCC8841\n                0000C04002000000000080410000C04003000000000080410000C040}\n              Fill.Color = xFFACACBE\n              Locked = True\n              HitTest = False\n              Margins.Left = 2.000000000000000000\n              RotationAngle = 90.000000000000000000\n              Size.Width = 13.000000000000000000\n              Size.Height = 13.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n          end\n          object ButtonImage: TButton\n            Align = Right\n            CanFocus = False\n            Hint = 'Image generation mode on demand (DALL-E)'\n            Position.X = 52.000000000000000000\n            Size.Width = 26.000000000000000000\n            Size.Height = 26.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_clearmini'\n            TabOrder = 4\n            Text = 'ButtonSend'\n            OnClick = ButtonImageClick\n            object RectangleImageMode: TRectangle\n              Align = Client\n              Fill.Kind = None\n              Locked = True\n              HitTest = False\n              Size.Width = 26.000000000000000000\n              Size.Height = 26.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Color = xFFACACBE\n              Stroke.Thickness = 2.000000000000000000\n              XRadius = 4.000000000000000000\n              YRadius = 4.000000000000000000\n              ParentShowHint = False\n              ShowHint = True\n            end\n            object PathImage: TPath\n              Align = Center\n              Data.Path = {\n                44000000000000000000B84300006043020000000040C5430000604302000000\n                0000D04300804A43020000000000D04300003043020000000000D04300801543\n                020000000040C54300000043020000000000B843000000430200000000C0AA43\n                00000043020000000000A04300801543020000000000A0430000304302000000\n                0000A04300804A430200000000C0AA4300006043020000000000B84300006043\n                030000000000B84300006043000000000000E243000080420100000000007042\n                00008042020000009A9931420000804202000000000000426666994202000000\n                000000429A99B84201000000000000429AD9D143020000000000004267A6D943\n                020000009A9931420000E04302000000000070420000E043010000000000E243\n                0000E04302000000CDCCE9430000E043020000000000F04366A6D94302000000\n                0000F0439AD9D143010000000000F0439A99B842020000000000F04366669942\n                02000000CDCCE94300008042020000000000E24300008042030000000000E243\n                00008042000000003373AE439AD982430200000033F3AC439A19814302000000\n                66A6AA4301807F4302000000CD0CA84301807F43020000000080A54301807F43\n                0200000033B3A34334F380430200000067A6A1439A99824301000000CD4C9843\n                00808A43020000009A59964366E68B4302000000CDCC94439AD98C4302000000\n                CD8C92439AD98C4302000000676690439AD98C430200000033738E43CD0C8C43\n                02000000CD0C8D43CDCC8A4302000000CD8C8C439A598A430200000067A68B43\n                008089430200000067E68A4300C088430100000000006043CD4C574302000000\n                00005C4333B352430200000000005643CDCC4F4302000000CD4C4F43CDCC4F43\n                020000009A994843CDCC4F4302000000676642439A1953430200000000803E43\n                9A99574301000000000080429A19B84301000000000080426666D74202000000\n                00008242CCCCC942020000009A998C420000C0420200000033339A420000C042\n                010000006766D9430000C042020000009AD9DC430000C0420200000067A6DF43\n                3333CA42020000009AD9DF430000D842010000000000E0433333B84301000000\n                3373AE439AD98243030000003373AE439AD98243}\n              Fill.Color = xFFDDDDE4\n              Locked = True\n              HitTest = False\n              Margins.Left = 2.000000000000000000\n              Size.Width = 12.800000190734860000\n              Size.Height = 12.800000190734860000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n          end\n          object LabelTyping: TLabel\n            Align = MostLeft\n            StyledSettings = [Style]\n            Margins.Left = 4.000000000000000000\n            Position.X = 4.000000000000000000\n            Size.Width = 20.000000000000000000\n            Size.Height = 26.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Size = 20.000000000000000000\n            TextSettings.FontColor = xFFACACBE\n            TextSettings.HorzAlign = Center\n            TextSettings.WordWrap = False\n            TextSettings.Trimming = None\n            Text = '...'\n            TabOrder = 2\n          end\n        end\n      end\n      object LayoutChatSettings: TLayout\n        Align = MostLeft\n        Locked = True\n        Margins.Left = -15.000000000000000000\n        Margins.Right = 15.000000000000000000\n        Position.X = -15.000000000000000000\n        Position.Y = 12.000000000000000000\n        Size.Width = 26.000000000000000000\n        Size.Height = 26.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 2\n        object ButtonSettings: TButton\n          Align = Bottom\n          CanFocus = False\n          Hint = 'Current chat settings'\n          Size.Width = 26.000000000000000000\n          Size.Height = 26.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'ButtonTranslate'\n          OnClick = ButtonSettingsClick\n          object Path9: TPath\n            Align = Center\n            Data.Path = {\n              FF0000000000000098CCA24152C40E41010000009EDE9F41D8810B4102000000\n              4B6A9F413F000B4102000000F2309F413EBF0A4102000000A1F89E41DD7B0A41\n              0200000052C99C41CCDD07410200000013F29A411040044102000000029A9941\n              EDD8FF40020000006677994105FAFE4002000000D65699414D10FE4002000000\n              121499415B42FC400200000083D19841E674FA4002000000B8AF98411A8BF940\n              0200000097909841ADA3F84002000000295C97411AA3EF40020000003FB59641\n              D49AE5400200000036AB9641D864DB400200000030AA96410B5EDA4002000000\n              65AA96419851D94002000000A5AC9641B83BD7400100000064BB9641FD9FC940\n              02000000BDD2964117D9B340020000009EDE964114EDA84002000000A01A9641\n              B41F9F4002000000C06C9541BE6A964002000000BA499441D4658E4002000000\n              05C592418D97874002000000B90D914164CC7F400200000077AD8E415FD27440\n              02000000EEEB89418AE55E4001000000A1F885414FAF4C4002000000933A8141\n              35D2364002000000AEB67D41ACE22B400200000043AD78416BB7274002000000\n              EF3874413507244002000000BE9F6F41F432244002000000832F6B415A2F2840\n              02000000A52C664125AF2C4002000000567D614196E73740020000005C205841\n              5C554E40010000006F125841696F4E40010000004469524187FE5B4002000000\n              4D84514164235E400200000062105141F4375F4002000000499D504161376040\n              020000005F294C414F1E6A400200000027314741F6976F400200000065194241\n              683F704002000000539641414850704002000000621041414850704002000000\n              530540414850704002000000E7FB3E4148507040020000003B703E4148507040\n              0200000029ED3D41683F704002000000F2D238414E976F4002000000DCD73341\n              F4156A40020000004E622F41B32460400200000035EF2E4120245F4002000000\n              567D2E41450D5E4002000000F6972D41C9E55B400100000060E5274161374E40\n              02000000AF771E41369337400200000014BF1941C93C2C400200000054B51441\n              6BB72740020000004F4010416BB72340020000004FA30B41139B234002000000\n              A42A07416957274002000000261E0241478F2B4002000000A1BEFA409F933640\n              0200000037C3E740249C4C400100000097ADE7404FAF4C4001000000AE12D840\n              A3CC5E400100000071E6D740B4025F4002000000DB16C54099D8744002000000\n              3FA9BB4043CA7F4002000000BADAB440758E87400200000068D0AE40EE5A8E40\n              02000000984CAA40A75C964002000000C898A740B70B9F4002000000C68AA440\n              72DCA8400200000078B4A44085CEB34002000000AE12A540B8AFC94001000000\n              404DA5408846D740020000001956A5404755D940020000008065A540185BDA40\n              02000000A661A540355EDB4002000000D23AA5408599E540020000006896A240\n              09A7EF40020000006EC09D40B4ABF840020000000B469D400490F94002000000\n              27C29C405474FA4002000000B2BA9B40603CFC400200000014B39A40D504FE40\n              020000005D339A40C0E7FE4002000000B9AA994009C4FF40020000007C449440\n              793B04410200000055DE8C40A9DE07410200000016138440D47D0A4102000000\n              6E3483403AC00A4102000000BA49824015000B41020000009A7C8040D67F0B41\n              0100000067D569408DB40E410200000047554340090A14410200000072163040\n              5FB516410200000077152240CD811A4102000000D9B1154016DE1D4102000000\n              04560C4051DA214102000000959F0640F9312641020000006F2A0040371A2B41\n              02000000BF2B0040D49A30410200000078450040A69B3B4101000000475A0040\n              6B9A444102000000AC73004066884F410200000092960040C5FE544102000000\n              7C0F07406ADE5941020000005CC90C40492E5E4102000000A9131640DD246241\n              020000006B652240B37B6541020000003F5230405B4269410200000018604340\n              79E96B410200000057956940C139714101000000314280407F6A744102000000\n              D23582405AF57441020000003C318340C13975410200000029228440AA827541\n              02000000EDD88C40FF21784102000000403094408FC27B4102000000B18A9940\n              DB0A804102000000B81E9A40A846804102000000DAAC9A40B684804102000000\n              1DC99B400601814102000000C6E19C407F7B81410200000061719D40BBB88141\n              0200000038F39D402BF6814102000000BEA4A240E62E8441020000000F28A540\n              E9A6864102000000E353A540FC29894102000000A358A540696F894102000000\n              A054A540A8B58941020000000A4BA540F8428A4101000000AE12A54088858D41\n              02000000D0B3A440AA02934102000000728AA440F2C19541020000000A9DA740\n              E937984102000000F354AA402C659A4102000000F8DFAE4066669C4102000000\n              BBF2B440021A9E410200000014D0BB405906A041020000006154C5406065A141\n              02000000AF5AD8400523A441010000002827E8407969A64102000000C91FFB40\n              4625A941020000009F4D0241AA82AA4102000000CB5607413108AB4102000000\n              53CB0B41287EAB4102000000ED641041A779AB41020000005CD5144110FAAA41\n              02000000C9D91941E269AA41020000003B8D1E41A301A9410200000041F12741\n              C431A641010000006B9A2D410080A44102000000CC7F2E41303BA44102000000\n              1FF42E41C818A44102000000CF662F41D5F8A34102000000BADA334102BCA241\n              02000000B7D13841E10BA2410200000079E93D41FDF6A141020000008B6C3E41\n              F1F4A141020000007CF23E41F1F4A141020000008BFD3F41F1F4A14102000000\n              6C094141F1F4A14102000000F38E4141F1F4A141020000006F124241FDF6A141\n              02000000A52C4741150CA24102000000D42B4C41D3BCA2410200000062A15041\n              E1FAA34102000000BC055141F016A441020000007F6A51413F35A44102000000\n              091B52414B6AA44101000000F31F5841BB38A64102000000B98D6141500DA941\n              02000000FE436641FD76AA4102000000D34D6B41C807AB41020000008FC26F41\n              C887AB4102000000AA607441E78CAB41020000007FD978418115AB4102000000\n              60E57D418A8EAA41020000005B538141432DA941020000009D1186418B6CA641\n              010000005F078A412720A4410200000002BC8E41F764A14102000000F6179141\n              5906A04102000000C7CB9241DA1B9E4102000000704E9441DC689C4102000000\n              D26F9541A7689A4102000000AC1C9641D33C984102000000D3DE964136CD9541\n              0200000026D396411E16934102000000CDBB9641F9B18D4101000000A5AC9641\n              E02D8A410200000065AA964130AA89410200000030AA9641A768894102000000\n              36AB9641F027894102000000D7B49641FC98864102000000235B97414D158441\n              02000000979098412CD48141020000004FAF9841099B8141020000007DD09841\n              7C6181410200000006129941D2EF804102000000F8539941F47D804102000000\n              2B76994105458041020000005F989941ED0D804102000000DEF19A4127C27B41\n              02000000C7CB9C414F1E784102000000C5FE9E41FA7E754102000000A8359F41\n              713D754102000000636E9F41C5FE744102000000D3DE9F414182744101000000\n              B7E29F41917E74410100000011C7A241BA497141020000002497A74188F46B41\n              020000003400AA4117486941020000004FC0AB41B37B654102000000CD4CAD41\n              8A1F624102000000CF77AE4174245E4102000000B22EAF4136CD594102000000\n              1CFCAF4157EC54410200000078FAAF41EB734F410200000066F7AF41DE934441\n              01000000BCF4AF41F1633B410200000076F1AF418E75304102000000D2EFAF41\n              97FF2A4102000000C520AF41F31F2641020000007969AE4114D0214102000000\n              773EAD418AD91D410200000039B4AB4175821A410200000032F7A941DEBC1641\n              020000007B94A7418C1514410200000048D0A241CEC70E410100000098CCA241\n              52C40E410300000098CCA24152C40E41000000005A0100410000404102000000\n              5A0100417958634102000000B7A81C4100008041020000003B01404100008041\n              020000001D5A634100008041020000009D00804179586341020000009D008041\n              00004041020000009D00804133A71C41020000001D5A6341ACFFFF4002000000\n              3B014041ACFFFF4002000000B7A81C41ACFFFF40020000005A01004133A71C41\n              020000005A01004100004041030000005A01004100004041}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object LayoutAudioRecording: TLayout\n        Align = Contents\n        Margins.Left = 26.000000000000000000\n        Margins.Top = 12.000000000000000000\n        Margins.Right = 16.000000000000000000\n        Margins.Bottom = 12.000000000000000000\n        Size.Width = 726.000000000000000000\n        Size.Height = 26.000000000000000000\n        Size.PlatformDefault = False\n        Visible = False\n        TabOrder = 3\n        object AnimatedImageRecording: TSkAnimatedImage\n          Align = Left\n          Size.Width = 60.000000000000000000\n          Size.Height = 26.000000000000000000\n          Size.PlatformDefault = False\n          Data = {\n            7B2276223A22352E372E38222C226672223A32392E3937303030313232303730\n            33312C226970223A302C226F70223A34312E303030303031363639393634322C\n            2277223A3136302C2268223A36342C226E6D223A22436F6D702031222C226464\n            64223A302C22617373657473223A5B5D2C226C6179657273223A5B7B22646464\n            223A302C22696E64223A312C227479223A342C226E6D223A22524543204F7574\n            6C696E6573222C227372223A312C226B73223A7B226F223A7B2261223A302C22\n            6B223A3130302C226978223A31317D2C2272223A7B2261223A302C226B223A30\n            2C226978223A31307D2C2270223A7B2261223A302C226B223A5B3130352E3538\n            2C33322E3734362C305D2C226978223A322C226C223A327D2C2261223A7B2261\n            223A302C226B223A5B2D31392E31372C2D362E332C305D2C226978223A312C22\n            6C223A327D2C2273223A7B2261223A302C226B223A5B3235312C3235312C3130\n            305D2C226978223A362C226C223A327D7D2C22616F223A302C22736861706573\n            223A5B7B227479223A226772222C226974223A5B7B22696E64223A302C227479\n            223A227368222C226978223A312C226B73223A7B2261223A302C226B223A7B22\n            69223A5B5B302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B2D302E\n            3337382C302E3538335D2C5B302C302E3837335D2C5B302E38322C302E363734\n            5D2C5B312E3531322C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B30\n            2C305D2C5B302C305D5D2C226F223A5B5B302C305D2C5B302C305D2C5B302C30\n            5D2C5B302E3736382C2D302E3334365D2C5B302E3337382C2D302E3538335D2C\n            5B302C2D312E32335D2C5B2D302E38322C2D302E3637345D2C5B302C305D2C5B\n            302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C305D5D2C2276\n            223A5B5B2D32362E30312C305D2C5B2D32332E31382C305D2C5B2D32332E3138\n            2C2D302E3132335D2C5B2D32352E3934392C2D352E3335335D2C5B2D32342E32\n            33312C2D362E3734365D2C5B2D32332E3636342C2D382E39335D2C5B2D32342E\n            3839342C2D31312E3738365D2C5B2D32382E3339322C2D31322E3739375D2C5B\n            2D33332E3134372C2D31322E3739375D2C5B2D33332E3134372C305D2C5B2D33\n            302E35312C305D2C5B2D33302E35312C2D342E3638355D2C5B2D32382E34312C\n            2D342E3638355D5D2C2263223A747275657D2C226978223A327D2C226E6D223A\n            2252222C226D6E223A224144424520566563746F72205368617065202D204772\n            6F7570222C226864223A66616C73657D2C7B22696E64223A312C227479223A22\n            7368222C226978223A322C226B73223A7B2261223A302C226B223A7B2269223A\n            5B5B302C305D2C5B302C305D2C5B2D302E3334332C2D302E3334365D2C5B302C\n            2D302E3630335D2C5B302E3336332C2D302E3333375D2C5B302E3636322C305D\n            2C5B302C305D5D2C226F223A5B5B302C305D2C5B302E3730392C305D2C5B302E\n            3334332C302E3334365D2C5B302C302E3539325D2C5B2D302E3336332C302E33\n            33375D2C5B302C305D2C5B302C305D5D2C2276223A5B5B2D33302E35312C2D31\n            302E3636315D2C5B2D32382E3339322C2D31302E3636315D2C5B2D32362E3831\n            352C2D31302E3134335D2C5B2D32362E332C2D382E3731395D2C5B2D32362E38\n            34352C2D372E3332365D2C5B2D32382E3338332C2D362E38325D2C5B2D33302E\n            35312C2D362E38325D5D2C2263223A747275657D2C226978223A327D2C226E6D\n            223A2252222C226D6E223A224144424520566563746F72205368617065202D20\n            47726F7570222C226864223A66616C73657D2C7B227479223A226D6D222C226D\n            6D223A312C226E6D223A224D657267652050617468732031222C226D6E223A22\n            4144424520566563746F722046696C746572202D204D65726765222C22686422\n            3A66616C73657D2C7B227479223A22666C222C2263223A7B2261223A302C226B\n            223A5B312C302E3239343131373634373035392C302E33363037383433313337\n            32352C315D2C226978223A347D2C226F223A7B2261223A302C226B223A313030\n            2C226978223A357D2C2272223A312C22626D223A302C226E6D223A2246696C6C\n            2031222C226D6E223A224144424520566563746F722047726170686963202D20\n            46696C6C222C226864223A66616C73657D2C7B227479223A227472222C227022\n            3A7B2261223A302C226B223A5B302C305D2C226978223A327D2C2261223A7B22\n            61223A302C226B223A5B302C305D2C226978223A317D2C2273223A7B2261223A\n            302C226B223A5B3130302C3130305D2C226978223A337D2C2272223A7B226122\n            3A302C226B223A302C226978223A367D2C226F223A7B2261223A302C226B223A\n            3130302C226978223A377D2C22736B223A7B2261223A302C226B223A302C2269\n            78223A347D2C227361223A7B2261223A302C226B223A302C226978223A357D2C\n            226E6D223A225472616E73666F726D227D5D2C226E6D223A2252222C226E7022\n            3A352C22636978223A322C22626D223A302C226978223A312C226D6E223A2241\n            44424520566563746F722047726F7570222C226864223A66616C73657D2C7B22\n            7479223A226772222C226974223A5B7B22696E64223A302C227479223A227368\n            222C226978223A312C226B73223A7B2261223A302C226B223A7B2269223A5B5B\n            302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C\n            305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C305D\n            2C5B302C305D5D2C226F223A5B5B302C305D2C5B302C305D2C5B302C305D2C5B\n            302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C305D2C5B302C\n            305D2C5B302C305D2C5B302C305D2C5B302C305D5D2C2276223A5B5B2D31332E\n            3531312C2D372E3631315D2C5B2D31382E3537332C2D372E3631315D2C5B2D31\n            382E3537332C2D31302E3636315D2C5B2D31322E3634392C2D31302E3636315D\n            2C5B2D31322E3634392C2D31322E3739375D2C5B2D32312E32312C2D31322E37\n            39375D2C5B2D32312E32312C305D2C5B2D31322E3633322C305D2C5B2D31322E\n            3633322C2D322E3131385D2C5B2D31382E3537332C2D322E3131385D2C5B2D31\n            382E3537332C2D352E3534365D2C5B2D31332E3531312C2D352E3534365D5D2C\n            2263223A747275657D2C226978223A327D2C226E6D223A2245222C226D6E223A\n            224144424520566563746F72205368617065202D2047726F7570222C22686422\n            3A66616C73657D2C7B227479223A22666C222C2263223A7B2261223A302C226B\n            223A5B312C302E3239343131373634373035392C302E33363037383433313337\n            32352C315D2C226978223A347D2C226F223A7B2261223A302C226B223A313030\n            2C226978223A357D2C2272223A312C22626D223A302C226E6D223A2246696C6C\n            2031222C226D6E223A224144424520566563746F722047726170686963202D20\n            46696C6C222C226864223A66616C73657D2C7B227479223A227472222C227022\n            3A7B2261223A302C226B223A5B302C305D2C226978223A327D2C2261223A7B22\n            61223A302C226B223A5B302C305D2C226978223A317D2C2273223A7B2261223A\n            302C226B223A5B3130302C3130305D2C226978223A337D2C2272223A7B226122\n            3A302C226B223A302C226978223A367D2C226F223A7B2261223A302C226B223A\n            3130302C226978223A377D2C22736B223A7B2261223A302C226B223A302C2269\n            78223A347D2C227361223A7B2261223A302C226B223A302C226978223A357D2C\n            226E6D223A225472616E73666F726D227D5D2C226E6D223A2245222C226E7022\n            3A332C22636978223A322C22626D223A302C226978223A322C226D6E223A2241\n            44424520566563746F722047726F7570222C226864223A66616C73657D2C7B22\n            7479223A226772222C226974223A5B7B22696E64223A302C227479223A227368\n            222C226978223A312C226B73223A7B2261223A302C226B223A7B2269223A5B5B\n            302C305D2C5B302E3430312C2D302E3337325D2C5B302E3831342C305D2C5B30\n            2E3431392C302E3633395D2C5B302C312E3338335D2C5B302C305D2C5B2D302E\n            3433372C302E36335D2C5B2D302E3837392C305D2C5B2D302E3339362C2D302E\n            3337325D2C5B2D302E3036352C2D302E3832365D2C5B302C305D2C5B302E3930\n            322C302E3739315D2C5B312E3437372C305D2C5B302E3830362C2D302E353031\n            5D2C5B302E3433342C2D302E3933375D2C5B302C2D312E32335D2C5B302C305D\n            2C5B2D302E39342C2D312E3130345D2C5B2D312E3634312C305D2C5B2D302E39\n            31372C302E3739315D2C5B2D302E312C312E3337375D5D2C226F223A5B5B2D30\n            2E3035392C302E3737395D2C5B2D302E3430312C302E3337325D2C5B2D302E39\n            30322C305D2C5B2D302E3431392C2D302E3633395D2C5B302C305D2C5B302E30\n            31322C2D312E3332345D2C5B302E3433362C2D302E36335D2C5B302E3830392C\n            305D2C5B302E3339362C302E3337325D2C5B302C305D2C5B2D302E3134312C2D\n            312E34335D2C5B2D302E3930322C2D302E3739315D2C5B2D312E3036362C305D\n            2C5B2D302E3830362C302E3530315D2C5B2D302E3433342C302E3933385D2C5B\n            302C305D2C5B302C312E3932385D2C5B302E39342C312E3130355D2C5B312E35\n            2C305D2C5B302E3931372C2D302E3739315D2C5B302C305D5D2C2276223A5B5B\n            2D332E3232362C2D342E3236335D2C5B2D332E3931362C2D322E3533365D2C5B\n            2D352E3733392C2D312E3937385D2C5B2D372E3732312C2D322E3933365D2C5B\n            2D382E33352C2D352E3936385D2C5B2D382E33352C2D362E3933355D2C5B2D37\n            2E3637372C2D392E3836365D2C5B2D352E3730342C2D31302E3831315D2C5B2D\n            332E3839382C2D31302E3235325D2C5B2D332E3230382C2D382E3435355D2C5B\n            2D302E3537312C2D382E3435355D2C5B2D322E3133362C2D31312E3738365D2C\n            5B2D352E3730342C2D31322E3937335D2C5B2D382E3531322C2D31322E323231\n            5D2C5B2D31302E3337312C2D31302E3036335D2C5B2D31312E3032312C2D362E\n            3831325D2C5B2D31312E3032312C2D362E3032395D2C5B2D392E3631312C2D31\n            2E3438315D2C5B2D352E3733392C302E3137365D2C5B2D322E3131342C2D312E\n            3031315D2C5B2D302E3538392C2D342E3236335D5D2C2263223A747275657D2C\n            226978223A327D2C226E6D223A2243222C226D6E223A22414442452056656374\n            6F72205368617065202D2047726F7570222C226864223A66616C73657D2C7B22\n            7479223A22666C222C2263223A7B2261223A302C226B223A5B312C302E323934\n            3131373634373035392C302E3336303738343331333732352C315D2C22697822\n            3A347D2C226F223A7B2261223A302C226B223A3130302C226978223A357D2C22\n            72223A312C22626D223A302C226E6D223A2246696C6C2031222C226D6E223A22\n            4144424520566563746F722047726170686963202D2046696C6C222C22686422\n            3A66616C73657D2C7B227479223A227472222C2270223A7B2261223A302C226B\n            223A5B302C305D2C226978223A327D2C2261223A7B2261223A302C226B223A5B\n            302C305D2C226978223A317D2C2273223A7B2261223A302C226B223A5B313030\n            2C3130305D2C226978223A337D2C2272223A7B2261223A302C226B223A302C22\n            6978223A367D2C226F223A7B2261223A302C226B223A3130302C226978223A37\n            7D2C22736B223A7B2261223A302C226B223A302C226978223A347D2C22736122\n            3A7B2261223A302C226B223A302C226978223A357D2C226E6D223A225472616E\n            73666F726D227D5D2C226E6D223A2243222C226E70223A332C22636978223A32\n            2C22626D223A302C226978223A332C226D6E223A224144424520566563746F72\n            2047726F7570222C226864223A66616C73657D5D2C226970223A302C226F7022\n            3A34312E303030303031363639393634322C227374223A302C22626D223A307D\n            2C7B22646464223A302C22696E64223A332C227479223A342C226E6D223A2253\n            68617065204C617965722032222C227372223A312C226B73223A7B226F223A7B\n            2261223A302C226B223A3130302C226978223A31317D2C2272223A7B2261223A\n            302C226B223A302C226978223A31307D2C2270223A7B2261223A302C226B223A\n            5B33312C33322C305D2C226978223A322C226C223A327D2C2261223A7B226122\n            3A302C226B223A5B302C302C305D2C226978223A312C226C223A327D2C227322\n            3A7B2261223A312C226B223A5B7B2269223A7B2278223A5B302E3636372C302E\n            3636372C302E3636375D2C2279223A5B312C312C315D7D2C226F223A7B227822\n            3A5B302E3333332C302E3333332C302E3333335D2C2279223A5B302C302C305D\n            7D2C2274223A302C2273223A5B3132372C3132372C3130305D7D2C7B2269223A\n            7B2278223A5B302E3636372C302E3636372C302E3636375D2C2279223A5B312C\n            312C315D7D2C226F223A7B2278223A5B302E3333332C302E3333332C302E3333\n            335D2C2279223A5B302C302C305D7D2C2274223A31302C2273223A5B3134372C\n            3134372C3130305D7D2C7B2274223A32302E303030303030383134363136372C\n            2273223A5B3132372C3132372C3130305D7D5D2C226978223A362C226C223A32\n            7D7D2C22616F223A302C22736861706573223A5B7B227479223A226772222C22\n            6974223A5B7B2264223A312C227479223A22656C222C2273223A7B2261223A30\n            2C226B223A5B32362E32352C32362E32355D2C226978223A327D2C2270223A7B\n            2261223A302C226B223A5B302C305D2C226978223A337D2C226E6D223A22456C\n            6C6970736520506174682031222C226D6E223A224144424520566563746F7220\n            5368617065202D20456C6C69707365222C226864223A66616C73657D2C7B2274\n            79223A22666C222C2263223A7B2261223A302C226B223A5B312C302E32393431\n            31373634373035392C302E3336303738343331333732352C315D2C226978223A\n            347D2C226F223A7B2261223A302C226B223A3130302C226978223A357D2C2272\n            223A312C22626D223A302C226E6D223A2246696C6C2031222C226D6E223A2241\n            44424520566563746F722047726170686963202D2046696C6C222C226864223A\n            66616C73657D2C7B227479223A227472222C2270223A7B2261223A302C226B22\n            3A5B302E3337352C302E3337355D2C226978223A327D2C2261223A7B2261223A\n            302C226B223A5B302C305D2C226978223A317D2C2273223A7B2261223A302C22\n            6B223A5B3130302C3130305D2C226978223A337D2C2272223A7B2261223A302C\n            226B223A302C226978223A367D2C226F223A7B2261223A302C226B223A313030\n            2C226978223A377D2C22736B223A7B2261223A302C226B223A302C226978223A\n            347D2C227361223A7B2261223A302C226B223A302C226978223A357D2C226E6D\n            223A225472616E73666F726D227D5D2C226E6D223A22456C6C69707365203122\n            2C226E70223A332C22636978223A322C22626D223A302C226978223A312C226D\n            6E223A224144424520566563746F722047726F7570222C226864223A66616C73\n            657D5D2C226970223A302C226F70223A34312E30303030303136363939363432\n            2C227374223A302C22626D223A307D2C7B22646464223A302C22696E64223A34\n            2C227479223A342C226E6D223A225368617065204C617965722031222C227372\n            223A312C226B73223A7B226F223A7B2261223A312C226B223A5B7B2269223A7B\n            2278223A5B302E3636375D2C2279223A5B315D7D2C226F223A7B2278223A5B30\n            2E3333335D2C2279223A5B305D7D2C2274223A302C2273223A5B3130305D7D2C\n            7B2274223A34302E303030303031363239323333342C2273223A5B305D7D5D2C\n            226978223A31317D2C2272223A7B2261223A302C226B223A302C226978223A31\n            307D2C2270223A7B2261223A302C226B223A5B33312C33322C305D2C22697822\n            3A322C226C223A327D2C2261223A7B2261223A302C226B223A5B302C302C305D\n            2C226978223A312C226C223A327D2C2273223A7B2261223A312C226B223A5B7B\n            2269223A7B2278223A5B302E3636372C302E3636372C302E3636375D2C227922\n            3A5B312C312C315D7D2C226F223A7B2278223A5B302E3333332C302E3333332C\n            302E3333335D2C2279223A5B302C302C305D7D2C2274223A302C2273223A5B31\n            32372C3132372C3130305D7D2C7B2274223A34302E3030303030313632393233\n            33342C2273223A5B3235302C3235302C3130305D7D5D2C226978223A362C226C\n            223A327D7D2C22616F223A302C22736861706573223A5B7B227479223A226772\n            222C226974223A5B7B2264223A312C227479223A22656C222C2273223A7B2261\n            223A302C226B223A5B32362E32352C32362E32355D2C226978223A327D2C2270\n            223A7B2261223A302C226B223A5B302C305D2C226978223A337D2C226E6D223A\n            22456C6C6970736520506174682031222C226D6E223A22414442452056656374\n            6F72205368617065202D20456C6C69707365222C226864223A66616C73657D2C\n            7B227479223A22666C222C2263223A7B2261223A302C226B223A5B312C302E32\n            39343131373634373035392C302E3336303738343331333732352C315D2C2269\n            78223A347D2C226F223A7B2261223A302C226B223A3130302C226978223A357D\n            2C2272223A312C22626D223A302C226E6D223A2246696C6C2031222C226D6E22\n            3A224144424520566563746F722047726170686963202D2046696C6C222C2268\n            64223A66616C73657D2C7B227479223A227472222C2270223A7B2261223A302C\n            226B223A5B302E3337352C302E3337355D2C226978223A327D2C2261223A7B22\n            61223A302C226B223A5B302C305D2C226978223A317D2C2273223A7B2261223A\n            302C226B223A5B3130302C3130305D2C226978223A337D2C2272223A7B226122\n            3A302C226B223A302C226978223A367D2C226F223A7B2261223A302C226B223A\n            3130302C226978223A377D2C22736B223A7B2261223A302C226B223A302C2269\n            78223A347D2C227361223A7B2261223A302C226B223A302C226978223A357D2C\n            226E6D223A225472616E73666F726D227D5D2C226E6D223A22456C6C69707365\n            2031222C226E70223A332C22636978223A322C22626D223A302C226978223A31\n            2C226D6E223A224144424520566563746F722047726F7570222C226864223A66\n            616C73657D5D2C226970223A302C226F70223A34312E30303030303136363939\n            3634322C227374223A302C22626D223A307D5D2C226D61726B657273223A5B5D\n            7D}\n        end\n        object LabelRecordingTime: TLabel\n          Align = Left\n          AutoSize = True\n          StyledSettings = [Family, Style]\n          Margins.Left = 10.000000000000000000\n          Margins.Right = 10.000000000000000000\n          Position.X = 70.000000000000000000\n          Size.Width = 26.000000000000000000\n          Size.Height = 26.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xFFECECF1\n          TextSettings.WordWrap = False\n          TextSettings.Trimming = None\n          Text = '0:00'\n          TabOrder = 1\n        end\n      end\n      object LayoutAttachments: TLayout\n        Align = MostTop\n        Position.X = 26.000000000000000000\n        Position.Y = 12.000000000000000000\n        Size.Width = 618.000000000000000000\n        Size.Height = 50.000000000000000000\n        Size.PlatformDefault = False\n        Visible = False\n        TabOrder = 4\n      end\n    end\n  end\n  object TimerTyping: TTimer\n    Enabled = False\n    Interval = 800\n    OnTimer = TimerTypingTimer\n    Left = 64\n    Top = 80\n  end\n  object OpenDialogAudio: TOpenDialog\n    Filter = \n      'Supported formats|*.m4a; *.mp3; *.webm; *.mp4; *.mpga; *.wav; *.' +\n      'mpeg'\n    Left = 64\n    Top = 202\n  end\n  object LayoutButtom: TLayout\n    Align = Bottom\n    Locked = True\n    Position.Y = 636.000000000000000000\n    Size.Width = 1006.000000000000000000\n    Size.Height = 50.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 5\n    object FlowLayoutActions: TFlowLayout\n      Align = Client\n      ClipChildren = True\n      HitTest = False\n      Padding.Left = 40.000000000000000000\n      Padding.Top = 6.000000000000000000\n      Padding.Right = 40.000000000000000000\n      Margins.Left = 20.000000000000000000\n      Margins.Right = 20.000000000000000000\n      Size.Width = 966.000000000000000000\n      Size.Height = 50.000000000000000000\n      Size.PlatformDefault = False\n      Justify = Center\n      JustifyLastLine = Center\n      FlowDirection = LeftToRight\n      HorizontalGap = 10.000000000000000000\n      VerticalGap = 10.000000000000000000\n      object ButtonContinue: TButton\n        Align = Center\n        Hint = 'Continue chat. Request an addition or continuation'\n        Size.Width = 112.000000000000000000\n        Size.Height = 38.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_continue'\n        TabOrder = 2\n        Text = 'Continue'\n        TextSettings.HorzAlign = Leading\n        OnClick = ButtonContinueClick\n        object ShadowEffect2: TShadowEffect\n          Distance = 0.001000000047497451\n          Direction = 45.000000000000000000\n          Softness = 0.600000023841857900\n          Opacity = 0.600000023841857900\n          ShadowColor = xFF343541\n        end\n      end\n      object ButtonExportImport: TButton\n        Align = Center\n        Hint = 'Import or export chat'\n        Size.Width = 156.000000000000000000\n        Size.Height = 38.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_import_export'\n        TabOrder = 1\n        Text = 'Import && Export'\n        OnClick = ButtonExportImportClick\n        object ShadowEffect3: TShadowEffect\n          Distance = 0.001000000047497451\n          Direction = 45.000000000000000000\n          Softness = 0.600000023841857900\n          Opacity = 0.600000023841857900\n          ShadowColor = xFF343541\n        end\n        object Rectangle2: TRectangle\n          Anchors = [akTop, akRight]\n          Fill.Color = xFFC40000\n          HitTest = False\n          Position.X = 127.000000000000000000\n          Position.Y = -3.000000000000000000\n          Size.Width = 37.000000000000000000\n          Size.Height = 13.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 4.000000000000000000\n          YRadius = 4.000000000000000000\n          object Label3: TLabel\n            Align = Client\n            StyledSettings = [Style]\n            Size.Width = 37.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Family = 'Roboto'\n            TextSettings.Font.Size = 9.000000000000000000\n            TextSettings.FontColor = claWhite\n            TextSettings.HorzAlign = Center\n            TextSettings.WordWrap = False\n            TextSettings.Trimming = None\n            Text = 'beta'\n            TabOrder = 0\n          end\n        end\n      end\n      object ButtonRetry: TButton\n        Align = Center\n        Hint = 'Resend request'\n        Size.Width = 103.000000000000000000\n        Size.Height = 38.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_retry'\n        TabOrder = 0\n        Text = '  Retry'\n        TextSettings.HorzAlign = Leading\n        OnClick = ButtonRetryClick\n        object ShadowEffect1: TShadowEffect\n          Distance = 0.001000000047497451\n          Direction = 45.000000000000000000\n          Softness = 0.600000023841857900\n          Opacity = 0.600000023841857900\n          ShadowColor = xFF343541\n        end\n      end\n    end\n    object LayoutScrollDown: TLayout\n      Align = Client\n      Locked = True\n      Padding.Top = 10.000000000000000000\n      Padding.Right = 30.000000000000000000\n      Padding.Bottom = 10.000000000000000000\n      Size.Width = 1006.000000000000000000\n      Size.Height = 50.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 0\n      object ButtonScrollDown: TButton\n        Align = Right\n        Hint = 'Scroll down'\n        Position.X = 946.000000000000000000\n        Position.Y = 10.000000000000000000\n        Size.Width = 30.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'button_scrolldown'\n        TabOrder = 0\n        Text = 'button_scrolldown'\n        OnClick = ButtonScrollDownClick\n      end\n    end\n  end\n  object TimerCheckRecording: TTimer\n    Enabled = False\n    OnTimer = TimerCheckRecordingTimer\n    Left = 64\n    Top = 144\n  end\n  object Rectangle1: TRectangle\n    Position.X = 20.000000000000000000\n    Position.Y = 70.000000000000000000\n    Size.Width = 190.000000000000000000\n    Size.Height = 97.000000000000000000\n    Size.PlatformDefault = False\n    Visible = False\n    object LabelTest: TLabel\n      Align = Client\n      Margins.Left = 4.000000000000000000\n      Margins.Top = 4.000000000000000000\n      Margins.Right = 4.000000000000000000\n      Margins.Bottom = 4.000000000000000000\n      Size.Width = 182.000000000000000000\n      Size.Height = 89.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.VertAlign = Leading\n      TextSettings.Trimming = None\n      Text = 'LabelTest'\n      TabOrder = 0\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameChat.pas",
    "content": "﻿unit ChatGPT.FrameChat;\n\ninterface\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Objects, FMX.Layouts, FMX.Memo.Types, FMX.Controls.Presentation,\n  FMX.Memo.Style, FMX.ScrollBox, FMX.Memo, OpenAI, OpenAI.Completions,\n  FMX.Edit.Style, ChatGPT.FrameMessage, ChatGPT.Classes, System.Threading,\n  FMX.Edit, FMX.ImgList, OpenAI.Chat, System.Generics.Collections, OpenAI.Audio,\n  OpenAI.Utils.ChatHistory, OpenAI.Images, ChatGPT.ChatSettings, System.JSON,\n  FMX.Effects, FMX.ListBox, System.Skia, FMX.Skia, ChatGPT.SoundRecorder,\n  FMX.InertialMovement, System.RTLConsts, OpenAI.Chat.Functions;\n\ntype\n  TButton = class(FMX.StdCtrls.TButton)\n  public\n    procedure SetBounds(X, Y, AWidth, AHeight: Single); override;\n  end;\n\n  TLabel = class(FMX.StdCtrls.TLabel)\n  public\n    procedure SetBounds(X, Y, AWidth, AHeight: Single); override;\n  end;\n\n  TFixedScrollCalculations = class(TScrollCalculations)\n  protected\n    procedure DoChanged; override;\n  end;\n\n  TVertScrollBox = class(FMX.Layouts.TVertScrollBox)\n  private\n    FViewPositionY: Single;\n    procedure SetViewPositionY(const Value: Single);\n  protected\n    function CreateAniCalculations: TScrollCalculations; override;\n  published\n    property ViewPositionY: Single read FViewPositionY write SetViewPositionY;\n  end;\n\n  TMemo = class(FMX.Memo.TMemo)\n  private\n    FViewPos: Single;\n    procedure SetViewPos(const Value: Single);\n  public\n    property ViewPos: Single read FViewPos write SetViewPos;\n  end;\n\n  TFrameChat = class(TFrame)\n    VertScrollBoxChat: TVertScrollBox;\n    LayoutSend: TLayout;\n    RectangleSendBG: TRectangle;\n    MemoQuery: TMemo;\n    LayoutQuery: TLayout;\n    RectangleMemoBG: TRectangle;\n    LayoutSendControls: TLayout;\n    LayoutTyping: TLayout;\n    TimerTyping: TTimer;\n    LayoutTypingContent: TLayout;\n    Layout3: TLayout;\n    RectangleBot: TRectangle;\n    Path3: TPath;\n    Layout4: TLayout;\n    RectangleIndicate: TRectangle;\n    LabelTyping: TLabel;\n    LineBorder: TLine;\n    LayoutWelcome: TLayout;\n    RectangleBG: TRectangle;\n    LabelWelcomeTitle: TLabel;\n    FlowLayoutWelcome: TFlowLayout;\n    LayoutExampleTitle: TLayout;\n    PathExaFull: TPath;\n    ButtonExample3: TButton;\n    ButtonExample2: TButton;\n    ButtonExample1: TButton;\n    LayoutCapabilitiesTitle: TLayout;\n    PathCapFull: TPath;\n    Label5: TLabel;\n    Label6: TLabel;\n    Label9: TLabel;\n    LayoutLimitationsTitle: TLayout;\n    PathLimFull: TPath;\n    Label8: TLabel;\n    Label7: TLabel;\n    Label10: TLabel;\n    Label12: TLabel;\n    LayoutSendCommons: TLayout;\n    ButtonAudio: TButton;\n    Path8: TPath;\n    ButtonSend: TButton;\n    PathSend: TPath;\n    OpenDialogAudio: TOpenDialog;\n    ButtonImage: TButton;\n    PathImage: TPath;\n    RectangleImageMode: TRectangle;\n    RectangleTypeBG: TRectangle;\n    LabelSendTip: TLabel;\n    Layout5: TLayout;\n    Label2: TLabel;\n    PathExaCompact: TPath;\n    Layout6: TLayout;\n    Label1: TLabel;\n    PathCapCompact: TPath;\n    Layout7: TLayout;\n    Label11: TLabel;\n    PathLimCompact: TPath;\n    LayoutChatSettings: TLayout;\n    ButtonSettings: TButton;\n    Path9: TPath;\n    LayoutButtom: TLayout;\n    ButtonRetry: TButton;\n    ShadowEffect1: TShadowEffect;\n    LayoutScrollDown: TLayout;\n    ButtonScrollDown: TButton;\n    PathAudio: TPath;\n    LayoutAudioRecording: TLayout;\n    AnimatedImageRecording: TSkAnimatedImage;\n    PathStopRecord: TPath;\n    TimerCheckRecording: TTimer;\n    LabelRecordingTime: TLabel;\n    ButtonContinue: TButton;\n    ShadowEffect2: TShadowEffect;\n    FlowLayoutActions: TFlowLayout;\n    ButtonExportImport: TButton;\n    ShadowEffect3: TShadowEffect;\n    Rectangle1: TRectangle;\n    LabelTest: TLabel;\n    Rectangle2: TRectangle;\n    Label3: TLabel;\n    LayoutAttachments: TLayout;\n    procedure LayoutSendResize(Sender: TObject);\n    procedure MemoQueryChange(Sender: TObject);\n    procedure ButtonSendClick(Sender: TObject);\n    procedure TimerTypingTimer(Sender: TObject);\n    procedure LayoutTypingResize(Sender: TObject);\n    procedure MemoQueryKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);\n    procedure LayoutWelcomeResize(Sender: TObject);\n    procedure FlowLayoutWelcomeResize(Sender: TObject);\n    procedure ButtonExample1Click(Sender: TObject);\n    procedure ButtonExample2Click(Sender: TObject);\n    procedure ButtonExample3Click(Sender: TObject);\n    procedure ButtonAudioClick(Sender: TObject);\n    procedure ButtonImageClick(Sender: TObject);\n    procedure ButtonSettingsClick(Sender: TObject);\n    procedure ButtonRetryClick(Sender: TObject);\n    procedure ButtonScrollDownClick(Sender: TObject);\n    procedure VertScrollBoxChatViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);\n    procedure TimerCheckRecordingTimer(Sender: TObject);\n    procedure ButtonExample1Tap(Sender: TObject; const Point: TPointF);\n    procedure ButtonExample2Tap(Sender: TObject; const Point: TPointF);\n    procedure ButtonExample3Tap(Sender: TObject; const Point: TPointF);\n    procedure MemoQueryKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);\n    procedure MemoQueryEnter(Sender: TObject);\n    procedure MemoQueryViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);\n    procedure ButtonContinueClick(Sender: TObject);\n    procedure ButtonExportImportClick(Sender: TObject);\n  private\n    FAPI: IOpenAI;\n    FChatId: string;\n    FPool: TThreadPool;\n    FTitle: string;\n    FMode: TWindowMode;\n    FIsTyping: Boolean;\n    FBuffer: TChatHistory;\n    FIsImageMode: Boolean;\n    FTemperature: Single;\n    FLastRequest: TProc;\n    FMenuItem: TListBoxItem;\n    FIsFirstMessage: Boolean;\n    FPresencePenalty: Single;\n    FModel: string;\n    FMaxTokens: Integer;\n    FMaxTokensQuery: Integer;\n    FFrequencyPenalty: Single;\n    FTopP: Single;\n    FAudioRecord: TAudioRecord;\n    FRecordingStartTime: TDateTime;\n    FOnNeedFuncList: TOnNeedFuncList;\n    FUseFunctions: Boolean;\n    FAutoExecFuncs: Boolean;\n    FOnTitleChanged: TNotifyEvent;\n    procedure DoOnUpdateChatItems;\n    function NewMessage(const Text: string; Role: TMessageKind; UseBuffer: Boolean = True; IsAudio: Boolean = False): TFrameMessage;\n    function NewMessageImage(Role: TMessageKind; Images: TArray<string>): TFrameMessage;\n    procedure ClearChat;\n    procedure SetTyping(const Value: Boolean);\n    procedure SetAPI(const Value: IOpenAI);\n    procedure SetChatId(const Value: string);\n    procedure ShowError(const Text: string);\n    procedure AppendMessages(Response: TChat); overload;\n    procedure AppendMessages(Response: TImageGenerations); overload;\n    procedure ScrollDown(Animate: Boolean = False);\n    procedure SetTitle(const Value: string);\n    procedure SetMode(const Value: TWindowMode);\n    procedure AppendAudio(Response: TAudioTranscriptionObject);\n    procedure SetIsImageMode(const Value: Boolean);\n    procedure SendRequestImage;\n    procedure SendRequestPrompt;\n    procedure SetTemperature(const Value: Single);\n    procedure RequestPrompt;\n    procedure RequestImage(const Prompt: string);\n    procedure RequestAudio(const AudioFile: string);\n    procedure SetLastRequest(const Value: TProc);\n    procedure SetMenuItem(const Value: TListBoxItem);\n    procedure SetFrequencyPenalty(const Value: Single);\n    procedure SetMaxTokens(const Value: Integer);\n    procedure SetMaxTokensQuery(const Value: Integer);\n    procedure SetModel(const Value: string);\n    procedure SetPresencePenalty(const Value: Single);\n    procedure ChatToUp;\n    procedure SetTopP(const Value: Single);\n    procedure FOnMessageDelete(Sender: TObject);\n    procedure StopRecording;\n    procedure StartRecording;\n    function GenerateAudioFileName: string;\n    procedure FOnStartRecord(Sender: TObject);\n    procedure UpdateSendControls;\n    procedure SetOnNeedFuncList(const Value: TOnNeedFuncList);\n    function GetFuncs: TArray<IChatFunction>;\n    procedure ProcFunction(Func: TChatFunctionCall);\n    procedure RequestFunc(FuncResult: string);\n    function NewMessageFunc(const FuncName, FuncArgs: string): TFrameMessage;\n    procedure FOnMessageTextUpdated(Sender: TObject; const MessageId, Text: string);\n    procedure FOnExecuteFunc(Sender: TObject; const FuncName, FuncArgs: string; Callback: TProc<Boolean, string>);\n    procedure ExecuteFunc(const FuncName, FuncArgs: string; Callback: TProc<Boolean, string>);\n    procedure SetUseFunctions(const Value: Boolean);\n    procedure SetAutoExecFuncs(const Value: Boolean);\n    procedure SetOnTitleChanged(const Value: TNotifyEvent);\n    procedure SendText;\n  public\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n    function MakeContentScreenshot: TBitmap;\n    function SaveAsJson: TJSONObject;\n    procedure LoadFromJson(JSON: TJSONObject);\n    property API: IOpenAI read FAPI write SetAPI;\n    property ChatId: string read FChatId write SetChatId;\n    property Title: string read FTitle write SetTitle;\n    property Mode: TWindowMode read FMode write SetMode;\n    property Temperature: Single read FTemperature write SetTemperature;\n    property MaxTokens: Integer read FMaxTokens write SetMaxTokens;\n    property MaxTokensQuery: Integer read FMaxTokensQuery write SetMaxTokensQuery;\n    property PresencePenalty: Single read FPresencePenalty write SetPresencePenalty;\n    property FrequencyPenalty: Single read FFrequencyPenalty write SetFrequencyPenalty;\n    property Model: string read FModel write SetModel;\n    property TopP: Single read FTopP write SetTopP;\n    property IsImageMode: Boolean read FIsImageMode write SetIsImageMode;\n    property LastRequest: TProc read FLastRequest write SetLastRequest;\n    property MenuItem: TListBoxItem read FMenuItem write SetMenuItem;\n    property IsFirstMessage: Boolean read FIsFirstMessage write FIsFirstMessage;\n    property OnNeedFuncList: TOnNeedFuncList read FOnNeedFuncList write SetOnNeedFuncList;\n    property UseFunctions: Boolean read FUseFunctions write SetUseFunctions;\n    property AutoExecFuncs: Boolean read FAutoExecFuncs write SetAutoExecFuncs;\n    property OnTitleChanged: TNotifyEvent read FOnTitleChanged write SetOnTitleChanged;\n    procedure Init;\n  end;\n\nconst\n  MAX_TOKENS = 1024;\n  MODEL_TOKENS_LIMIT = 4096;\n  ErrorHintTimeout = 'If the error is due to a timeout, you can increase the response timeout in the general program settings.';\n\nimplementation\n\nuses\n  FMX.Ani, System.Math, OpenAI.API, System.IOUtils, ChatGPT.Manager,\n  ChatGPT.Overlay, FMX.BehaviorManager, HGM.FMX.Ani, System.Net.HttpClient,\n  {$IFDEF ANDROID}\n  ChatGPT.Android, FMX.Platform.UI.Android,\n  {$ENDIF}\n  System.DateUtils, ChatGPT.ImportExport, FMX.Text;\n\n{$R *.fmx}\n\nfunction HumanTime(Value: TTime): string;\nvar\n  H, M, S, Ms: Word;\nbegin\n  DecodeTime(Value, H, M, S, Ms);\n  Result := '';\n  if H > 0 then\n    Result := Result + H.ToString + ' ч. ';\n  if M > 0 then\n    Result := Result + M.ToString + ' мин. ';\n  if S > 0 then\n    Result := Result + S.ToString + ' сек. ';\n  if Result.IsEmpty then\n    Result := Result + '< 1 сек. ';\nend;\n\nfunction SecondsToTime(Value: Double): TTime;\nbegin\n  Result := Value / SecsPerDay;\nend;\n\nprocedure TFrameChat.ShowError(const Text: string);\nbegin\n  TThread.Queue(nil,\n    procedure\n    begin\n      var Frame := NewMessage(Text, TMessageKind.Error, False);\n      Frame.IsError := True;\n    end);\nend;\n\nprocedure TFrameChat.AppendMessages(Response: TImageGenerations);\nbegin\n  try\n    var Images: TArray<string>;\n    SetLength(Images, Length(Response.Data));\n    for var i := 0 to High(Response.Data) do\n      Images[i] := Response.Data[i].Url;\n    NewMessageImage(TMessageKind.Assistant, Images);\n  finally\n    Response.Free;\n  end;\nend;\n\nfunction TFrameChat.NewMessageFunc(const FuncName, FuncArgs: string): TFrameMessage;\nbegin\n  ChatToUp;\n  LayoutWelcome.Visible := False;\n  Result := TFrameMessage.Create(VertScrollBoxChat);\n  Result.SetMode(FMode);\n  Result.Position.Y := VertScrollBoxChat.ContentBounds.Height;\n  Result.Parent := VertScrollBoxChat;\n  Result.Align := TAlignLayout.MostTop;\n  Result.Id := '';\n  Result.OnDelete := FOnMessageDelete;\n  Result.OnTextUpdated := FOnMessageTextUpdated;\n  TFrameMessage(Result).MessageRole := TMessageKind.Func;\n  TFrameMessage(Result).FuncName := FuncName;\n  TFrameMessage(Result).FuncArgs := FuncArgs;\n  TFrameMessage(Result).FuncState := TMessageFuncState.Wait;\n  TFrameMessage(Result).OnFuncExecute := FOnExecuteFunc;\n  Result.StartAnimate;\n  DoOnUpdateChatItems;\n  if AutoExecFuncs then\n    TFrameMessage(Result).ExecuteFunc;\nend;\n\nfunction TFrameChat.NewMessageImage(Role: TMessageKind; Images: TArray<string>): TFrameMessage;\nbegin\n  ChatToUp;\n  LayoutWelcome.Visible := False;\n  Result := TFrameMessage.Create(VertScrollBoxChat);\n  Result.SetMode(FMode);\n  Result.Position.Y := VertScrollBoxChat.ContentBounds.Height;\n  Result.Parent := VertScrollBoxChat;\n  Result.Align := TAlignLayout.MostTop;\n  Result.Id := '';\n  Result.OnDelete := FOnMessageDelete;\n  Result.OnTextUpdated := FOnMessageTextUpdated;\n  TFrameMessage(Result).MessageRole := Role;\n  TFrameMessage(Result).Images := Images;\n  Result.StartAnimate;\n  DoOnUpdateChatItems;\nend;\n\nprocedure TFrameChat.ExecuteFunc(const FuncName, FuncArgs: string; Callback: TProc<Boolean, string>);\nbegin\n  var Funcs := GetFuncs;\n  for var Item in Funcs do\n    if Item.Name = FuncName then\n    begin\n      TTask.Run(\n        procedure\n        begin\n          var FuncResult := '';\n          var ErrorText: string;\n          try\n            try\n              FuncResult := Item.Execute(FuncArgs);\n            except\n              on E: Exception do\n              begin\n                ErrorText := E.Message;\n                FuncResult := '';\n              end;\n            end;\n            TThread.Queue(nil,\n              procedure\n              begin\n                Callback(not FuncResult.IsEmpty, ErrorText);\n                if not FuncResult.IsEmpty then\n                begin\n                  FBuffer.NewFunc(FuncName, FuncResult, TGUID.NewGuid.ToString);\n                  RequestFunc(FuncResult);\n                end;\n              end);\n          finally\n            //\n          end;\n        end);\n      Exit;\n    end;\n  Callback(False, 'Function not found');\nend;\n\nprocedure TFrameChat.ProcFunction(Func: TChatFunctionCall);\nbegin\n  FBuffer.NewAsistantFunc(Func.Name, Func.Arguments, TGUID.NewGuid.ToString);\n  var Funcs := GetFuncs;\n  for var Item in Funcs do\n    if Item.Name = Func.Name then\n    begin\n      NewMessageFunc(Func.Name, Func.Arguments);\n      Exit;\n    end;\n  ShowError('Function with name \"' + Func.Name + '\" not found');\nend;\n\nprocedure TFrameChat.AppendMessages(Response: TChat);\nbegin\n  try\n    for var Item in Response.Choices do\n      if Item.FinishReason = TFinishReason.FunctionCall then\n        ProcFunction(Item.Message.FunctionCall)\n      else\n        NewMessage(Item.Message.Content, TMessageKind.Assistant);\n  finally\n    Response.Free;\n  end;\nend;\n\nprocedure TFrameChat.AppendAudio(Response: TAudioTranscriptionObject);\nbegin\n  try\n    NewMessage(Response.Text, TMessageKind.Assistant, True, True);\n  finally\n    Response.Free;\n  end;\nend;\n\nfunction TFrameChat.SaveAsJson: TJSONObject;\nbegin\n  Result := TJSONObject.Create;\n  try\n    var JArray := TJSONArray.Create;\n    Result.AddPair('chat_id', FChatId);\n    Result.AddPair('temperature', TJSONNumber.Create(FTemperature));\n    Result.AddPair('title', FTitle);\n    Result.AddPair('items', JArray);\n\n    Result.AddPair('frequency_penalty', TJSONNumber.Create(FrequencyPenalty));\n    Result.AddPair('presence_penalty', TJSONNumber.Create(PresencePenalty));\n    Result.AddPair('max_tokens', TJSONNumber.Create(MaxTokens));\n    Result.AddPair('max_tokens_query', TJSONNumber.Create(MaxTokensQuery));\n    Result.AddPair('top_p', TJSONNumber.Create(TopP));\n    Result.AddPair('model', Model);\n    Result.AddPair('is_image_mode', IsImageMode);\n    Result.AddPair('draft', MemoQuery.Text);\n    Result.AddPair('use_functions', UseFunctions);\n    Result.AddPair('auto_exec_funcs', AutoExecFuncs);\n\n    for var Control in VertScrollBoxChat.Content.Controls do\n      if Control is TFrameMessage then\n        if not TFrameMessage(Control).IsError then\n          if not (TFrameMessage(Control).MessageRole in [TMessageKind.Error, TMessageKind.Func]) then\n            JArray.Add(TFrameMessage(Control).ToJsonObject);\n  except\n    //\n  end;\nend;\n\nprocedure TFrameChat.FOnExecuteFunc(Sender: TObject; const FuncName, FuncArgs: string; Callback: TProc<Boolean, string>);\nbegin\n  ExecuteFunc(FuncName, FuncArgs, Callback);\nend;\n\nprocedure TFrameChat.FOnMessageDelete(Sender: TObject);\nvar\n  Frame: TFrameMessage absolute Sender;\nbegin\n  if not (Sender is TFrameMessage) then\n    Exit;\n  FBuffer.DeleteByTag(Frame.Id);\n  if VertScrollBoxChat.Content.ControlsCount <= 3 then\n    LayoutWelcome.Visible := True;\nend;\n\nprocedure TFrameChat.FOnMessageTextUpdated(Sender: TObject; const MessageId, Text: string);\nvar\n  Frame: TFrameMessage absolute Sender;\nbegin\n  if not (Sender is TFrameMessage) then\n    Exit;\n  FBuffer.SetContentByTag(MessageId, Text);\nend;\n\nfunction TFrameChat.GenerateAudioFileName: string;\nbegin\n  Result := TPath.Combine(Manager.AudioCacheFolder, 'audio_record' + FormatDateTime('DDMMYYYY_HHNNSS', Now) + '.wav');\nend;\n\nprocedure TFrameChat.Init;\nbegin\n  //Opacity := 0;\n  //TAnimator.AnimateFloat(Self, 'Opacity', 1);\n  {$IFNDEF MOBILE}\n  MemoQuery.SetFocus;\n  {$ENDIF}\n  TThread.ForceQueue(nil,\n    procedure\n    begin\n      MemoQuery.PrepareForPaint;\n      MemoQueryChange(nil);\n    end);\nend;\n\nprocedure TFrameChat.LoadFromJson(JSON: TJSONObject);\nbegin\n  var ItemCount: Integer := 0;\n  var LastRoleIsUser: Boolean := False;\n  if FChatId.IsEmpty then\n    FChatId := JSON.GetValue('chat_id', TGUID.NewGuid.ToString);\n  Title := JSON.GetValue('title', FTitle);\n  FTemperature := JSON.GetValue('temperature', FTemperature);\n  FrequencyPenalty := JSON.GetValue<Single>('frequency_penalty', FrequencyPenalty);\n  PresencePenalty := JSON.GetValue<Single>('presence_penalty', PresencePenalty);\n  TopP := JSON.GetValue<Single>('top_p', TopP);\n  Model := JSON.GetValue('model', Model);\n  MaxTokens := JSON.GetValue<Integer>('max_tokens', MaxTokens);\n  MaxTokensQuery := JSON.GetValue<Integer>('max_tokens_query', MaxTokensQuery);\n  IsImageMode := JSON.GetValue('is_image_mode', IsImageMode);\n  UseFunctions := JSON.GetValue('use_functions', UseFunctions);\n  AutoExecFuncs := JSON.GetValue('auto_exec_funcs', AutoExecFuncs);\n  MemoQuery.Text := JSON.GetValue('draft', MemoQuery.Text);\n  MemoQuery.SelStart := MemoQuery.Text.Length;\n  MemoQuery.SelLength := 0;\n\n  var JArray: TJSONArray;\n  if JSON.TryGetValue<TJSONArray>('items', JArray) then\n    for var JItem in JArray do\n    begin\n      var Item: TChatMessageBuild;\n      var IsAudio := JItem.GetValue('is_audio', False);\n\n      Item.Role := TMessageRole.FromString(JItem.GetValue('role', 'user'));\n      Item.Content := JItem.GetValue('content', '');\n      Item.Tag := JItem.GetValue('id', TGUID.NewGuid.ToString);\n      Item.Name := JItem.GetValue('name', '');\n      var Func: TFunctionCallBuild;\n      Func.Name := JItem.GetValue('func_name', '');\n      Func.Arguments := JItem.GetValue('func_args', '');\n      Item.FunctionCall := Func;\n\n      if not (IsAudio and (Item.Role = TMessageRole.User)) then\n        FBuffer.Add(Item);\n\n      var Frame := TFrameMessage.Create(VertScrollBoxChat);\n      Frame.Position.Y := VertScrollBoxChat.ContentBounds.Height;\n      VertScrollBoxChat.AddObject(Frame);\n      Frame.Align := TAlignLayout.MostTop;\n      case Item.Role of\n        TMessageRole.System:\n          Frame.MessageRole := TMessageKind.System;\n        TMessageRole.User:\n          Frame.MessageRole := TMessageKind.User;\n        TMessageRole.Assistant:\n          Frame.MessageRole := TMessageKind.Assistant;\n        TMessageRole.Func:\n          Frame.MessageRole := TMessageKind.Func;\n      end;\n      Frame.OnDelete := FOnMessageDelete;\n      Frame.OnTextUpdated := FOnMessageTextUpdated;\n      Frame.Id := Item.Tag;\n      Frame.Text := Item.Content;\n      Frame.IsAudio := IsAudio;\n      Frame.Images := JItem.GetValue<TArray<string>>('images', []);\n      Frame.FuncName := Item.FunctionCall.Name;\n      Frame.FuncArgs := Item.FunctionCall.Arguments;\n      Frame.FuncState := TMessageFuncState(JItem.GetValue('func_state', 0));\n      if not Frame.FuncName.IsEmpty then\n        Frame.OnFuncExecute := FOnExecuteFunc;\n      Frame.SetMode(FMode);\n      Frame.UpdateContentSize;\n      Inc(ItemCount);\n    end;\n  DoOnUpdateChatItems;\n  if ItemCount > 0 then\n  begin\n    LayoutWelcome.Visible := False;\n    IsFirstMessage := False;\n    ScrollDown;\n    if LastRoleIsUser then\n      LastRequest := RequestPrompt;\n  end;\nend;\n\nprocedure TFrameChat.ScrollDown(Animate: Boolean = False);\nbegin\n  VertScrollBoxChat.RecalcSize;\n  if Animate then\n    TAnimator.AnimateFloat(VertScrollBoxChat, 'ViewPositionY', VertScrollBoxChat.ContentBounds.Height - VertScrollBoxChat.Height, 1, TAnimationType.out, TInterpolationType.Circular)\n  else\n    VertScrollBoxChat.ViewportPosition := TPointF.Create(0, VertScrollBoxChat.ContentBounds.Height - VertScrollBoxChat.Height);\nend;\n\nfunction TFrameChat.MakeContentScreenshot: TBitmap;\n\n  function GetMaxBitmapRect: TRectF;\n  var\n    MaxDimensionSize: Integer;\n  begin\n    MaxDimensionSize := TCanvasManager.DefaultCanvas.GetAttribute(TCanvasAttribute.MaxBitmapSize);\n    Result := TRectF.Create(0, 0, MaxDimensionSize, MaxDimensionSize);\n  end;\n\nvar\n  SceneScale: Single;\n  BitmapRect: TRectF;\nbegin\n  if Scene <> nil then\n    SceneScale := Scene.GetSceneScale\n  else\n    SceneScale := 1;\n\n  // TBitmap has limitation of size. It's a max texture size. If we takes screenshot of control, which exceeds this\n  // limitation, we get \"Bitmap size to big\" exception. So we normalize size for avoiding it.\n  BitmapRect := TRectF.Create(0, 0, VertScrollBoxChat.Content.ScrollBox.ContentBounds.Width * SceneScale, VertScrollBoxChat.Content.ScrollBox.ContentBounds.Height * SceneScale);\n  BitmapRect := BitmapRect.PlaceInto(GetMaxBitmapRect);\n\n  Result := TBitmap.Create(Round(BitmapRect.Width), Round(BitmapRect.Height));\n  Result.BitmapScale := SceneScale;\n  Result.Clear(0);\n  if Result.Canvas.BeginScene then\n  try\n    VertScrollBoxChat.Content.PaintTo(Result.Canvas, TRectF.Create(0, 0, Result.Width / SceneScale, Result.Height / SceneScale));\n  finally\n    Result.Canvas.EndScene;\n  end;\nend;\n\nprocedure TFrameChat.ButtonSettingsClick(Sender: TObject);\nbegin\n  TFrameChatSettings.Execute(Self,\n    procedure(Frame: TFrameChatSettings)\n    begin\n      Frame.Mode := FMode;\n      Frame.TrackBarTemp.Value := Temperature * 10;\n      Frame.TrackBarPP.Value := PresencePenalty * 10;\n      Frame.TrackBarFP.Value := FrequencyPenalty * 10;\n      if MaxTokens <> 0 then\n        Frame.EditMaxTokens.Text := MaxTokens.ToString\n      else\n        Frame.EditMaxTokens.Text := '';\n      if MaxTokensQuery <> 0 then\n        Frame.EditQueryMaxToken.Text := MaxTokensQuery.ToString\n      else\n        Frame.EditQueryMaxToken.Text := '';\n      Frame.ComboEditModel.Text := Model;\n      Frame.TrackBarTopP.Value := TopP * 10;\n      Frame.SwitchUseFunctions.IsChecked := UseFunctions;\n      Frame.SwitchAutoExecFuncs.IsChecked := AutoExecFuncs;\n    end,\n    procedure(Frame: TFrameChatSettings; Success: Boolean)\n    begin\n      MemoQuery.SetFocus;\n      if not Success then\n        Exit;\n      Temperature := Frame.TrackBarTemp.Value / 10;\n      PresencePenalty := Frame.TrackBarPP.Value / 10;\n      FrequencyPenalty := Frame.TrackBarFP.Value / 10;\n      MaxTokens := StrToIntDef(Frame.EditMaxTokens.Text, 0);\n      MaxTokensQuery := StrToIntDef(Frame.EditQueryMaxToken.Text, 0);\n      TopP := Frame.TrackBarTopP.Value / 10;\n      Model := Frame.ComboEditModel.Text;\n      UseFunctions := Frame.SwitchUseFunctions.IsChecked;\n      AutoExecFuncs := Frame.SwitchAutoExecFuncs.IsChecked;\n    end);\nend;\n\nprocedure TFrameChat.ButtonAudioClick(Sender: TObject);\nbegin\n  if FIsTyping then\n    Exit;\n  {$IFNDEF ANDROID}\n  if not OpenDialogAudio.Execute then\n    Exit;\n  var AudioFile := OpenDialogAudio.FileName;\n  //MemoQuery.Text := '';\n  NewMessage(TPath.GetFileName(AudioFile), TMessageKind.User, False, True);\n  RequestAudio(AudioFile);\n  {$ELSE}\n  try\n    OpenFileDialog('*/*',\n      procedure(FilePath: string)\n      begin\n        //MemoQuery.Text := '';\n        NewMessage(TPath.GetFileName(FilePath), TMessageKind.User, False, True);\n        RequestAudio(FilePath);\n      end);\n  except\n    on E: Exception do\n      ShowError(E.Message);\n  end;\n  {$ENDIF}\nend;\n\nprocedure TFrameChat.ButtonContinueClick(Sender: TObject);\nbegin\n  RequestPrompt;\nend;\n\nprocedure TFrameChat.RequestAudio(const AudioFile: string);\nbegin\n  SetTyping(True);\n  ScrollDown;\n  LastRequest := nil;\n  TTask.Run(\n    procedure\n    begin\n      try\n        var Audio := API.Audio.CreateTranscription(\n          procedure(Params: TAudioTranscription)\n          begin\n            Params.&File(AudioFile);\n            Params.Temperature(Temperature / 2);\n            Params.Language('ru');\n          end);\n        TThread.Queue(nil,\n          procedure\n          begin\n            AppendAudio(Audio);\n          end);\n      except\n        on E: OpenAIException do\n        begin\n          ShowError(E.Message);\n          LastRequest :=\n            procedure\n            begin\n              RequestAudio(AudioFile);\n            end;\n        end;\n        on E: Exception do\n        begin\n          ShowError(E.Message);\n          LastRequest :=\n            procedure\n            begin\n              RequestAudio(AudioFile);\n            end;\n        end;\n      end;\n      TThread.Queue(nil,\n        procedure\n        begin\n          SetTyping(False);\n        end);\n    end, FPool);\nend;\n\nprocedure TFrameChat.ButtonExample1Click(Sender: TObject);\nbegin\n  if MemoQuery.Text.IsEmpty then\n    MemoQuery.Text := 'Explain quantum computing in simple terms';\nend;\n\nprocedure TFrameChat.ButtonExample1Tap(Sender: TObject; const Point: TPointF);\nbegin\n  ButtonExample1Click(Sender);\nend;\n\nprocedure TFrameChat.ButtonExample2Click(Sender: TObject);\nbegin\n  if MemoQuery.Text.IsEmpty then\n    MemoQuery.Text := 'Got any creative ideas for a 10 year old’s birthday?';\nend;\n\nprocedure TFrameChat.ButtonExample2Tap(Sender: TObject; const Point: TPointF);\nbegin\n  ButtonExample2Click(Sender);\nend;\n\nprocedure TFrameChat.ButtonExample3Click(Sender: TObject);\nbegin\n  if MemoQuery.Text.IsEmpty then\n    MemoQuery.Text := 'How do I make an HTTP request in Javascript?';\nend;\n\nprocedure TFrameChat.ButtonExample3Tap(Sender: TObject; const Point: TPointF);\nbegin\n  ButtonExample3Click(Sender);\nend;\n\nprocedure TFrameChat.ButtonExportImportClick(Sender: TObject);\nbegin\n  TFrameImportExport.Execute(Self,\n    procedure(Frame: TFrameImportExport)\n    begin\n      Frame.Mode := FMode;\n    end,\n    procedure(Frame: TFrameImportExport; Success: Boolean)\n    begin\n      MemoQuery.SetFocus;\n      if not Success then\n        Exit;\n      if Frame.RadioButtonExport.IsChecked then\n      begin\n        if Frame.EditExport.Text.EndsWith('.json') then\n        begin\n          var JSON := SaveAsJson;\n          if Assigned(JSON) then\n          try\n            TFile.WriteAllText(Frame.EditExport.Text, JSON.ToJSON, TEncoding.UTF8);\n          finally\n            JSON.Free;\n          end;\n        end\n        else\n        begin\n          var Stream := TFile.Create(Frame.EditExport.Text);\n          try\n            for var Control in VertScrollBoxChat.Content.Controls do\n              if Control is TFrameMessage then\n                if not TFrameMessage(Control).IsError then\n                begin\n                  var Buff := TEncoding.UTF8.GetBytes(TFrameMessage(Control).MessageRole.ToString + #13#10 + TFrameMessage(Control).Text + #13#10 + #13#10 + #13#10);\n                  Stream.WriteBuffer(Buff, Length(Buff));\n                end;\n          finally\n            Stream.Free;\n          end;\n        end;\n      end\n      else\n      begin\n        var JSON := TJSONObject.ParseJSONValue(TFile.ReadAllText(Frame.EditImport.Text, TEncoding.UTF8));\n        if Assigned(JSON) then\n        try\n          LoadFromJson(JSON as TJSONObject);\n        finally\n          JSON.Free;\n        end;\n      end;\n    end);\nend;\n\nprocedure TFrameChat.ButtonImageClick(Sender: TObject);\nbegin\n  IsImageMode := not IsImageMode;\nend;\n\nprocedure TFrameChat.ButtonRetryClick(Sender: TObject);\nbegin\n  if Assigned(FLastRequest) then\n    FLastRequest;\nend;\n\nprocedure TFrameChat.SendRequestImage;\nbegin\n  if FIsTyping then\n    Exit;\n  var Prompt := MemoQuery.Text;\n  if Prompt.IsEmpty then\n    Exit;\n  MemoQuery.Text := '';\n  NewMessage(Prompt, TMessageKind.User, False);\n  RequestImage(Prompt);\nend;\n\nprocedure TFrameChat.RequestImage(const Prompt: string);\nbegin\n  SetTyping(True);\n  ScrollDown;\n  LastRequest := nil;\n  TTask.Run(\n    procedure\n    begin\n      try\n        var Images := API.Image.Create(\n          procedure(Params: TImageCreateParams)\n          begin\n            Params.Prompt(Prompt);\n            Params.ResponseFormat(TImageResponseFormat.Url);\n            Params.Quality(TImageQuality.Standard);\n            //Params.N(4);\n            Params.Model('dall-e-3');\n            Params.Size(TImageSize.s1024x1024);\n            Params.User(FChatId);\n          end);\n        TThread.Queue(nil,\n          procedure\n          begin\n            AppendMessages(Images);\n          end);\n      except\n        on E: Exception do\n        begin\n          ShowError(E.Message);\n          LastRequest :=\n            procedure\n            begin\n              RequestImage(Prompt);\n            end;\n        end;\n      end;\n      TThread.Queue(nil,\n        procedure\n        begin\n          SetTyping(False);\n        end);\n    end, FPool);\nend;\n\nprocedure TFrameChat.SendRequestPrompt;\nbegin\n  if FIsTyping then\n    Exit;\n  var Prompt := MemoQuery.Text.Trim([' ', #13, #10]);\n  if Prompt.IsEmpty then\n    Exit;\n  MemoQuery.Text := '';\n  NewMessage(Prompt, TMessageKind.User);\n  if (not Prompt.StartsWith('/system ')) and (not Prompt.StartsWith('/assistant ')) and (not Prompt.StartsWith('/user ')) then\n    RequestPrompt;\nend;\n\nfunction TFrameChat.GetFuncs: TArray<IChatFunction>;\nbegin\n  if Assigned(FOnNeedFuncList) and FUseFunctions then\n    FOnNeedFuncList(Self, Result)\n  else\n    Result := [];\nend;\n\nfunction CreateTools(Funcs: TArray<IChatFunction>): TArray<TChatToolParam>;\nbegin\n  for var Item in Funcs do\n    Result := Result + [TChatToolFunctionParam.Create(Item)];\nend;\n\nprocedure TFrameChat.RequestFunc(FuncResult: string);\nbegin\n  SetTyping(True);\n  ScrollDown;\n  LastRequest := nil;\n  TTask.Run(\n    procedure\n    begin\n      try\n        var Funcs := GetFuncs;\n        var Completions := API.Chat.Create(\n          procedure(Params: TChatParams)\n          begin\n            if not Model.IsEmpty then\n              Params.Model(Model);\n            if PresencePenalty <> 0 then\n              Params.PresencePenalty(PresencePenalty);\n            if FrequencyPenalty <> 0 then\n              Params.FrequencyPenalty(FrequencyPenalty);\n            Params.Messages(FBuffer.ToArray);\n            if FBuffer.MaxTokensForQuery <> 0 then\n              Params.MaxTokens(FBuffer.MaxTokensForQuery);\n            Params.Temperature(Temperature);\n            if Length(Funcs) > 0 then\n            begin\n              Params.Tools(CreateTools(Funcs));\n              Params.ToolChoice(TChatToolChoiceParam.Auto);\n            end;\n            Params.User(FChatId);\n          end);\n        TThread.Queue(nil,\n          procedure\n          begin\n            AppendMessages(Completions);\n          end);\n      except\n        on E: OpenAIException do\n        begin\n          ShowError(E.Message);\n          LastRequest :=\n            procedure\n            begin\n              RequestFunc(FuncResult);\n            end;\n        end;\n        on E: Exception do\n        begin\n          ShowError(E.Message);\n          LastRequest :=\n            procedure\n            begin\n              RequestFunc(FuncResult);\n            end;\n        end;\n      end;\n      TThread.Queue(nil,\n        procedure\n        begin\n          SetTyping(False);\n        end);\n    end, FPool);\nend;\n\nprocedure TFrameChat.RequestPrompt;\nbegin\n  SetTyping(True);\n  ScrollDown;\n  LastRequest := nil;\n  TTask.Run(\n    procedure\n    begin\n      try\n        var Funcs := GetFuncs;\n        var Completions := API.Chat.Create(\n          procedure(Params: TChatParams)\n          begin\n            if not Model.IsEmpty then\n              Params.Model(Model);\n            if PresencePenalty <> 0 then\n              Params.PresencePenalty(PresencePenalty);\n            if FrequencyPenalty <> 0 then\n              Params.FrequencyPenalty(FrequencyPenalty);\n            Params.Messages(FBuffer.ToArray);\n            if FBuffer.MaxTokensForQuery <> 0 then\n              Params.MaxTokens(FBuffer.MaxTokensForQuery);\n            if Temperature <> 1 then\n              Params.Temperature(Temperature);\n            if Length(Funcs) > 0 then\n            begin\n              Params.Tools(CreateTools(Funcs));\n              Params.ToolChoice(TChatToolChoiceParam.Auto);\n            end;\n            Params.User(FChatId);\n          end);\n        TThread.Queue(nil,\n          procedure\n          begin\n            AppendMessages(Completions);\n          end);\n      except\n        on E: OpenAIException do\n        begin\n          ShowError(E.Message);\n          LastRequest := RequestPrompt;\n        end;\n        on E: Exception do\n        begin\n          if E is ENetHTTPClientException then\n            E.Message := E.Message + #13#10 + ErrorHintTimeout;\n          ShowError(E.Message);\n\n          LastRequest := RequestPrompt;\n        end;\n      end;\n      TThread.Queue(nil,\n        procedure\n        begin\n          SetTyping(False);\n        end);\n    end, FPool);\nend;\n\nprocedure TFrameChat.ButtonScrollDownClick(Sender: TObject);\nbegin\n  ScrollDown(True);\nend;\n\nprocedure TFrameChat.StopRecording;\nbegin\n  LayoutAudioRecording.Visible := False;\n  MemoQuery.Visible := True;\n  PathStopRecord.Visible := False;\n  PathAudio.Visible := True;\n  TimerCheckRecording.Enabled := False;\nend;\n\nprocedure TFrameChat.StartRecording;\nbegin\n  FAudioRecord.StartRecord(GenerateAudioFileName);\nend;\n\nprocedure TFrameChat.ButtonSendClick(Sender: TObject);\nbegin\n  if FAudioRecord.IsAvailableDevice then\n  begin\n    if FAudioRecord.IsMicrophoneRecording then\n    begin\n      FAudioRecord.StopRecord;\n      Exit;\n    end;\n  end;\n  if MemoQuery.Text.IsEmpty and FAudioRecord.IsAvailableDevice then\n    StartRecording\n  else\n    SendText;\nend;\n\nprocedure TFrameChat.SendText;\nbegin\n  if IsImageMode then\n    SendRequestImage\n  else\n    SendRequestPrompt;\nend;\n\nprocedure TFrameChat.ClearChat;\nbegin\n  LayoutTyping.Parent := nil;\n  LayoutWelcome.Parent := nil;\n  while VertScrollBoxChat.Content.ControlsCount > 0 do\n    VertScrollBoxChat.Content.Controls[0].Free;\n  LayoutTyping.Parent := VertScrollBoxChat;\n  LayoutWelcome.Parent := VertScrollBoxChat;\n  DoOnUpdateChatItems;\nend;\n\nprocedure TFrameChat.FOnStartRecord(Sender: TObject);\nbegin\n  FRecordingStartTime := Now;\n  TimerCheckRecording.Enabled := True;\n  LabelRecordingTime.Text := '';\n  LayoutAudioRecording.Visible := True;\n  MemoQuery.Visible := False;\n  PathStopRecord.Visible := True;\n  PathAudio.Visible := False;\nend;\n\nconstructor TFrameChat.Create(AOwner: TComponent);\nbegin\n  inherited;\n  FIsFirstMessage := True;\n  LastRequest := nil;\n  FAudioRecord := TAudioRecord.Create(Self);\n  FAudioRecord.OnStartRecord := FOnStartRecord;\n  FBuffer := TChatHistory.Create;\n  FBuffer.MaxTokensForQuery := MAX_TOKENS;\n  FBuffer.MaxTokensOfModel := MODEL_TOKENS_LIMIT;\n  FBuffer.AutoTrim := True;\n  FPool := TThreadPool.Create;\n  Temperature := 0.2;\n  Name := '';\n  VertScrollBoxChat.AniCalculations.Animation := True;\n  //VertScrollBoxChat.AniCalculations.Interval := 1;\n  VertScrollBoxChat.AniCalculations.Averaging := True;\n  {$IFDEF MOBILE}\n  VertScrollBoxChat.AniCalculations.BoundsAnimation := True;\n  {$ENDIF}\n\n  MemoQuery.ScrollAnimation := TBehaviorBoolean.True;\n  PathStopRecord.Visible := False;\n  PathAudio.Visible := False;\n  PathSend.Visible := True;\n  LayoutAudioRecording.Visible := False;\n\n  {$IFDEF MOBILE}\n  ButtonExample1.OnClick := nil;\n  ButtonExample2.OnClick := nil;\n  ButtonExample3.OnClick := nil;\n  //(MemoQuery.Presentation as TStyledMemo).NeedSelectorPoints := True;\n  ButtonExportImport.Visible := False;\n  {$ENDIF}\n\n  SetTyping(False);\n  ClearChat;\n  IsImageMode := False;\n  MemoQueryChange(nil);\n  MemoQuery.ApplyStyleLookup;\nend;\n\ndestructor TFrameChat.Destroy;\nbegin\n  FMenuItem := nil;\n  FPool.Free;\n  FBuffer.Free;\n  inherited;\nend;\n\nprocedure TFrameChat.DoOnUpdateChatItems;\nbegin\n  ButtonContinue.Visible := FBuffer.Count > 0;\nend;\n\nprocedure TFrameChat.FlowLayoutWelcomeResize(Sender: TObject);\nbegin\n  var W: Single := 0;\n  case Mode of\n    TWindowMode.Compact:\n      W := FlowLayoutWelcome.Width;\n    TWindowMode.Full:\n      W := Trunc(FlowLayoutWelcome.Width / FlowLayoutWelcome.ControlsCount);\n  end;\n  for var Control in FlowLayoutWelcome.Controls do\n    Control.Width := W;\n\n  var B: Single := 0;\n  for var Control in LayoutExampleTitle.Controls do\n    B := Max(B, Control.Position.Y + Control.Height + Control.Margins.Bottom);\n  if LayoutExampleTitle.Height <> B then\n    LayoutExampleTitle.Height := B;\n\n  B := 0;\n  for var Control in LayoutCapabilitiesTitle.Controls do\n    B := Max(B, Control.Position.Y + Control.Height + Control.Margins.Bottom);\n  if LayoutCapabilitiesTitle.Height <> B then\n    LayoutCapabilitiesTitle.Height := B;\n\n  B := 0;\n  for var Control in LayoutLimitationsTitle.Controls do\n    B := Max(B, Control.Position.Y + Control.Height + Control.Margins.Bottom);\n  if LayoutLimitationsTitle.Height <> B then\n    LayoutLimitationsTitle.Height := B;\n\n  B := 0;\n  for var Control in FlowLayoutWelcome.Controls do\n    B := Max(B, Control.Position.Y + Control.Height);\n\n  B := B + FlowLayoutWelcome.Position.Y;\n  if LayoutWelcome.Height <> B then\n    LayoutWelcome.Height := B;\nend;\n\nprocedure TFrameChat.LayoutSendResize(Sender: TObject);\nbegin\n  LayoutQuery.Width := Min(768, LayoutSend.Width - 48);\n  VertScrollBoxChat.Padding.Bottom := LayoutSend.Height + LayoutButtom.Height + 20;\nend;\n\nprocedure TFrameChat.LayoutTypingResize(Sender: TObject);\nbegin\n  LayoutTypingContent.Width := Min(LayoutTyping.Width - (LayoutTyping.Padding.Left + LayoutTyping.Padding.Right), MaxMessageWidth);\nend;\n\nprocedure TFrameChat.LayoutWelcomeResize(Sender: TObject);\nbegin\n  FlowLayoutWelcome.Width := Min(720, LayoutWelcome.Width);\nend;\n\nprocedure TFrameChat.MemoQueryChange(Sender: TObject);\nbegin\n  LabelSendTip.Visible := MemoQuery.Text.IsEmpty;\n  var H: Single := 0;\n  if not LabelSendTip.Visible then\n    H := H + Round(MemoQuery.ContentBounds.Height)\n  else\n    H := H + 21;\n  //LayoutAudioRecording\n  //LayoutSend.Height := Max(LayoutSend.TagFloat, Min(H, 400));\n\n  var MaxMemoH := Min(H, 400 - (LayoutSend.Padding.Top + LayoutSend.Padding.Bottom + LayoutQuery.Padding.Top + LayoutQuery.Padding.Bottom));\n  MemoQuery.Height := Max(26, MaxMemoH);\n  H := H + LayoutSend.Padding.Top + LayoutSend.Padding.Bottom + LayoutQuery.Padding.Top + LayoutQuery.Padding.Bottom;\n  TAnimator.DetachPropertyAnimation(LayoutSend, 'Height');\n  if LayoutAttachments.Visible then\n    H := H + LayoutAttachments.Height;\n  TAnimator.AnimateFloat(LayoutSend, 'Height', Max(LayoutSend.TagFloat, Min(H, 400)), 0.1);\n  MemoQuery.ShowScrollBars := H > 400;\n\n  {$IFDEF MOBILE}\n  if LabelSendTip.Visible then\n  begin\n    LayoutChatSettings.Visible := True;\n    RectangleMemoBG.Margins.Left := 15;\n  end\n  else\n  begin\n    LayoutChatSettings.Visible := False;\n    RectangleMemoBG.Margins.Left := -11;\n  end;\n  {$ENDIF}\n  UpdateSendControls;\nend;\n\nprocedure TFrameChat.MemoQueryEnter(Sender: TObject);\nbegin\n  MemoQuery.PrepareForPaint;\nend;\n\nprocedure TFrameChat.UpdateSendControls;\nbegin\n  PathAudio.Visible := FAudioRecord.IsAvailableDevice and LabelSendTip.Visible;\n  PathSend.Visible := not PathAudio.Visible;\n  ButtonAudio.Visible := MemoQuery.Text.IsEmpty;\n  ButtonAudio.Position.X := 0;\n  var i := 0;\n  for var Control in LayoutSendCommons.Controls do\n    if Control.IsVisible then\n      Inc(i);\n  LayoutSendControls.Width := LayoutSendCommons.Height * i;\n  LayoutSendCommons.RecalcSize;\nend;\n\nprocedure TFrameChat.MemoQueryKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);\nbegin\n  if Manager.SendByEnter then\n  begin\n    if (Key = vkReturn) and not ((ssCtrl in Shift) or (ssShift in Shift)) then\n    begin\n      Key := 0;\n      KeyChar := #0;\n      SendText;\n    end;\n  end\n  else\n  begin\n    if (Key = vkReturn) and (ssCtrl in Shift) then\n    begin\n      Key := 0;\n      KeyChar := #0;\n      SendText;\n    end;\n  end;\n  MemoQueryChange(Sender);\nend;\n\nprocedure TFrameChat.MemoQueryKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);\nbegin\n  MemoQueryChange(Sender);\nend;\n\nprocedure TFrameChat.MemoQueryViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);\nbegin\n  MemoQueryChange(Sender);\nend;\n\nprocedure TFrameChat.VertScrollBoxChatViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);\nbegin\n  VertScrollBoxChat.FViewPositionY := NewViewportPosition.Y;\n  LayoutScrollDown.Visible := NewViewportPosition.Y < VertScrollBoxChat.ContentBounds.Height - VertScrollBoxChat.Height - 100;\nend;\n\nprocedure TFrameChat.ChatToUp;\nbegin\n  if not Assigned(FMenuItem) then\n    Exit;\n  FMenuItem.Index := 0;\n  FMenuItem.IsSelected := True;\nend;\n\nfunction TFrameChat.NewMessage(const Text: string; Role: TMessageKind; UseBuffer: Boolean; IsAudio: Boolean): TFrameMessage;\nbegin\n  ChatToUp;\n  if (Role = TMessageKind.User) and IsFirstMessage then\n  begin\n    IsFirstMessage := False;\n    Title := Text;\n  end;\n\n  var AppendText := Text;\n  var MessageTag := TGUID.NewGuid.ToString;\n  if UseBuffer then\n  begin\n    if Role = TMessageKind.User then\n    begin\n      if AppendText.StartsWith('/system ') then\n      begin\n        AppendText := AppendText.Replace('/system ', '', []);\n        FBuffer.New(TMessageRole.System, AppendText, MessageTag);\n        Role := TMessageKind.System;\n      end\n      else if AppendText.StartsWith('/user ') then\n      begin\n        AppendText := AppendText.Replace('/user ', '', []);\n        FBuffer.New(TMessageRole.User, AppendText, MessageTag);\n        Role := TMessageKind.User;\n      end\n      else if AppendText.StartsWith('/assistant ') then\n      begin\n        AppendText := AppendText.Replace('/assistant ', '', []);\n        FBuffer.New(TMessageRole.Assistant, AppendText, MessageTag);\n        Role := TMessageKind.Assistant;\n      end\n      else\n      begin\n        FBuffer.New(TMessageRole.User, AppendText, MessageTag);\n      end;\n    end\n    else\n    begin\n      AppendText := AppendText;\n      FBuffer.New(TMessageRole.Assistant, AppendText, MessageTag);\n    end;\n  end;\n  LayoutWelcome.Visible := False;\n  Result := TFrameMessage.Create(VertScrollBoxChat);\n  Result.Position.Y := VertScrollBoxChat.ContentBounds.Height;\n  Result.Parent := VertScrollBoxChat;\n  Result.Align := TAlignLayout.MostTop;\n  Result.Id := MessageTag;\n  Result.MessageRole := Role;\n  Result.IsAudio := IsAudio;\n  Result.Text := AppendText;\n  Result.OnDelete := FOnMessageDelete;\n  Result.OnTextUpdated := FOnMessageTextUpdated;\n  Result.SetMode(FMode);\n  Result.UpdateContentSize;\n  Result.StartAnimate;\n  DoOnUpdateChatItems;\nend;\n\nprocedure TFrameChat.SetAPI(const Value: IOpenAI);\nbegin\n  FAPI := Value;\nend;\n\nprocedure TFrameChat.SetAutoExecFuncs(const Value: Boolean);\nbegin\n  FAutoExecFuncs := Value;\nend;\n\nprocedure TFrameChat.SetChatId(const Value: string);\nbegin\n  FChatId := Value;\nend;\n\nprocedure TFrameChat.SetFrequencyPenalty(const Value: Single);\nbegin\n  FFrequencyPenalty := Value;\nend;\n\nprocedure TFrameChat.SetIsImageMode(const Value: Boolean);\nbegin\n  FIsImageMode := Value;\n  if FIsImageMode then\n  begin\n    PathImage.Fill.Color := $FFDDDDE4;\n    RectangleImageMode.Visible := True;\n  end\n  else\n  begin\n    PathImage.Fill.Color := $FFACACBE;\n    RectangleImageMode.Visible := False;\n  end;\nend;\n\nprocedure TFrameChat.SetLastRequest(const Value: TProc);\nbegin\n  FLastRequest := Value;\n  ButtonRetry.Visible := Assigned(FLastRequest);\nend;\n\nprocedure TFrameChat.SetMaxTokens(const Value: Integer);\nbegin\n  FMaxTokens := Value;\n  FBuffer.MaxTokensOfModel := FMaxTokens;\nend;\n\nprocedure TFrameChat.SetMaxTokensQuery(const Value: Integer);\nbegin\n  FMaxTokensQuery := Value;\n  FBuffer.MaxTokensForQuery := FMaxTokensQuery;\nend;\n\nprocedure TFrameChat.SetMenuItem(const Value: TListBoxItem);\nbegin\n  FMenuItem := Value;\nend;\n\nprocedure TFrameChat.SetMode(const Value: TWindowMode);\nbegin\n  FMode := Value;\n  for var Control in Controls do\n    if Control is TFrameOveraly then\n    begin\n      var Frame := Control as TFrameOveraly;\n      Frame.Mode := FMode;\n    end;\n  for var Control in VertScrollBoxChat do\n    if Control is TFrameMessage then\n    begin\n      var Frame := Control as TFrameMessage;\n      Frame.SetMode(FMode);\n    end;\n\n  case FMode of\n    TWindowMode.Compact:\n      begin\n        {$IFNDEF MOBILE}\n        LayoutSend.Margins.Right := 11;\n        {$ELSE}\n        LayoutSend.Margins.Right := 0;\n        {$ENDIF}\n        LabelWelcomeTitle.Margins.Top := 20;\n        LayoutSend.TagFloat := 100;\n        LayoutSend.Height := 100;\n        LayoutButtom.Margins.Bottom := 0;\n        LineBorder.Visible := True;\n        PathExaCompact.Visible := True;\n        PathExaFull.Visible := False;\n        PathCapCompact.Visible := True;\n        PathCapFull.Visible := False;\n        PathLimCompact.Visible := True;\n        PathLimFull.Visible := False;\n        LayoutSend.Padding.Rect := TRectF.Create(0, 10, 0, 40);\n        RectangleSendBG.Fill.Kind := TBrushKind.Solid;\n        RectangleSendBG.Fill.Color := $FF343541;\n        ButtonExportImport.Width := ButtonExportImport.Height;\n      end;\n    TWindowMode.Full:\n      begin\n        {$IFNDEF MOBILE}\n        LayoutSend.Margins.Right := 11;\n        {$ELSE}\n        LayoutSend.Margins.Right := 0;\n        {$ENDIF}\n        LabelWelcomeTitle.Margins.Top := 188;\n        LayoutSend.TagFloat := 170;\n        LayoutButtom.Margins.Bottom := -70;\n        LayoutSend.Height := 170;\n        LineBorder.Visible := False;\n        PathExaCompact.Visible := False;\n        PathExaFull.Visible := True;\n        PathCapCompact.Visible := False;\n        PathCapFull.Visible := True;\n        PathLimCompact.Visible := False;\n        PathLimFull.Visible := True;\n        LayoutSend.Padding.Rect := TRectF.Create(0, 80, 0, 40);\n        RectangleSendBG.Fill.Kind := TBrushKind.Gradient;\n        ButtonExportImport.Width := 165;\n      end;\n  end;\n  FlowLayoutWelcomeResize(nil);\nend;\n\nprocedure TFrameChat.SetModel(const Value: string);\nbegin\n  FModel := Value;\nend;\n\nprocedure TFrameChat.SetOnNeedFuncList(const Value: TOnNeedFuncList);\nbegin\n  FOnNeedFuncList := Value;\nend;\n\nprocedure TFrameChat.SetOnTitleChanged(const Value: TNotifyEvent);\nbegin\n  FOnTitleChanged := Value;\nend;\n\nprocedure TFrameChat.SetPresencePenalty(const Value: Single);\nbegin\n  FPresencePenalty := Value;\nend;\n\nprocedure TFrameChat.SetTemperature(const Value: Single);\nbegin\n  FTemperature := Value;\nend;\n\nprocedure TFrameChat.SetTitle(const Value: string);\nbegin\n  FTitle := Value.Replace(#10, '').Replace(#13, '').Replace('&', '').Substring(0, 50);\n  if Assigned(FOnTitleChanged) then\n    FOnTitleChanged(Self);\nend;\n\nprocedure TFrameChat.SetTopP(const Value: Single);\nbegin\n  FTopP := Value;\nend;\n\nprocedure TFrameChat.SetTyping(const Value: Boolean);\nbegin\n  FIsTyping := Value;\n  ButtonSend.Enabled := not Value;\n  TimerTyping.Enabled := Value;\n  LayoutTyping.Visible := Value;\n  FlowLayoutActions.Enabled := not Value;\n  if LayoutTyping.Visible then\n  begin\n    LayoutTyping.Margins.Top := 40;\n    LayoutTyping.Opacity := 0;\n    TAnimator.AnimateFloat(LayoutTyping, 'Margins.Top', 0);\n    TAnimator.AnimateFloat(LayoutTyping, 'Opacity', 1);\n  end;\n  LabelTyping.Visible := Value;\n  LabelTyping.Position.X := 0;\n  UpdateSendControls;\nend;\n\nprocedure TFrameChat.SetUseFunctions(const Value: Boolean);\nbegin\n  FUseFunctions := Value;\nend;\n\nprocedure TFrameChat.TimerCheckRecordingTimer(Sender: TObject);\nbegin\n  if FAudioRecord.IsMicrophoneRecording then\n  begin\n    LabelRecordingTime.Text := HumanTime(SecondsToTime(SecondsBetween(Now, FRecordingStartTime)));\n  end\n  else\n  begin\n    StopRecording;\n  end;\nend;\n\nprocedure TFrameChat.TimerTypingTimer(Sender: TObject);\nbegin\n  RectangleIndicate.Visible := not RectangleIndicate.Visible;\n  if LabelTyping.Text.Length > 2 then\n    LabelTyping.Text := '.'\n  else\n    LabelTyping.Text := LabelTyping.Text + '.';\nend;\n\n{ TButton }\n\nprocedure TButton.SetBounds(X, Y, AWidth, AHeight: Single);\nbegin\n  inherited;\n  if Assigned(Canvas) and (Tag = 1) then\n  begin\n    var H := TRectF.Create(0, 0, Width - 20, 10000);\n    Canvas.Font.Size := Font.Size;\n    Canvas.MeasureText(H, Text, WordWrap, [], TextAlign, VertTextAlign);\n    if AHeight <> H.Height + 24 then\n      Height := H.Height + 24;\n  end;\nend;\n\n{ TLabel }\n\nprocedure TLabel.SetBounds(X, Y, AWidth, AHeight: Single);\nbegin\n  inherited;\n  if Assigned(Canvas) and (Tag = 1) then\n  begin\n    var H := TRectF.Create(0, 0, Width - 20, 10000);\n    Canvas.Font.Size := Font.Size;\n    Canvas.MeasureText(H, Text, WordWrap, [], TextAlign, VertTextAlign);\n    if AHeight <> H.Height + 24 then\n      Height := H.Height + 24;\n  end;\nend;\n\n{ TVertScrollBox }\n\nfunction TVertScrollBox.CreateAniCalculations: TScrollCalculations;\nbegin\n  Result := TFixedScrollCalculations.Create(Self);\nend;\n\nprocedure TVertScrollBox.SetViewPositionY(const Value: Single);\nbegin\n  FViewPositionY := Value;\n  ViewportPosition := TPointF.Create(ViewportPosition.X, FViewPositionY);\nend;\n\n{ TMemo }\n\nprocedure TMemo.SetViewPos(const Value: Single);\nbegin\n  FViewPos := Value;\n  ViewportPosition := TPointF.Create(ViewportPosition.X, Value);\nend;\n\n{ TFixedScrollCalculations }\n\ntype\n  TControlHook = class(TControl)\n  end;\n\nprocedure TFixedScrollCalculations.DoChanged;\nbegin\n  //inherited .DoChanged;\n  TControlHook(ScrollBox).FDisableAlign := True;\n  try\n    inherited;\n  finally\n    TControlHook(ScrollBox).FDisableAlign := False;\n  end;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameCode.fmx",
    "content": "object FrameCode: TFrameCode\n  ClipChildren = True\n  HitTest = False\n  Margins.Bottom = 5.000000000000000000\n  Size.Width = 575.000000000000000000\n  Size.Height = 387.000000000000000000\n  Size.PlatformDefault = False\n  OnResize = FrameResize\n  OnResized = FrameResize\n  object RectangleHead: TRectangle\n    Align = Top\n    ClipChildren = True\n    Corners = [TopLeft, TopRight]\n    Fill.Color = xFF353440\n    Padding.Left = 16.000000000000000000\n    Padding.Top = 6.000000000000000000\n    Padding.Right = 16.000000000000000000\n    Padding.Bottom = 6.000000000000000000\n    Sides = [Top, Left, Right]\n    Size.Width = 575.000000000000000000\n    Size.Height = 32.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Color = xFF1A1922\n    XRadius = 6.000000000000000000\n    YRadius = 6.000000000000000000\n    object LabelLanguage: TLabel\n      Align = Client\n      StyledSettings = [Style]\n      Size.Width = 462.000000000000000000\n      Size.Height = 20.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.Font.Size = 11.500000000000000000\n      TextSettings.FontColor = xFFD9D9E3\n      TextSettings.WordWrap = False\n      TextSettings.Trimming = None\n      Text = 'language'\n      TabOrder = 0\n    end\n    object LayoutCopyCode: TLayout\n      Align = Right\n      Cursor = crHandPoint\n      HitTest = True\n      Position.X = 478.000000000000000000\n      Position.Y = 6.000000000000000000\n      Size.Width = 81.000000000000000000\n      Size.Height = 20.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      OnClick = LayoutCopyCodeClick\n      object PathCopy: TPath\n        Align = Left\n        Data.Path = {\n          4E0000000000000000005C410000004002000000ED0D6F410000004002000000\n          4CA67E41D2353B4002000000B3EA7F4106128340010000000000804100008840\n          0200000000008041384A854002000000C0EC7F41499D8240020000007AC77F41\n          D3F67F400100000000008E410000804002000000D8F097410000804002000000\n          0000A0414B3CA040020000000000A0410000C840010000000000A04100009E41\n          020000000000A041D8F0A74102000000D8F097410000B0410200000000008E41\n          0000B041010000000000C8400000B041020000004B3CA0400000B04102000000\n          00008040D8F0A741020000000000804000009E4101000000000080400000C840\n          02000000000080404B3CA040020000004B3CA04000008040020000000000C840\n          00008040010000007C380041D3F67F4002000000061E004102D9814002000000\n          B30C004117BC834002000000E0040041ECA38540010000000000004100008840\n          02000000000000419678404002000000261E1041000000400200000000002441\n          000000400100000000005C41000000400300000000005C410000004000000000\n          00005C410000D04001000000000024410000D04002000000924B17410000D040\n          02000000A5200C4162D6C240020000005CB805416FF5AE400100000077100641\n          A301B040010000000000C8400000B04002000000CBBEBA400000B04002000000\n          0000B040CBBEBA40020000000000B0400000C840010000000000B04000009E41\n          020000000000B0404850A14102000000CBBEBA400000A441020000000000C840\n          0000A4410100000000008E410000A44102000000485091410000A44102000000\n          000094414850A141020000000000944100009E4101000000000094410000C840\n          0200000000009441CBBEBA4002000000485091410000B0400200000000008E41\n          0000B040010000009EEF7941A301B04001000000AE477A416FF5AE4002000000\n          3BDF734162D6C24002000000A2B468410000D0400200000000005C410000D040\n          0300000000005C410000D0400000000000005C41000060400100000000002441\n          0000604002000000655F1D41000060400200000000001841957D754002000000\n          000018410000884002000000000018413541954002000000655F1D410000A040\n          02000000000024410000A0400100000000005C410000A0400200000090A06241\n          0000A04002000000000068413541954002000000000068410000884002000000\n          00006841957D75400200000090A06241000060400200000000005C4100006040\n          0300000000005C4100006040}\n        Fill.Color = xFFD9D9E3\n        HitTest = False\n        Size.Width = 11.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Kind = None\n        WrapMode = Fit\n      end\n      object LabelCopy: TLabel\n        Align = Right\n        AutoSize = True\n        StyledSettings = [Style]\n        Position.X = 26.000000000000000000\n        Size.Width = 55.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Size = 11.500000000000000000\n        TextSettings.FontColor = xFFD9D9E3\n        TextSettings.HorzAlign = Trailing\n        TextSettings.WordWrap = False\n        TextSettings.Trimming = None\n        Text = 'Copy code'\n        TabOrder = 0\n        OnResize = LabelCopyResize\n        OnResized = LabelCopyResize\n      end\n    end\n  end\n  object RectangleClient: TRectangle\n    Touch.InteractiveGestures = [LongTap]\n    Align = Client\n    Corners = [BottomLeft, BottomRight]\n    Fill.Color = claBlack\n    Size.Width = 575.000000000000000000\n    Size.Height = 355.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Kind = None\n    XRadius = 6.000000000000000000\n    YRadius = 6.000000000000000000\n    OnMouseDown = RectangleClientMouseDown\n    OnMouseMove = RectangleClientMouseMove\n    OnMouseUp = RectangleClientMouseUp\n    object MemoCode: TMemo\n      Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]\n      Caret.Color = x00FFFFFF\n      DataDetectorTypes = []\n      DisableMouseWheel = True\n      Lines.Strings = (\n        'begin'\n        ''\n        'end.')\n      ReadOnly = True\n      StyledSettings = [Style]\n      TextSettings.Font.Family = 'Consolas'\n      TextSettings.Font.Size = 14.000000000000000000\n      TextSettings.FontColor = xFFE8E8E8\n      Align = Client\n      CanParentFocus = True\n      Cursor = crDefault\n      EnableDragHighlight = False\n      Margins.Left = 5.000000000000000000\n      Margins.Top = 5.000000000000000000\n      Margins.Right = 5.000000000000000000\n      Margins.Bottom = 5.000000000000000000\n      Size.Width = 565.000000000000000000\n      Size.Height = 345.000000000000000000\n      Size.PlatformDefault = False\n      StyleLookup = 'memostyle_code'\n      TabOrder = 0\n      OnMouseWheel = MemoCodeMouseWheel\n      OnPresentationNameChoosing = MemoCodePresentationNameChoosing\n      Viewport.Width = 555.000000000000000000\n      Viewport.Height = 335.000000000000000000\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameCode.pas",
    "content": "﻿unit ChatGPT.FrameCode;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Objects, FMX.Memo.Types, FMX.Controls.Presentation, FMX.ScrollBox,\n  FMX.Edit.Style, FMX.Memo, FMX.Layouts, FMX.Memo.Style, ChatGPT.Classes,\n  FMX.TextLayout, ChatGPT.Code, FMX.Gestures, FMX.RichEdit.Style;\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\ntype\n  TMemo = class(FMX.Memo.TMemo)\n  protected\n    procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;\n  end;\n\n  TFrameCode = class(TFrame)\n    RectangleHead: TRectangle;\n    RectangleClient: TRectangle;\n    MemoCode: TMemo;\n    LabelLanguage: TLabel;\n    LayoutCopyCode: TLayout;\n    PathCopy: TPath;\n    LabelCopy: TLabel;\n    procedure FrameResize(Sender: TObject);\n    procedure LayoutCopyCodeClick(Sender: TObject);\n    procedure MemoCodeMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\n    procedure LabelCopyResize(Sender: TObject);\n    procedure RectangleClientMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);\n    procedure RectangleClientMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);\n    procedure RectangleClientMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);\n    procedure TimerMouseOverTimer(Sender: TObject);\n    procedure MemoCodePresentationNameChoosing(Sender: TObject; var PresenterName: string);\n  private\n    FOnWheel: TMouseWheelEvent;\n    FStyledMemo: TRichEditStyled;\n    FMouseDown: TPointF;\n    procedure FOnStyleLookup(Sender: TObject);\n    procedure SetOnWheel(const Value: TMouseWheelEvent);\n    function IsJson(const Value: string): Boolean;\n  public\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n    function GetContentHeight: Single;\n    procedure Fill(Data: TPart);\n    property OnWheel: TMouseWheelEvent read FOnWheel write SetOnWheel;\n  end;\n\nimplementation\n\nuses\n  System.Math, FMX.Clipboard, System.JSON, FMX.Platform, ChatGPT.FrameUIMessage,\n  System.Net.URLClient;\n\n{$R *.fmx}\n\n{ TFrameCode }\n\nconstructor TFrameCode.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  MemoCode.DisableDisappear := True;\n  FStyledMemo := (MemoCode.Presentation as TRichEditStyled);\n  {$IFDEF MOBILE}\n  MemoCode.HitTest := False;\n  {$ENDIF}\n  MemoCode.OnApplyStyleLookup := FOnStyleLookup;\nend;\n\ndestructor TFrameCode.Destroy;\nbegin\n  inherited;\nend;\n\nfunction TFrameCode.IsJson(const Value: string): Boolean;\nbegin\n  Result := False;\n  try\n    var JSON := TJSONObject.ParseJSONValue(Value);\n    if Assigned(JSON) then\n    begin\n      JSON.Free;\n      Result := True;\n    end;\n  except\n    Result := False;\n  end;\nend;\n\nprocedure TFrameCode.Fill(Data: TPart);\nbegin\n  if Data.Language.IsEmpty then\n    if IsJson(Data.Content) then\n      Data.Language := 'json';\n  if not Data.Language.IsEmpty then\n    //FCodeSyntax := TCodeSyntax.FindSyntax(Data.Language, MemoCode.Font, MemoCode.FontColor);\n    FStyledMemo.SetCodeSyntaxName(Data.Language, MemoCode.Font, MemoCode.FontColor)\n  else\n    FStyledMemo.SetCodeSyntaxName('md', MemoCode.Font, MemoCode.FontColor);\n\n  MemoCode.Text := Data.Content;\n  if Data.Language.IsEmpty then\n    LabelLanguage.Text := ''\n  else\n    LabelLanguage.Text := Data.Language;\n  FrameResize(nil);\nend;\n\nprocedure TFrameCode.FOnStyleLookup(Sender: TObject);\nbegin\n  (MemoCode.Presentation as TRichEditStyled).RoundedSelection := True;\n  (MemoCode.Presentation as TRichEditStyled).ShowGutter := True;\n  (MemoCode.Presentation as TRichEditStyled).GutterRightMargin := 4;\n  (MemoCode.Presentation as TRichEditStyled).UseSelectedTextColor := True;\n  (MemoCode.Presentation as TRichEditStyled).SelectedTextColor := TAlphaColorRec.White;\n  FrameResize(nil);\nend;\n\nprocedure TFrameCode.FrameResize(Sender: TObject);\nbegin\n  Height := GetContentHeight;\nend;\n\nfunction TFrameCode.GetContentHeight: Single;\nbegin\n  Result := Max(MemoCode.ContentBounds.Height + 20, 30) +\n    MemoCode.Margins.Top +\n    MemoCode.Margins.Bottom +\n    RectangleHead.Height;\nend;\n\nprocedure TFrameCode.LabelCopyResize(Sender: TObject);\nbegin\n  LayoutCopyCode.Width := LabelCopy.Width + PathCopy.Width + 8;\nend;\n\nprocedure TFrameCode.LayoutCopyCodeClick(Sender: TObject);\nbegin\n  var ClipBoard: IFMXClipboardService;\n  if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, ClipBoard) then\n  begin\n    ClipBoard.SetClipboard(MemoCode.Text);\n    ShowUIMessage('Coppied');\n  end\n  else\n    ShowUIMessage('Clipboard error');\nend;\n\nprocedure TFrameCode.MemoCodeMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  if (MemoCode.SelLength > 0) and (Root.Captured = IControl(FStyledMemo)) then\n  begin\n    Handled := True;\n    if Assigned(FOnWheel) then\n      FOnWheel(Sender, Shift, WheelDelta, Handled);\n  end;\nend;\n\nprocedure TFrameCode.MemoCodePresentationNameChoosing(Sender: TObject; var PresenterName: string);\nbegin\n  PresenterName := 'RichEditStyled';\nend;\n\nprocedure TFrameCode.RectangleClientMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);\nbegin\n  FMouseDown := TPointF.Create(X, Y);\n  Root.Captured := RectangleClient;\nend;\n\nprocedure TFrameCode.RectangleClientMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);\nbegin\n  if ssLeft in Shift then\n  begin\n    MemoCode.ViewportPosition := TPointF.Create(MemoCode.ViewportPosition.X + (FMouseDown.X - X), MemoCode.ViewportPosition.Y);\n    FMouseDown := TPointF.Create(X, Y);\n  end;\nend;\n\nprocedure TFrameCode.RectangleClientMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);\nbegin\n  Root.Captured := nil;\nend;\n\nprocedure TFrameCode.SetOnWheel(const Value: TMouseWheelEvent);\nbegin\n  FOnWheel := Value;\nend;\n\nprocedure TFrameCode.TimerMouseOverTimer(Sender: TObject);\nbegin\n\nend;\n\n{ TMemo }\n\nprocedure TMemo.MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  inherited;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameImage.fmx",
    "content": "object FrameImage: TFrameImage\n  Size.Width = 256.000000000000000000\n  Size.Height = 256.000000000000000000\n  Size.PlatformDefault = False\n  object RectangleImage: TRectangle\n    Align = Client\n    ClipChildren = True\n    Cursor = crHandPoint\n    Fill.Color = xA03F3F3F\n    Margins.Right = 5.000000000000000000\n    Margins.Bottom = 5.000000000000000000\n    PopupMenu = PopupMenuCopy\n    Size.Width = 251.000000000000000000\n    Size.Height = 251.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Color = xFF545454\n    XRadius = 4.000000000000000000\n    YRadius = 4.000000000000000000\n    OnClick = RectangleImageClick\n    OnPaint = RectangleImagePaint\n    object AniIndicator: TAniIndicator\n      Align = Center\n      Enabled = True\n      Size.Width = 30.000000000000000000\n      Size.Height = 30.000000000000000000\n      Size.PlatformDefault = False\n    end\n    object LabelError: TLabel\n      Align = Client\n      AutoSize = True\n      StyledSettings = [Family, Style]\n      Padding.Left = 5.000000000000000000\n      Padding.Top = 5.000000000000000000\n      Padding.Right = 5.000000000000000000\n      Padding.Bottom = 5.000000000000000000\n      Opacity = 0.600000023841857900\n      Size.Width = 251.000000000000000000\n      Size.Height = 251.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.Font.Size = 14.000000000000000000\n      TextSettings.FontColor = claWhitesmoke\n      TextSettings.HorzAlign = Center\n      Text = 'No longer available'\n      Visible = False\n      TabOrder = 0\n      OnResize = LabelErrorResize\n      OnResized = LabelErrorResize\n    end\n  end\n  object PopupMenuCopy: TPopupMenu\n    Left = 64\n    Top = 56\n    object MenuItemCopy: TMenuItem\n      Text = 'Copy image'\n      OnClick = MenuItemCopyClick\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameImage.pas",
    "content": "﻿unit ChatGPT.FrameImage;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Objects, FMX.Effects, FMX.Filter.Effects, FMX.Menus,\n  FMX.Controls.Presentation;\n\ntype\n  TFrameImage = class(TFrame)\n    RectangleImage: TRectangle;\n    AniIndicator: TAniIndicator;\n    PopupMenuCopy: TPopupMenu;\n    MenuItemCopy: TMenuItem;\n    LabelError: TLabel;\n    procedure RectangleImageClick(Sender: TObject);\n    procedure MenuItemCopyClick(Sender: TObject);\n    procedure RectangleImagePaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);\n    procedure LabelErrorResize(Sender: TObject);\n  private\n    FImage: string;\n    FIsLoaded: Boolean;\n    procedure SetImage(const Value: string);\n  public\n    property Image: string read FImage write SetImage;\n    constructor Create(AOwner: TComponent); override;\n  end;\n\nimplementation\n\nuses\n  ChatGPT.FrameImagePreview, FMX.Platform, ChatGPT.FrameUIMessage, HGM.FMX.Image;\n\n{$R *.fmx}\n\n{ TFrameImage }\n\nconstructor TFrameImage.Create(AOwner: TComponent);\nbegin\n  inherited;\n  FIsLoaded := False;\n  Name := '';\n  RectangleImage.HitTest := False;\nend;\n\nprocedure TFrameImage.LabelErrorResize(Sender: TObject);\nbegin\n  if LabelError.Width < 100 then\n    LabelError.Font.Size := 12\n  else\n    LabelError.Font.Size := 14;\nend;\n\nprocedure TFrameImage.MenuItemCopyClick(Sender: TObject);\nbegin\n  var ClipBoard: IFMXClipboardService;\n  if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, ClipBoard) then\n  begin\n    ClipBoard.SetClipboard(RectangleImage.Fill.Bitmap.Bitmap);\n    ShowUIMessage('Image coppied');\n  end\n  else\n    ShowUIMessage('ClipBoard error');\nend;\n\nprocedure TFrameImage.RectangleImageClick(Sender: TObject);\nbegin\n  RectangleImage.Visible := False;\n  TFramePreview.ShowPreview(RectangleImage.Fill.Bitmap.Bitmap, RectangleImage,\n    procedure\n    begin\n      RectangleImage.Visible := True;\n    end);\nend;\n\nprocedure TFrameImage.RectangleImagePaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);\nbegin\n  if not FIsLoaded then\n  begin\n    FIsLoaded := True;\n    RectangleImage.Fill.Bitmap.Bitmap.LoadFromUrlAsync(RectangleImage, FImage, True,\n      procedure(Success: Boolean)\n      begin\n        AniIndicator.Visible := False;\n        if Success then\n        begin\n          RectangleImage.Fill.Kind := TBrushKind.Bitmap;\n          RectangleImage.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;\n          RectangleImage.HitTest := True;\n        end\n        else\n          LabelError.Visible := True;\n      end);\n  end;\nend;\n\nprocedure TFrameImage.SetImage(const Value: string);\nbegin\n  FImage := Value;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameImagePreview.fmx",
    "content": "object FramePreview: TFramePreview\n  Padding.Left = 20.000000000000000000\n  Padding.Top = 20.000000000000000000\n  Padding.Right = 20.000000000000000000\n  Padding.Bottom = 20.000000000000000000\n  Size.Width = 706.000000000000000000\n  Size.Height = 635.000000000000000000\n  Size.PlatformDefault = False\n  OnClick = FrameClick\n  OnResized = FrameResized\n  object RectangleBG: TRectangle\n    Align = Contents\n    Fill.Color = xB4000000\n    HitTest = False\n    Size.Width = 706.000000000000000000\n    Size.Height = 635.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Kind = None\n  end\n  object SaveDialogJPG: TSaveDialog\n    DefaultExt = '*.jpg'\n    Filter = 'JPG|*.jpg'\n    Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]\n    Left = 140\n    Top = 484\n  end\n  object Image: TImage\n    MultiResBitmap = <\n      item\n      end>\n    HitTest = False\n    Position.X = 96.000000000000000000\n    Position.Y = 80.000000000000000000\n    Size.Width = 345.000000000000000000\n    Size.Height = 249.000000000000000000\n    Size.PlatformDefault = False\n    WrapMode = Place\n  end\n  object LayoutControls: TLayout\n    Align = Contents\n    Size.Width = 706.000000000000000000\n    Size.Height = 635.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 2\n    object LayoutControlsContent: TLayout\n      Align = Bottom\n      Position.Y = 549.000000000000000000\n      Size.Width = 706.000000000000000000\n      Size.Height = 86.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      object Rectangle1: TRectangle\n        Align = Contents\n        Fill.Kind = Gradient\n        Fill.Gradient.Points = <\n          item\n            Color = claBlack\n            Offset = 0.000000000000000000\n          end\n          item\n            Color = claNull\n            Offset = 1.000000000000000000\n          end>\n        Fill.Gradient.StartPosition.X = 0.500000000000000000\n        Fill.Gradient.StartPosition.Y = 1.000000000000000000\n        Fill.Gradient.StopPosition.X = 0.499999970197677600\n        Fill.Gradient.StopPosition.Y = 0.000000000000000000\n        Size.Width = 706.000000000000000000\n        Size.Height = 86.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Kind = None\n        object ButtonDownload: TButton\n          Align = Right\n          Hint = 'Save as ...'\n          ImageIndex = 15\n          Margins.Top = 20.000000000000000000\n          Margins.Right = 20.000000000000000000\n          Margins.Bottom = 20.000000000000000000\n          Position.X = 640.000000000000000000\n          Position.Y = 20.000000000000000000\n          Size.Width = 46.000000000000000000\n          Size.Height = 46.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_icon'\n          TabOrder = 1\n          OnClick = ButtonDownloadClick\n        end\n        object ButtonShare: TButton\n          Align = Right\n          Hint = 'Share'\n          ImageIndex = 14\n          Margins.Top = 20.000000000000000000\n          Margins.Right = 20.000000000000000000\n          Margins.Bottom = 20.000000000000000000\n          Position.X = 574.000000000000000000\n          Position.Y = 20.000000000000000000\n          Size.Width = 46.000000000000000000\n          Size.Height = 46.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_icon'\n          TabOrder = 0\n          OnClick = ButtonShareClick\n        end\n      end\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameImagePreview.pas",
    "content": "﻿unit ChatGPT.FrameImagePreview;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Objects, FMX.Layouts, FMX.Controls.Presentation, FMX.Ani;\n\ntype\n  TFramePreview = class(TFrame)\n    RectangleBG: TRectangle;\n    Image: TImage;\n    LayoutControlsContent: TLayout;\n    ButtonDownload: TButton;\n    Rectangle1: TRectangle;\n    SaveDialogJPG: TSaveDialog;\n    LayoutControls: TLayout;\n    ButtonShare: TButton;\n    procedure FrameClick(Sender: TObject);\n    procedure ButtonDownloadClick(Sender: TObject);\n    procedure FrameResized(Sender: TObject);\n    procedure ButtonShareClick(Sender: TObject);\n  private\n    FInitImageBounds: TControl;\n    FOnClose: TProc;\n    procedure SetImageBounds(Rect: TControl);\n  public\n    class procedure ShowPreview(Bitmap: TBitmap; InitBounds: TControl; OnClose: TProc);\n    constructor Create(AOwner: TComponent); override;\n  end;\n\nimplementation\n\nuses\n  HGM.FMX.Ani, System.IOUtils, ChatGPT.FrameUIMessage, ChatGPT.Manager;\n\n{$R *.fmx}\n\n{ TFramePreview }\n\nprocedure TFramePreview.ButtonDownloadClick(Sender: TObject);\nbegin\n  {$IFNDEF ANDROID OR IOS OR IOS64}\n  SaveDialogJPG.FileName := TPath.GetRandomFileName + '.jpg';\n  if SaveDialogJPG.Execute then\n  begin\n    Image.Bitmap.SaveToFile(SaveDialogJPG.FileName);\n    ShowUIMessage('Saved');\n  end;\n  {$ELSE}\n  ShowMessage(TPath.Combine(TPath.GetSharedPicturesPath, TPath.GetRandomFileName + '.jpg'));\n  Image.Bitmap.SaveToFile(TPath.Combine(TPath.GetSharedPicturesPath, TPath.GetRandomFileName + '.jpg'));\n  ShowUIMessage('Saved to gallery');\n  {$ENDIF}\nend;\n\nprocedure TFramePreview.ButtonShareClick(Sender: TObject);\nbegin\n  Manager.ShareBitmap(Image.Bitmap);\nend;\n\nconstructor TFramePreview.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  ButtonShare.Visible := Manager.CanShare;\nend;\n\nprocedure TFramePreview.FrameClick(Sender: TObject);\nbegin\n  var ToRect := FInitImageBounds.AbsoluteRect;\n  TAnimator.AnimateFloat(RectangleBG, 'Opacity', 0);\n  TAnimator.AnimateFloat(Image, 'Position.X', ToRect.Left);\n  TAnimator.AnimateFloat(Image, 'Position.Y', ToRect.Top);\n  TAnimator.AnimateFloat(Image, 'Width', ToRect.Width);\n  TAnimator.AnimateFloat(LayoutControlsContent, 'Margins.Bottom', -LayoutControlsContent.Height);\n  LayoutControlsContent.Opacity := 0;\n  TAnimator.AnimateFloat(LayoutControlsContent, 'Opacity', 1);\n  TAnimator.AnimateFloatWithFinish(Image, 'Height', ToRect.Height,\n    procedure\n    begin\n      if Assigned(FOnClose) then\n        FOnClose;\n      Release;\n    end);\nend;\n\nprocedure TFramePreview.FrameResized(Sender: TObject);\nbegin\n  Image.BoundsRect := LayoutControls.BoundsRect;\nend;\n\nprocedure TFramePreview.SetImageBounds(Rect: TControl);\nbegin\n  FInitImageBounds := Rect;\n  Image.BoundsRect := FInitImageBounds.AbsoluteRect;\n  TAnimator.AnimateFloat(Image, 'Position.X', LayoutControls.BoundsRect.Left);\n  TAnimator.AnimateFloat(Image, 'Position.Y', LayoutControls.BoundsRect.Top);\n  TAnimator.AnimateFloat(Image, 'Width', LayoutControls.BoundsRect.Width);\n  TAnimator.AnimateFloat(Image, 'Height', LayoutControls.BoundsRect.Height);\nend;\n\nclass procedure TFramePreview.ShowPreview(Bitmap: TBitmap; InitBounds: TControl; OnClose: TProc);\nbegin\n  var Frame := TFramePreview.Create(InitBounds);\n  Frame.Parent := Application.MainForm;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.Image.Bitmap := Bitmap;\n  Frame.BringToFront;\n  Frame.SetImageBounds(InitBounds);\n  Frame.RectangleBG.Opacity := 0.001;\n  Frame.FOnClose := OnClose;\n  Frame.LayoutControlsContent.Margins.Bottom := -Frame.LayoutControlsContent.Height;\n  TAnimator.AnimateFloat(Frame.RectangleBG, 'Opacity', 1);\n  TAnimator.AnimateFloat(Frame.LayoutControlsContent, 'Margins.Bottom', 0);\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameMessage.fmx",
    "content": "object FrameMessage: TFrameMessage\n  Size.Width = 735.000000000000000000\n  Size.Height = 521.000000000000000000\n  Size.PlatformDefault = False\n  OnResize = FrameResize\n  OnResized = FrameResize\n  object LayoutClient: TLayout\n    Align = Contents\n    Padding.Left = 16.000000000000000000\n    Padding.Top = 16.000000000000000000\n    Padding.Right = 16.000000000000000000\n    Padding.Bottom = 16.000000000000000000\n    Size.Width = 735.000000000000000000\n    Size.Height = 521.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 1\n    object RectangleBG: TRectangle\n      Align = Contents\n      Fill.Color = xFF343541\n      Locked = True\n      Sides = [Bottom]\n      Size.Width = 735.000000000000000000\n      Size.Height = 521.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Color = xFF282B34\n    end\n    object LayoutContent: TLayout\n      Align = HorzCenter\n      Position.X = 45.000000000000000000\n      Position.Y = 16.000000000000000000\n      Size.Width = 645.000000000000000000\n      Size.Height = 489.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      object LayoutContentText: TLayout\n        Align = Client\n        Size.Width = 507.000000000000000000\n        Size.Height = 459.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 2\n        object FlowLayoutImages: TFlowLayout\n          Align = Top\n          Size.Width = 507.000000000000000000\n          Size.Height = 107.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          Justify = Left\n          JustifyLastLine = Left\n          FlowDirection = LeftToRight\n        end\n        object LayoutFunc: TLayout\n          Align = Top\n          Position.Y = 107.000000000000000000\n          Size.Width = 507.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n          object ButtonExecuteFunc: TButton\n            Align = Left\n            Size.Width = 97.000000000000000000\n            Size.Height = 30.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_execute'\n            TabOrder = 0\n            Text = 'Execute'\n            TextSettings.HorzAlign = Leading\n            OnClick = ButtonExecuteFuncClick\n          end\n          object LabelGPTFunc: TLabel\n            Align = Client\n            Cursor = crHelp\n            StyledSettings = [Family, Size, Style]\n            HitTest = True\n            Margins.Left = 10.000000000000000000\n            Size.Width = 370.000000000000000000\n            Size.Height = 30.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.FontColor = claWhite\n            TextSettings.WordWrap = False\n            Text = 'get_weather_info'\n            TabOrder = 1\n          end\n          object LayoutFuncState: TLayout\n            Align = Right\n            Cursor = crHelp\n            HitTest = True\n            Position.X = 477.000000000000000000\n            Size.Width = 30.000000000000000000\n            Size.Height = 30.000000000000000000\n            Size.PlatformDefault = False\n            TabOrder = 2\n            object PathSuccess: TPath\n              Align = Center\n              Data.Path = {\n                1700000000000000CDCC4C419A99E54101000000343353409A99994102000000\n                9A99394067669641020000009A993940CDCC90410200000034335340CDCC8C41\n                010000009A999940CDCC8041020000006766A64034337B4102000000CDCCBC40\n                34337B4102000000CDCCCC40CDCC8041010000009A9959416666BA4101000000\n                CDCCEC419899E940020000000000F041CBCCDC40020000009A99F541CBCCDC40\n                020000009A99F9419899E94001000000CDCC0242CCCC0C410200000067660442\n                32331341020000006766044266661E4102000000CDCC02426666264101000000\n                666666419A99E5410200000066665E41CDCCE8410200000033335341CDCCE841\n                02000000CDCC4C419A99E54103000000CDCC4C419A99E541}\n              Fill.Color = xFFACACBE\n              HitTest = False\n              Size.Width = 16.000000000000000000\n              Size.Height = 16.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n            object PathError: TPath\n              Align = Center\n              Data.Path = {\n                3C000000000000000000404100000040020000001B2F8C410000004002000000\n                0000B041C74BCF40020000000000B04100004041020000000000B0410E2D8C41\n                020000001B2F8C410000B04102000000000040410000B041020000009643CF40\n                0000B04102000000000000400E2D8C4102000000000000400000404102000000\n                00000040C74BCF40020000009643CF4000000040020000000000404100000040\n                030000000000404100000040000000000000404121B06A4002000000C3F5EC40\n                21B06A400200000021B06A40C3F5EC400200000021B06A400000404102000000\n                21B06A408FC2844102000000C3F5EC40FCA9A2410200000000004041FCA9A241\n                020000008FC28441FCA9A24102000000FCA9A2418FC2844102000000FCA9A241\n                0000404102000000FCA9A241C3F5EC40020000008FC2844121B06A4002000000\n                0000404121B06A40030000000000404121B06A4000000000ADFA3F4103096841\n                020000009FCD48410309684102000000F1F44F41BE306F4102000000F1F44F41\n                B003784102000000F1F44F41516B8041020000009FCD48412EFF834102000000\n                ADFA3F412EFF834102000000522737412EFF83410200000000003041516B8041\n                0200000000003041B00378410200000000003041BE306F410200000052273741\n                0309684102000000ADFA3F410309684103000000ADFA3F410309684100000000\n                79E93F410000E04002000000B9FC45418BFDDF4002000000DE024B41DE02E940\n                0200000042CF4B4178B9F44001000000EEEB4B4116FBF74001000000ADFA4B41\n                1904444102000000E7FB4B41A9A44A4102000000B29D46415305504102000000\n                22FD3F418E06504102000000E2E93941C80750410200000054E334411F854B41\n                02000000F0163441FCA9454101000000ADFA33410309444101000000EEEB3341\n                EA04F840020000004BEA3341B5C3EA400200000080483941B402E04002000000\n                79E93F410000E0400300000079E93F410000E040}\n              Fill.Color = xFFEA4141\n              HitTest = False\n              Size.Width = 16.000000000000000000\n              Size.Height = 16.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              Visible = False\n              WrapMode = Fit\n            end\n            object PathWait: TPath\n              Align = Center\n              Data.Path = {\n                2300000000000000C3F59641B81E41410100000086EB4D41EC51AC4102000000\n                4EE44A41B0AEAE4102000000129C45412C14B04102000000010040410000B041\n                020000000D843E41EB1DB0410200000013013D41EB1DB0410200000020853B41\n                0000B04102000000B97534413BF9AE410200000024B52F4162ACAB4102000000\n                000030410000A84101000000000030410000704101000000713DDA4000007041\n                02000000CFE4B640AB007041020000005B3C9A4087AD614102000000053B9A40\n                3601504102000000903A9A4001F149410200000019AC9D40AB00444102000000\n                F628A44048E13E41010000007B143241A4701D4002000000E4C535412EC90340\n                02000000F3613D419238EF3F02000000E17A44410000004002000000468A4B41\n                2A36084002000000DB4A5041F19C224002000000000050410000404001000000\n                000050410000104101000000A47089410000104102000000CD46924154FF0F41\n                02000000EA70994178521E410200000040719941C9FE2F41020000005D719941\n                FF0E364102000000FB94984155FF3B4102000000C4F59641B81E414103000000\n                C3F59641B81E4141}\n              Fill.Color = xFFACACBE\n              HitTest = False\n              Size.Width = 16.000000000000000000\n              Size.Height = 16.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              Visible = False\n              WrapMode = Fit\n            end\n            object AniIndicatorFunc: TAniIndicator\n              Align = Client\n              Size.Width = 30.000000000000000000\n              Size.Height = 30.000000000000000000\n              Size.PlatformDefault = False\n            end\n          end\n        end\n      end\n      object LayoutInfo: TLayout\n        Align = MostLeft\n        Margins.Right = 14.000000000000000000\n        Size.Width = 30.000000000000000000\n        Size.Height = 489.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 1\n        object RectangleUser: TRectangle\n          Align = Top\n          Fill.Color = xFF5436DA\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path1: TPath\n            Align = Center\n            Data.Path = {\n              310000000000000000004041000000400200000035D113410000004002000000\n              0000E0406AA28740020000000000E0400000E040020000000100E040CC2E1C41\n              0200000036D113410000404102000000010040410000404102000000CA2E6C41\n              000040410200000000008841CC2E1C4102000000000088410200E04002000000\n              000088416CA2874002000000CB2E6C4104000040020000000000404104000040\n              03000000000040410000004000000000000040410000204102000000867D2541\n              0000204102000000000010417A820A4102000000000010410000E04002000000\n              000010410CFBAA4002000000877D2541FFFF7F40020000000100404100008040\n              0200000079825A41FFFF7F4002000000000070410CFBAA400200000000007041\n              FFFFDF4002000000000070417A820A410200000079825A410000204102000000\n              FFFF3F4100002041030000000000404100002041000000000000A8410000A841\n              010000000000A8410000A041020000000000A84172128141020000008EED8E41\n              0000504102000000000060410000504101000000000020410000504102000000\n              C849C4400000504102000000000040407212814102000000020040400000A041\n              01000000020040400000A841010000000100A0400000A841010000000100A040\n              0000A041020000000100A0409AE88941020000006CA2E7400000704102000000\n              0100204100007041010000000100604100007041020000006617864100007041\n              02000000000098419BE8894102000000000098410000A0410100000000009841\n              0000A841030000000000A8410000A841}\n            Fill.Color = claWhite\n            Locked = True\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object RectangleBot: TRectangle\n          Align = Top\n          Fill.Color = xFF10A37F\n          Position.Y = 30.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path2: TPath\n            Align = Center\n            Data.Path = {\n              0F010000000000002D21164232F786410200000057EC1742B762784102000000\n              928B1842F38E61410200000054F4174272F94A4102000000155D1742F1633441\n              02000000D792154279921E410200000039B41242C2FA0A41020000004D730E42\n              75B0DA4002000000EBF3074261C3AB400200000032260042B6F38F4002000000\n              F2B0F04141486840020000004547DF4109C45940020000006F92CE412E737640\n              020000006C09C741E48332400200000074C6BD41E17AF83F02000000D567B341\n              3884AE3F020000003709A941711B493F0200000098CC9D419C87FB3E02000000\n              47729241E90C003F02000000CC5D81416876FD3E02000000C66D61410282953F\n              020000004BC8454157041B4002000000D1222A4184476B400200000094931541\n              0A4BAE400200000034110B41014DEF400200000090A0E9405969F84002000000\n              5B94BF40607605410200000070CE9A4001CD1241020000000A116C40A3232041\n              0200000048C42E404F4031410200000024D10140F4FD444102000000D3DA743F\n              AC8B6241020000007A70FF3EF16382410200000033C1383FE561934102000000\n              3ACA713FA45FA44102000000FB05EB3FF55BB44102000000E9265140CE08C141\n              020000004F753440A5CECB41020000001B812A408638D74102000000DCF43340\n              4783E241020000009D683D4007CEED4102000000740C5A40AEB6F84102000000\n              D7FA834055410142020000005C03A640E2A90842020000005DFED9405F870E42\n              020000001C360C415501124202000000F46C2B414A7B1542020000004F404E41\n              A36316420200000093A96F41C89814420200000099BB7E41C2D7184202000000\n              F9A088411C3C1C420200000063FF9241E18B1E4202000000015E9D418CDB2042\n              02000000A09AA841E908224202000000F1F4B341CCFF214202000000AC0BC541\n              8805224202000000D7B4D54112541F4202000000CE88E3410E4F1A4202000000\n              FB5CF141094A15420200000012A5FB41D0330E42020000009672004254120642\n              02000000C4020642CCEE0442020000004D440B426A9E02420200000015DD0F42\n              6891FE4102000000C375144232E6F741020000008C4A1842A857EF4102000000\n              CE191B42D578E5410200000019621F4261B2D641020000008E3521424D95C541\n              02000000CB5020423199B44102000000226C1F42159DA3410200000009DB1B42\n              9CA29341020000002D21164232F78641030000002D21164232F7864100000000\n              7FFBB341238A17420200000054F4A541B38C174202000000015E9841DC171542\n              020000005F988D41B499104202000000AF148E41CF77104202000000CCEE8E41\n              023C104202000000EE7C8F417D101042010000000534CF412653FB4102000000\n              6ACDD0414B6AFA41020000006221D2419318F94102000000E70CD3419D80F741\n              02000000A1F8D341A7E8F541020000004D73D4416519F441020000006F70D441\n              8F42F241010000006F70D441006F984101000000D35EEF41E7FBA74102000000\n              DE82EF41ED0DA84102000000FFA1EF418D28A841020000008CB9EF418649A841\n              02000000E5D0EF417F6AA84102000000A4DFEF41CB90A84102000000C3E4EF41\n              BBB8A84101000000C3E4EF41781CF34102000000A4DFEF410080014202000000\n              8A8EE941CC1D094202000000C353DE4185BC0E4202000000FC18D341575B1442\n              02000000D3DEC341BC851742020000007FFBB341238A1742030000007FFBB341\n              238A1742000000007A8DCC401B0DF841020000007172B04010E9EB4102000000\n              4451A64083AFDD4102000000F2EFAF4098DDCF41020000006BD4B1404C26D041\n              02000000A722B54087A7D04102000000ED81B740C5FED041010000001B2F5B41\n              64CCF54102000000295C5E41F5B9F6410200000009F961414C37F74102000000\n              B5A665414C37F74102000000F85369414C37F74102000000D8F06C41F5B9F641\n              02000000E71D704164CCF5410100000017D9C541E5E1C8410100000017D9C541\n              B3FBE7410200000057DBC5414024E841020000008FD3C541014DE84102000000\n              5BC2C541DE71E8410200000027B1C541BC96E841020000002497C541E3B6E841\n              020000009476C54142CFE84101000000B90D8541B1FF064202000000B98D6E41\n              66F70A42020000002CD44D41EF090C42020000007E1D2F414AFB094202000000\n              A5661041A5EC0742020000004469EC40BBE70242020000007A8DCC401B0DF841\n              030000007A8DCC401B0DF841000000009981894010E95941020000006B7DA540\n              C89841410200000075B0D1407FFB2E41020000007D2E0341BD52254102000000\n              7D2E0341BA6B2641020000005A1E0341645D2841020000005A1E0341AEB62941\n              010000005A1E0341C9769E41020000009E1803416A4DA04102000000AE0D0441\n              431CA2410200000045E4054105B4A34102000000DCBA0741924BA54102000000\n              04620A41159DA64102000000FD930D41F085A7410100000012949441006FD441\n              01000000C74B7341B3FBE34102000000C80773413A12E441020000008CB97241\n              BE1FE44102000000736872416E23E44102000000591772411E27E44102000000\n              6DC57141C520E44102000000787A7141CB10E44101000000734BE14079D8BE41\n              020000008048AA407CE1B641020000002D268240BAC9A941020000008D626340\n              D26F9A4102000000C07842401E168B410200000070995340F775754102000000\n              9981894010E95941030000009981894010E9594100000000D7A3FF41DE71A041\n              010000007FD9B141BF0E674101000000E3C7CC4138F8474102000000E2E9CC41\n              92CB4741020000000011CD4121B04741020000008C39CD41C1A8474102000000\n              1962CD4162A1474102000000DB8ACD417DAE47410200000055B0CD4170CE4741\n              010000006A0D074259178941020000009FFC0B42C1CA8E4102000000BE011042\n              832F97410200000074A41242584AA14102000000114715422C65AB4102000000\n              366B1642C1CAB64102000000CCEE1542AF25C24102000000617215429D80CD41\n              02000000515A13427958D84102000000AFE50F423E68E14102000000F2700C42\n              0378EA410200000019C40742A45FF14102000000366B02421450F54102000000\n              366B0242F2C1F44102000000366B024252C9F34102000000366B0242781CF341\n              01000000366B02420681A94102000000296D024236ABA741020000008A300242\n              C6DCA5410200000099BB01423945A44102000000A8460142ACADA24102000000\n              B29D0042C05BA14102000000D7A3FF41DE71A04103000000D7A3FF41DE71A041\n              00000000D5380D426E3470410200000050FC0C42BE9F6F410200000089920C42\n              90A06E4102000000A8460C427CF26D410100000004D6D841D656244102000000\n              7D3FD741857C2241020000004171D54141822141020000006B9AD34141822141\n              02000000CAC3D14141822141020000005AF5CF41857C224102000000D35ECE41\n              D656244101000000AF9480413D2C7E4101000000AF948041A1F83F4102000000\n              6F9280411EA73F4102000000379A804104563F41020000006BAB80414A0C3F41\n              020000009FBC80418FC23E4102000000A1D6804141823E410200000032F78041\n              83513E41010000000D60C1410C02E840020000000E3ECB41BC3FD14002000000\n              C286D6414833C640020000000AE8E1417C27C840020000005249ED41C51BCA40\n              020000008C4AF84111FCD840020000004ED10042E50AF340020000003C7D0542\n              DD8C0641020000000523094296A118410200000067550B424CA62D4102000000\n              C8870D42CEAA424102000000832F0E4283C0594102000000D5380D426E347041\n              03000000D5380D426E34704100000000DFE063410389AF4101000000D2002E41\n              1CFC9F4102000000BBB82D4116EA9F4102000000107A2D4176CF9F4102000000\n              5E4B2D417DAE9F4102000000AC1C2D41848D9F4102000000C5FE2C4138679F41\n              02000000F1F42C41143F9F4101000000F1F42C41AEB6294102000000A1F82C41\n              5DED124102000000107A33413A3BF94002000000DDB53F4160C8D24002000000\n              13F24B418655AC400200000038675D41A0A68D40020000003D0A724122A67440\n              02000000A156834104FF4D4002000000B7D18E412FA83F4002000000841E9A41\n              0E4F4B4002000000856BA541EDF55640020000003A12B0414B1F7C4002000000\n              C3D3B841B0389B40020000007357B84102489C4002000000FA7EB74118269E40\n              0200000035EFB641E8829F40010000003B706E41DB5C194102000000713D6B41\n              342E1B4102000000EA95684124D11D410200000077BE66416900214102000000\n              6DE76441832F24410200000013F263419FCD27410200000066F76341E17A2B41\n              01000000DFE063410389AF4103000000DFE063410389AF410000000068918041\n              28FE8F4101000000E336A341FDF677410100000029DCC541E1FA8F4101000000\n              29DCC541EEFCB74101000000E336A34185FCCB410100000068918041EEFCB741\n              010000006891804128FE8F41030000006891804128FE8F41}\n            Fill.Color = claWhite\n            Locked = True\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object RectangleSystem: TRectangle\n          Align = Top\n          Fill.Color = xFFDA6F36\n          Position.Y = 60.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path7: TPath\n            Align = Center\n            Data.Path = {\n              0001000000000000000060410000A0410200000075828A410000A04102000000\n              0000A04175828A41020000000000A04100006041020000000000A04116FB2A41\n              0200000075828A41000000410200000000006041000000410200000016FB2A41\n              00000041020000000000004116FB2A4102000000000000410000604102000000\n              0000004175828A410200000016FB2A410000A04102000000000060410000A041\n              03000000000060410000A0410000000000009041000060410200000000009041\n              3DAC8141020000003DAC81410000904102000000000060410000904102000000\n              87A73C410000904102000000000020413DAC8141020000000000204100006041\n              020000000000204187A73C410200000087A73C41000020410200000000006041\n              00002041020000003DAC814100002041020000000000904187A73C4102000000\n              000090410000604103000000000090410000604100000000000000005DFE4F41\n              01000000000000005DFE6F410200000000000000E5618441020000001618963F\n              75938E4102000000D4652B405DDC8F41020000008A93334067C4924102000000\n              F5D63C40DA9B95410200000008204740DF6098410200000061FD0740D9CEA141\n              02000000F0DC0B403BDFAF41020000000ABF524099BBB84101000000BAA09640\n              E10BC441020000004243B9406EB4CC410200000011C7EF40645DCD4102000000\n              71B80A415906C641020000009FAB11411AC0C741020000007DDC1841A245C941\n              02000000C44220410C93CA410200000095D422414F9ED64102000000B5373741\n              0000E0410200000022FD4F410000E0410100000022FD6F410000E04102000000\n              766084410000E041020000009D918E418A9FD6410200000057DB8F411895CA41\n              020000001D3893416666C94102000000C57E96416C09C841020000003DAC9941\n              D280C64102000000F30EA341CA54CD41020000007446B0411283CC4102000000\n              A5BDB841E10BC44101000000ED0DC44199BBB841020000001F85CC416744B041\n              02000000D656CD41E70CA341020000001283C64130AA9941020000000F0BC841\n              8B7D964102000000D567C941E9379341020000005396CA41F5DB8F4102000000\n              27A0D6419D918E41020000000000E041AA608441020000000000E0415DFE6F41\n              010000000000E0415DFE4F41020000000000E041643B37410200000027A0D641\n              E8D92241020000005396CA413945204102000000B448C94129DC184102000000\n              C4C2C741EBA81141020000006608C64187B30A4102000000CC5DCD4190BDEF40\n              02000000A2B4CC41813EB940020000007E0CC441309E96400100000036BCB841\n              CBB952400200000076E0AF411EDC0B40020000001AD1A141A1F8074002000000\n              54639841280F474002000000159D954127C23C400200000067C49241747B3340\n              0200000023DB8F41494B2B4002000000CB908E418FFC953F02000000D95F8441\n              000000000200000022FD6F41000000000100000022FD4F410000000002000000\n              EF383741000000000200000039D62241410E963F020000002D432041295C2B40\n              0200000082B919412E903440020000008A5913414F233F400200000000290D41\n              EFFE4A4002000000419FF44034D7074002000000F2CDBA40A96A0A4002000000\n              76A69640CBB952400100000058CA52401B9E964002000000357B0A40C1C5BA40\n              02000000C0E707402497F44002000000F90F4B40F2240D410200000012313F40\n              1F571341020000007C9B3440DAB8194102000000D4652B406744204102000000\n              1618963F39D6224102000000000000005839374102000000000000005DFE4F41\n              03000000000000005DFE4F410000000022FD7F41000040400200000022FD7F41\n              72A71C40020000005BD37841000000400200000022FD6F410000004001000000\n              22FD4F410000004002000000E9264741000000400200000022FD3F4172A71C40\n              0200000022FD3F41000040400100000022FD3F41FE7D58400200000022FD3F41\n              3EED764002000000029A3A4188688840020000005E4B334148A78C4002000000\n              13F22741533F934002000000A81D1D41CF499C40020000008EF51241AB78A740\n              02000000344B0C416CCFAE400200000073E803412046AD4002000000410EFD40\n              7B83A24001000000E128F140309E964002000000BDA9E440F71E8A4002000000\n              E466D040F71E8A4002000000ABE7C3401B9E96400100000076A6964065DFC340\n              020000003D278A40895ED040020000003D278A4077A1E4400200000076A69640\n              9B20F14001000000EB8BA2401006FD4002000000904EAD405AE4034102000000\n              DCD7AE401B470C41020000001B81A74076F1124102000000B1509C40091B1D41\n              0200000039459340D8F0274102000000EFAC8C40304C334102000000986E8840\n              3D9B3A4102000000DFF876405DFE3F4102000000A48858405DFE3F4101000000\n              000040405DFE3F410200000072A71C405DFE3F4102000000000000408D284741\n              02000000000000405DFE4F4101000000000000405DFE6F410200000000000040\n              95D478410200000072A71C405DFE7F4102000000000040405DFE7F4101000000\n              A48858405DFE7F4102000000DFF876405DFE7F4102000000836E8840F2B08241\n              02000000EFAC8C40455886410200000083DD9240DAAC8B4102000000A4369B40\n              74C69041020000009A77A5404D959541020000006E8BAC40CFE6984102000000\n              10E9AA40CE089D41020000000B46A04090B19F4101000000BAA09640091BA241\n              0200000096218A40C73AA5410200000096218A405E4BAA4102000000BAA09640\n              516BAD410100000004E2C34099BBB841020000002861D04057DBBB4102000000\n              16A4E44057DBBB41020000003A23F14099BBB8410100000081ECF84052C9B641\n              0200000062E701419710B44102000000A7680A41D7B4B34102000000C4191141\n              3D9BB541020000008CCA1B41A9A4B84102000000E63F2741E414BB4102000000\n              5E4B3341CAD4BC4102000000029A3A415AE4BD410200000022FD3F41F920C141\n              0200000022FD3F41CCEEC4410100000022FD3F410000C8410200000022FD3F41\n              1C6BCC4102000000E92647410000D0410200000022FD4F410000D04101000000\n              22FD6F410000D041020000005BD378410000D0410200000022FD7F411C6BCC41\n              0200000022FD7F410000C8410100000022FD7F416FF0C4410200000022FD7F41\n              6822C1410200000055B08241C9E5BD4102000000DC57864139D6BC4102000000\n              8E068C412130BB41020000007C729141F4ECB84102000000FD8796415C20B641\n              020000002FDD9941C14AB441020000008A0E9E410EADB4410200000048BFA041\n              CC5DB74101000000151DA24199BBB84102000000D33CA54157DBBB4102000000\n              9F4DAA4157DBBB41020000005D6DAD4199BBB84101000000A5BDB841516BAD41\n              0200000064DDBB415E4BAA410200000064DDBB41C73AA54102000000A5BDB841\n              091BA24101000000D95FB7413CBDA041020000001BAFB4417E0C9E4102000000\n              CD4CB44123DB9941020000009C22B641F085964102000000CCEEB8410D719141\n              020000009031BB4125068C4102000000A8D7BC41455886410200000038E7BD41\n              F2B0824102000000D723C1415DFE7F4102000000DEF1C4415DFE7F4101000000\n              0000C8415DFE7F41020000001C6BCC415DFE7F41020000000000D04195D47841\n              020000000000D0415DFE6F41010000000000D0415DFE4F41020000000000D041\n              8D284741020000001C6BCC415DFE3F41020000000000C8415DFE3F4101000000\n              DEF1C4415DFE3F4102000000D723C1415DFE3F410200000038E7BD413D9B3A41\n              02000000A8D7BC41304C334102000000C217BB41143F27410200000052A7B841\n              C3C71B41020000007E9DB5416C15114102000000E3B6B34150640A4102000000\n              D712B4410BE30141020000005ECBB641D2E3F8400100000036BCB8419B20F140\n              02000000F5DBBB4177A1E44002000000F5DBBB41895ED0400200000036BCB841\n              65DFC34001000000EE6BAD411B9E964002000000304CAA41F71E8A4002000000\n              643BA541F71E8A4002000000A61BA2411B9E964001000000D0B39F41473DA040\n              020000000F0B9D414CE0AA4002000000DCE89841BF82AC400200000059979541\n              EB6EA54002000000E3C790413D2C9B400200000043AD8B4120D2924002000000\n              DC57864123A18C400200000055B08241206388400200000022FD7F419CE17640\n              0200000022FD7F418F7058400100000022FD7F41000040400300000022FD7F41\n              00004040}\n            Fill.Color = claWhite\n            Locked = True\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object RectangleError: TRectangle\n          Align = Top\n          Fill.Color = xFFDD4848\n          Position.Y = 90.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path9: TPath\n            Align = Center\n            Data.Path = {\n              2000000000000000DD244E414A0C224002000000A69B48414E62F03F02000000\n              5A6437414E62F03F0200000023DB31414A0C2240010000008C6C074089419C41\n              020000006FB1ED3F3827A04102000000AEAE02400AFEA4410200000029DC2140\n              8510A7410200000091232B4066AEA74102000000B07D3540A700A84102000000\n              000040400000A841010000000000A8410000A84102000000D168AC415702A841\n              02000000CCFDAF412671A441020000002200B0415608A04102000000D500B041\n              ECB79E41020000007AAEAF418A6C9D41020000006210AF4196439C4101000000\n              DD244E414A0C224003000000DD244E414A0C2240000000000000504100009041\n              0100000000003041000090410100000000003041000080410100000000005041\n              0000804101000000000050410000904103000000000050410000904100000000\n              0000304100006041010000000000304100001041010000000000504100001041\n              0100000019045041000060410100000000003041000060410300000000003041\n              00006041}\n            Fill.Color = claWhite\n            Locked = True\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object RectangleFunc: TRectangle\n          Align = Top\n          Fill.Color = xFF48D8DD\n          Position.Y = 120.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path10: TPath\n            Align = Center\n            Data.Path = {\n              2300000000000000C3F59641B81E41410100000086EB4D41EC51AC4102000000\n              4EE44A41B0AEAE4102000000129C45412C14B04102000000010040410000B041\n              020000000D843E41EB1DB0410200000013013D41EB1DB0410200000020853B41\n              0000B04102000000B97534413BF9AE410200000024B52F4162ACAB4102000000\n              000030410000A84101000000000030410000704101000000713DDA4000007041\n              02000000CFE4B640AB007041020000005B3C9A4087AD614102000000053B9A40\n              3601504102000000903A9A4001F149410200000019AC9D40AB00444102000000\n              F628A44048E13E41010000007B143241A4701D4002000000E4C535412EC90340\n              02000000F3613D419238EF3F02000000E17A44410000004002000000468A4B41\n              2A36084002000000DB4A5041F19C224002000000000050410000404001000000\n              000050410000104101000000A47089410000104102000000CD46924154FF0F41\n              02000000EA70994178521E410200000040719941C9FE2F41020000005D719941\n              FF0E364102000000FB94984155FF3B4102000000C4F59641B81E414103000000\n              C3F59641B81E4141}\n            Fill.Color = claWhite\n            Locked = True\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object LayoutAudio: TLayout\n        Align = Left\n        Margins.Right = 14.000000000000000000\n        Position.X = 44.000000000000000000\n        Size.Width = 30.000000000000000000\n        Size.Height = 459.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 3\n        object RectangleAudio: TRectangle\n          Align = Top\n          Fill.Kind = None\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path3: TPath\n            Align = Center\n            Data.Path = {\n              19000000000000000000A0400000A84101000000000040400000A84101000000\n              0000404000003041010000000000A04000003041030000000000A0400000A841\n              00000000000030410000E04001000000000010410000E0400100000000001041\n              0000C84101000000000030410000C84103000000000030410000E04000000000\n              000088410000004001000000000070410000004001000000000070410000F041\n              01000000000088410000F041030000000000884100000040000000000000B841\n              00003041010000000000A84100003041010000000000A8410000A84101000000\n              0000B8410000A841030000000000B84100003041000000000000E8410000E040\n              010000000000D8410000E040010000000000D8410000C841010000000000E841\n              0000C841030000000000E8410000E040}\n            Fill.Color = xFFACACBE\n            Hint = 'Is audio'\n            HitTest = False\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object LayoutActions: TLayout\n        Align = MostRight\n        Margins.Left = 4.000000000000000000\n        Position.X = 599.000000000000000000\n        Size.Width = 46.000000000000000000\n        Size.Height = 489.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 0\n        object ButtonCopy: TButton\n          Align = Top\n          Hint = 'Copy text'\n          Margins.Right = 16.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini_left'\n          TabOrder = 0\n          OnClick = ButtonCopyClick\n          object PathCopy: TPath\n            Align = Center\n            Data.Path = {\n              8E0000000000000077BE40422546B8420200000077BE4042717DA74202000000\n              3AB45A42777E9A420200000066E68042777E9A4202000000AF729442777E9A42\n              02000000D28DBC42440B9A4202000000D28DBC42440B9A4202000000D28DBC42\n              440B9A420200000026F1BB4263108C420200000026F1BB426991744202000000\n              26F1BB42190451420200000099D9CB425FBA38420200000007ECDE425FBA3842\n              020000007CFFF1425FBA3842020000003B3F2843FF543A42020000000CE22C43\n              FF543A4202000000DD843143FF543A4202000000AE4735434135414202000000\n              1C7A3A43140351420200000049AC3F43F3D26042020000006C87474385407B42\n              02000000436B4B43156E8642020000001A4F4F43E83B8F420200000074F35043\n              BF5F94420200000074F3504354A39B420200000074F350436DE7A24202000000\n              74F35043CDAC1A430200000018E45043B428234302000000FDD45043DDA42B43\n              02000000950349437FEA314302000000CAC13F433D0A324302000000FF7F3643\n              FB293243020000003B9F2243FB293243020000003B9F2243FB29324302000000\n              3B9F2243FB293243020000008716234361703843020000008716234361504143\n              020000008716234361304A430200000064FB1A43FF1F51430200000060C51143\n              B75E5143020000009D8F08436F9D5143020000006CA7934246E1504302000000\n              24C68142FF1F514302000000B9C95F42B75E514302000000E2A53F42BB544A43\n              02000000E2A53F42F7B3414302000000E2A53F42331339430200000075BE4042\n              540EC9420200000075BE40422346B8420300000077BE40422546B84200000000\n              0AD781427F2AC042010000006E127F429EEF3C430200000004F57E42731F3F43\n              0200000042FA82423FEB404302000000EE59874299F240430200000086628742\n              A8F24043020000001B6B8742AFF2404302000000B4738742B0F2404301000000\n              94A30D43022B414302000000FEC50F439B314143020000004B861143007C3F43\n              02000000E48C114396593D43020000000E8D1143F04B3D4302000000F08C1143\n              493E3D43020000008A8C1143A4303D4301000000BB5411434A4C344302000000\n              E84F114343333343020000002C6810435A53324302000000244F0F432E583243\n              02000000144D0F433758324302000000044B0F434358324302000000F5480F43\n              5258324302000000E6460F43615832430200000086D6F24229FC324302000000\n              3609DF4254A3324302000000633BCB423D4A32430200000026B1BD42BCD42B43\n              020000009CAFBD423B1F23430200000013AEBD42BA691A430200000025B1BD42\n              C2F5BB420200000025B1BD42C2F5BB42020000004BB2BD4253C3B94202000000\n              49EBBB4274FAB74202000000DCB8B9424EF9B7420200000018B5B9424CF9B742\n              0200000051B1B94250F9B742020000008EADB94258F9B742010000009AEF8942\n              5423B8420200000003818542442BB8420200000087E8814205BCBB4202000000\n              06D781427F2AC042030000000AD781427F2AC04200000000926D2B43CD4C7342\n              0200000013C3294300806D420200000079692843A4F06F420200000079692843\n              BBC9784201000000796928436DE79E420200000079692843B31DA14202000000\n              564E294302EBA24202000000B4682A4315EEA24201000000E9463F43CB21A342\n              02000000227B41436D27A3420200000002EB4143ECD1A04202000000C4404043\n              85EB9D4201000000916D2B43CC4C734203000000926D2B43CD4C734200000000\n              DEA4E34221B0764202000000F66DE142E9A5764202000000929EDF4202367A42\n              02000000A19ADF42D7A37E42010000001E5ADE4275F31F4302000000EA51DE42\n              129721430200000097F3E0428EEE224302000000D03AE442A8F2224302000000\n              7F41E442B0F22243020000002C48E442B3F2224302000000DB4EE442B0F22243\n              01000000A05A3D4312C3224302000000E3773E43BEC12243020000000F603F43\n              35DD214302000000E4653F4300C020430100000080AA404372A8C44202000000\n              FFB14043F780C242020000008AD83F43BFB5C04202000000CDC43E43C1A6C042\n              0200000072BF3E4376A6C0420200000018BA3E4358A6C04202000000BDB43E43\n              66A6C0420200000062AF3E4374A6C04202000000B5882443E7BBC04202000000\n              4AEC1F43E7BBC04202000000E04F1B43E7BBC04202000000546318433D4ABC42\n              02000000546318431EC5B3420200000054631843FF3FAB4202000000CD4C1843\n              14AE7F4202000000CD4C184314AE7F4202000000B74A18437B3D7B4202000000\n              1B651743ACA5774202000000F6481643A49B7742010000005AA4E3421FB07642\n              03000000DEA4E34221B07642}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n          object ButtonActions: TButton\n            Align = Right\n            Margins.Right = -16.000000000000000000\n            Position.X = 30.000000000000000000\n            Size.Width = 16.000000000000000000\n            Size.Height = 30.000000000000000000\n            Size.PlatformDefault = False\n            StyleLookup = 'buttonstyle_clearmini_right'\n            TabOrder = 0\n            OnClick = ButtonActionsClick\n            object Path4: TPath\n              Align = Center\n              Data.Path = {\n                1B00000000000000CDCCC54233B33843010000006766C942CDCC3A4301000000\n                34B36C4366A6AB4302000000CE4C7143CC4CAE43020000003433784333F3AF43\n                0200000067E67F4333F3AF4302000000CDCC834333F3AF430200000000408743\n                0040AE4302000000CD8C894366A6AB43010000000080CD439A193B4301000000\n                66A6CE4300803843020000000080CF4300003643020000000000D04300003343\n                020000000000D043CDCC2F43020000000000D0439A19274302000000CD4CCC43\n                000020430200000033B3C743000020430100000033B3C7430000204301000000\n                3333E14200002043010000003333E1420000204302000000CDCCCE4200002043\n                020000000000C0429A192743020000000000C042CDCC2F43020000000000C042\n                9A193343020000003333C2423333364302000000CDCCC54233B3384303000000\n                CDCCC54233B33843}\n              Fill.Color = xFFACACBE\n              Locked = True\n              HitTest = False\n              Margins.Left = 2.000000000000000000\n              Size.Width = 7.000000000000000000\n              Size.Height = 7.000000000000000000\n              Size.PlatformDefault = False\n              Stroke.Kind = None\n              WrapMode = Fit\n            end\n          end\n        end\n      end\n      object LayoutCompact: TLayout\n        Align = Bottom\n        Position.X = 44.000000000000000000\n        Position.Y = 459.000000000000000000\n        Size.Width = 551.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 4\n        object ButtonCopyCompact: TButton\n          Align = Right\n          Hint = 'Copy text/image urls'\n          Position.X = 491.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 3\n          OnClick = ButtonCopyClick\n          object Path5: TPath\n            Align = Center\n            Data.Path = {\n              8E0000000000000077BE40422546B8420200000077BE4042717DA74202000000\n              3AB45A42777E9A420200000066E68042777E9A4202000000AF729442777E9A42\n              02000000D28DBC42440B9A4202000000D28DBC42440B9A4202000000D28DBC42\n              440B9A420200000026F1BB4263108C420200000026F1BB426991744202000000\n              26F1BB42190451420200000099D9CB425FBA38420200000007ECDE425FBA3842\n              020000007CFFF1425FBA3842020000003B3F2843FF543A42020000000CE22C43\n              FF543A4202000000DD843143FF543A4202000000AE4735434135414202000000\n              1C7A3A43140351420200000049AC3F43F3D26042020000006C87474385407B42\n              02000000436B4B43156E8642020000001A4F4F43E83B8F420200000074F35043\n              BF5F94420200000074F3504354A39B420200000074F350436DE7A24202000000\n              74F35043CDAC1A430200000018E45043B428234302000000FDD45043DDA42B43\n              02000000950349437FEA314302000000CAC13F433D0A324302000000FF7F3643\n              FB293243020000003B9F2243FB293243020000003B9F2243FB29324302000000\n              3B9F2243FB293243020000008716234361703843020000008716234361504143\n              020000008716234361304A430200000064FB1A43FF1F51430200000060C51143\n              B75E5143020000009D8F08436F9D5143020000006CA7934246E1504302000000\n              24C68142FF1F514302000000B9C95F42B75E514302000000E2A53F42BB544A43\n              02000000E2A53F42F7B3414302000000E2A53F42331339430200000075BE4042\n              540EC9420200000075BE40422346B8420300000077BE40422546B84200000000\n              0AD781427F2AC042010000006E127F429EEF3C430200000004F57E42731F3F43\n              0200000042FA82423FEB404302000000EE59874299F240430200000086628742\n              A8F24043020000001B6B8742AFF2404302000000B4738742B0F2404301000000\n              94A30D43022B414302000000FEC50F439B314143020000004B861143007C3F43\n              02000000E48C114396593D43020000000E8D1143F04B3D4302000000F08C1143\n              493E3D43020000008A8C1143A4303D4301000000BB5411434A4C344302000000\n              E84F114343333343020000002C6810435A53324302000000244F0F432E583243\n              02000000144D0F433758324302000000044B0F434358324302000000F5480F43\n              5258324302000000E6460F43615832430200000086D6F24229FC324302000000\n              3609DF4254A3324302000000633BCB423D4A32430200000026B1BD42BCD42B43\n              020000009CAFBD423B1F23430200000013AEBD42BA691A430200000025B1BD42\n              C2F5BB420200000025B1BD42C2F5BB42020000004BB2BD4253C3B94202000000\n              49EBBB4274FAB74202000000DCB8B9424EF9B7420200000018B5B9424CF9B742\n              0200000051B1B94250F9B742020000008EADB94258F9B742010000009AEF8942\n              5423B8420200000003818542442BB8420200000087E8814205BCBB4202000000\n              06D781427F2AC042030000000AD781427F2AC04200000000926D2B43CD4C7342\n              0200000013C3294300806D420200000079692843A4F06F420200000079692843\n              BBC9784201000000796928436DE79E420200000079692843B31DA14202000000\n              564E294302EBA24202000000B4682A4315EEA24201000000E9463F43CB21A342\n              02000000227B41436D27A3420200000002EB4143ECD1A04202000000C4404043\n              85EB9D4201000000916D2B43CC4C734203000000926D2B43CD4C734200000000\n              DEA4E34221B0764202000000F66DE142E9A5764202000000929EDF4202367A42\n              02000000A19ADF42D7A37E42010000001E5ADE4275F31F4302000000EA51DE42\n              129721430200000097F3E0428EEE224302000000D03AE442A8F2224302000000\n              7F41E442B0F22243020000002C48E442B3F2224302000000DB4EE442B0F22243\n              01000000A05A3D4312C3224302000000E3773E43BEC12243020000000F603F43\n              35DD214302000000E4653F4300C020430100000080AA404372A8C44202000000\n              FFB14043F780C242020000008AD83F43BFB5C04202000000CDC43E43C1A6C042\n              0200000072BF3E4376A6C0420200000018BA3E4358A6C04202000000BDB43E43\n              66A6C0420200000062AF3E4374A6C04202000000B5882443E7BBC04202000000\n              4AEC1F43E7BBC04202000000E04F1B43E7BBC04202000000546318433D4ABC42\n              02000000546318431EC5B3420200000054631843FF3FAB4202000000CD4C1843\n              14AE7F4202000000CD4C184314AE7F4202000000B74A18437B3D7B4202000000\n              1B651743ACA5774202000000F6481643A49B7742010000005AA4E3421FB07642\n              03000000DEA4E34221B07642}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object RectangleAudioCompact: TRectangle\n          Align = Left\n          Fill.Kind = None\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Kind = None\n          XRadius = 2.000000000000000000\n          YRadius = 2.000000000000000000\n          object Path6: TPath\n            Align = Center\n            Data.Path = {\n              19000000000000000000A0400000A84101000000000040400000A84101000000\n              0000404000003041010000000000A04000003041030000000000A0400000A841\n              00000000000030410000E04001000000000010410000E0400100000000001041\n              0000C84101000000000030410000C84103000000000030410000E04000000000\n              000088410000004001000000000070410000004001000000000070410000F041\n              01000000000088410000F041030000000000884100000040000000000000B841\n              00003041010000000000A84100003041010000000000A8410000A84101000000\n              0000B8410000A841030000000000B84100003041000000000000E8410000E040\n              010000000000D8410000E040010000000000D8410000C841010000000000E841\n              0000C841030000000000E8410000E040}\n            Fill.Color = xFFACACBE\n            Hint = 'Is audio'\n            HitTest = False\n            Size.Width = 20.000000000000000000\n            Size.Height = 20.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object ButtonDeleteCompact: TButton\n          Align = Right\n          Hint = 'Delete'\n          Position.X = 521.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 1\n          OnClick = ButtonDeleteClick\n          object Path8: TPath\n            Align = Center\n            Data.Path = {\n              6900000000000000000050410000000001000000000030410000000002000000\n              867D154100000000020000000000004133ECAB3F020000000000004100004040\n              01000000000000410000804001000000000000400000804002000000BC4EB93F\n              00008040020000000000803FAF538E40020000000000803F0000A04002000000\n              0000803F51ACB14002000000BA4EB93F0000C04002000000FFFFFF3F0000C040\n              01000000000040400000C04001000000000040400000A0410200000000004040\n              51ACB14102000000BC4E99400000C041020000000000E0400000C04101000000\n              000088410000C0410200000051AC99410000C041020000000000A84151ACB141\n              020000000000A8410000A041010000000000A8410000C040010000000000B041\n              0000C04002000000146BB4410000C040020000000000B84151ACB14002000000\n              0000B8410000A040020000000000B841AF538E4002000000146BB44100008040\n              020000000000B041000080400100000000008041000080400100000000008041\n              00004040020000000000804133ECAB3F020000007A826A410000000002000000\n              0000504100000000030000000000504100000000000000000000204100004040\n              02000000000020415DA71C4002000000D8292741FFFFFF3F0200000000003041\n              000000400100000000005041000000400200000029D658410000004002000000\n              000060415EA71C40020000000000604100004040010000000000604100008040\n              0100000000002041000080400300000000002041000040400000000000009841\n              0000A041020000000000984129D6A8410200000029D690410000B04102000000\n              000088410000B041010000000000E0400000B041020000005EA7BC400000B041\n              020000000000A04029D6A841020000000000A0400000A041010000000000A040\n              0000C04001000000000098410000C04003000000000098410000A04100000000\n              000040410000104102000000D7293741000010410200000000003041D7291741\n              0200000000003041000020410100000000003041000090410200000000003041\n              146B944102000000D72937410000984102000000000040410000984102000000\n              28D64841000098410200000000005041146B9441020000000000504100009041\n              0100000000005041000020410200000000005041D72917410200000029D64841\n              0000104102000000000040410000104103000000000040410000104100000000\n              00007041000090410200000000007041146B944102000000D729774100009841\n              02000000000080410000984102000000146B8441000098410200000000008841\n              146B944102000000000088410000904101000000000088410000204102000000\n              00008841D729174102000000146B844100001041020000000000804100001041\n              02000000D7297741000010410200000000007041D72917410200000000007041\n              0000204103000000000070410000904100000000000000410000104102000000\n              AF53EE4000001041020000000000E040D7291741020000000000E04000002041\n              010000000000E04000009041020000000000E040146B944102000000AF53EE40\n              000098410200000000000041000098410200000028D608410000984102000000\n              00001041146B9441020000000000104100009041010000000000104100002041\n              0200000000001041D72917410200000029D60841000010410200000000000041\n              00001041030000000000004100001041}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n        object ButtonEditCompact: TButton\n          Align = Right\n          Hint = 'Copy text'\n          Position.X = 461.000000000000000000\n          Size.Width = 30.000000000000000000\n          Size.Height = 30.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 2\n          OnClick = MenuItemEditClick\n          object Path11: TPath\n            Align = Center\n            Data.Path = {\n              1500000000000000000000003333634101000000000000000000904101000000\n              333373400000904101000000CDCC6C41CDCCDC40010000000000304166664640\n              0100000000000000333363410100000000000000333363410300000000000000\n              33336341000000009A998D410000804002000000CDCC90416666664002000000\n              CDCC904100004040020000009A998D416666264001000000666676419A99993E\n              0200000000007041CDCCCCBD0200000066666641CDCCCCBD0200000000006041\n              9A99993E0100000033334341666606400100000000008041CDCCBC4001000000\n              9A998D4100008040010000009A998D4100008040030000009A998D4100008040}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n    end\n  end\n  object PopupMenuActions: TPopupMenu\n    Left = 528\n    Top = 48\n    object MenuItemDelete: TMenuItem\n      Text = 'Delete'\n      OnClick = ButtonDeleteClick\n    end\n    object MenuItemEdit: TMenuItem\n      Text = 'Edit'\n      OnClick = MenuItemEditClick\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameMessage.pas",
    "content": "﻿unit ChatGPT.FrameMessage;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Objects, FMX.Memo.Types, FMX.Layouts, FMX.Controls.Presentation,\n  FMX.ScrollBox, FMX.Memo, System.Generics.Collections, FMX.BehaviorManager,\n  ChatGPT.FrameImage, ChatGPT.Classes, FMX.Menus, OpenAI.Chat, System.JSON;\n\n{$SCOPEDENUMS ON}\n\ntype\n  TFrameMessage = class(TFrame)\n    RectangleBG: TRectangle;\n    LayoutInfo: TLayout;\n    RectangleUser: TRectangle;\n    Path1: TPath;\n    RectangleBot: TRectangle;\n    Path2: TPath;\n    LayoutContent: TLayout;\n    LayoutContentText: TLayout;\n    LayoutAudio: TLayout;\n    RectangleAudio: TRectangle;\n    Path3: TPath;\n    FlowLayoutImages: TFlowLayout;\n    LayoutClient: TLayout;\n    LayoutActions: TLayout;\n    ButtonCopy: TButton;\n    PathCopy: TPath;\n    LayoutCompact: TLayout;\n    ButtonCopyCompact: TButton;\n    Path5: TPath;\n    RectangleAudioCompact: TRectangle;\n    Path6: TPath;\n    ButtonActions: TButton;\n    Path4: TPath;\n    RectangleSystem: TRectangle;\n    Path7: TPath;\n    ButtonDeleteCompact: TButton;\n    Path8: TPath;\n    PopupMenuActions: TPopupMenu;\n    MenuItemDelete: TMenuItem;\n    MenuItemEdit: TMenuItem;\n    RectangleError: TRectangle;\n    Path9: TPath;\n    RectangleFunc: TRectangle;\n    Path10: TPath;\n    LayoutFunc: TLayout;\n    ButtonExecuteFunc: TButton;\n    LabelGPTFunc: TLabel;\n    AniIndicatorFunc: TAniIndicator;\n    LayoutFuncState: TLayout;\n    PathSuccess: TPath;\n    PathError: TPath;\n    PathWait: TPath;\n    ButtonEditCompact: TButton;\n    Path11: TPath;\n    procedure FrameResize(Sender: TObject);\n    procedure ButtonCopyClick(Sender: TObject);\n    procedure ButtonDeleteClick(Sender: TObject);\n    procedure ButtonActionsClick(Sender: TObject);\n    procedure ButtonExecuteFuncClick(Sender: TObject);\n    procedure MenuItemEditClick(Sender: TObject);\n  private\n    FText: string;\n    FIsError: Boolean;\n    FIsAudio: Boolean;\n    FImages: TArray<string>;\n    FId: string;\n    FMode: TWindowMode;\n    FOnDelete: TNotifyEvent;\n    FMessageRole: TMessageKind;\n    FFuncName: string;\n    FFuncArgs: string;\n    FOnFuncExecute: TOnFuncExecute;\n    FFuncState: TMessageFuncState;\n    FOnTextUpdated: TOnTextUpdated;\n    procedure SetText(const Value: string);\n    procedure SetIsError(const Value: Boolean);\n    procedure ParseText(const Value: string);\n    procedure SetIsAudio(const Value: Boolean);\n    procedure BuildContent(Parts: TList<TPart>);\n    procedure SetImages(const Value: TArray<string>);\n    procedure SetId(const Value: string);\n    procedure FOnTextWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\n    procedure UpdateMode;\n    procedure CreateCodePart(Part: TPart);\n    procedure CreatePartText(Part: TPart);\n    procedure SetOnDelete(const Value: TNotifyEvent);\n    procedure UpdateMessageRole;\n    procedure SetMessageRole(const Value: TMessageKind);\n    procedure SetFuncArgs(const Value: string);\n    procedure SetFuncName(const Value: string);\n    procedure SetOnFuncExecute(const Value: TOnFuncExecute);\n    procedure AfterExecuteFunc(Result: Boolean; Error: string);\n    procedure SetFuncState(const Value: TMessageFuncState);\n    procedure UpdateBufferText(const Id, Text: string);\n    procedure SetOnTextUpdated(const Value: TOnTextUpdated);\n  public\n    procedure UpdateContentSize;\n    property Id: string read FId write SetId;\n    property Text: string read FText write SetText;\n    property Images: TArray<string> read FImages write SetImages;\n    property IsAudio: Boolean read FIsAudio write SetIsAudio;\n    property IsError: Boolean read FIsError write SetIsError;\n    property MessageRole: TMessageKind read FMessageRole write SetMessageRole;\n    property FuncName: string read FFuncName write SetFuncName;\n    property FuncArgs: string read FFuncArgs write SetFuncArgs;\n    property FuncState: TMessageFuncState read FFuncState write SetFuncState;\n    procedure SetMode(const Value: TWindowMode);\n    procedure StartAnimate;\n    procedure ExecuteFunc;\n    constructor Create(AOwner: TComponent); override;\n    property OnDelete: TNotifyEvent read FOnDelete write SetOnDelete;\n    property OnFuncExecute: TOnFuncExecute read FOnFuncExecute write SetOnFuncExecute;\n    property OnTextUpdated: TOnTextUpdated read FOnTextUpdated write SetOnTextUpdated;\n    function ToJsonObject: TJSONObject;\n  end;\n\nconst\n  ColorError = $FFEF4444;\n  ColorUser = $FFECECF1;\n  ColorBot = $FFD1D5E3;\n  BGColorUser = $00FFFFFF;\n  BGColorBot = $14FFFFFF;\n\nimplementation\n\nuses\n  System.Math, FMX.Platform, FMX.Memo.Style, FMX.Ani, ChatGPT.FrameCode,\n  ChatGPT.FrameSVG, ChatGPT.FramePlainText, ChatGPT.FrameUIMessage,\n  ChatGPT.TextEditor, ChatGPT.Manager;\n\n{$R *.fmx}\n\nprocedure TFrameMessage.UpdateContentSize;\nbegin\n  //Flow\n  if FlowLayoutImages.Visible then\n  begin\n    var ItemW := Min(256, Max(Trunc(FlowLayoutImages.Width / FlowLayoutImages.ControlsCount), 48));\n    if ItemW = 48 then\n      ItemW := Trunc(FlowLayoutImages.Width / Trunc(FlowLayoutImages.Width / 48));\n    var FH: Single := 0;\n    for var Control in FlowLayoutImages.Controls do\n    begin\n      Control.Size.Size := TSizeF.Create(ItemW, ItemW);\n      FH := Max(Control.Position.Y + Control.Height, FH);\n    end;\n    if FlowLayoutImages.Height <> FH then\n      FlowLayoutImages.Height := FH;\n  end;\n\n  //Frames\n  var H := LayoutClient.Padding.Top + LayoutClient.Padding.Bottom;\n  for var Control in LayoutContentText.Controls do\n    if Control.Visible then\n      H := H + Control.Height + Control.Margins.Top + Control.Margins.Bottom;\n\n  if LayoutCompact.Visible then\n    H := Ceil(H + LayoutCompact.Height);\n  H := Max(H, 64);\n  if Height <> H then\n    Height := H;\nend;\n\nprocedure TFrameMessage.UpdateMode;\nbegin\n  case FMode of\n    TWindowMode.Compact:\n      begin\n        LayoutCompact.Visible := True;\n        LayoutActions.Visible := False;\n        LayoutAudio.Visible := False;\n      end;\n    TWindowMode.Full:\n      begin\n        LayoutCompact.Visible := False;\n        LayoutAudio.Visible := FIsAudio;\n        LayoutActions.Visible := True;\n      end;\n  end;\nend;\n\nprocedure TFrameMessage.AfterExecuteFunc(Result: Boolean; Error: string);\nbegin\n  LayoutFuncState.Hint := '';\n  LayoutFuncState.HitTest := False;\n  if Result then\n    FuncState := TMessageFuncState.Success\n  else\n  begin\n    FuncState := TMessageFuncState.Error;\n    LayoutFuncState.Hint := Error;\n    LayoutFuncState.HitTest := True;\n  end;\nend;\n\nprocedure TFrameMessage.ExecuteFunc;\nbegin\n  if Assigned(FOnFuncExecute) then\n  begin\n    FuncState := TMessageFuncState.Executing;\n    FOnFuncExecute(Self, FFuncName, FFuncArgs, AfterExecuteFunc);\n  end;\nend;\n\nprocedure TFrameMessage.ButtonExecuteFuncClick(Sender: TObject);\nbegin\n  ExecuteFunc;\nend;\n\nprocedure TFrameMessage.ButtonActionsClick(Sender: TObject);\nbegin\n  PopupMenuActions.PopupComponent := ButtonActions;\n  var Pt := Application.MainForm.ClientToScreen(ButtonActions.AbsoluteRect.TopLeft);\n  PopupMenuActions.Popup(Pt.X, Pt.Y + ButtonActions.Height);\nend;\n\nprocedure TFrameMessage.ButtonCopyClick(Sender: TObject);\nbegin\n  var ClipBoard: IFMXClipboardService;\n  if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, ClipBoard) then\n  begin\n    if not Text.IsEmpty then\n      ClipBoard.SetClipboard(Text)\n    else if Length(Images) > 0 then\n      ClipBoard.SetClipboard(string.Join(','#13#10, Images))\n    else if not FFuncName.IsEmpty then\n      ClipBoard.SetClipboard(FFuncName + #13#10 + FFuncArgs);\n    ShowUIMessage('Coppied');\n  end\n  else\n    ShowUIMessage('Clipboard error');\nend;\n\nprocedure TFrameMessage.ButtonDeleteClick(Sender: TObject);\nbegin\n  if Assigned(FOnDelete) then\n    FOnDelete(Self);\n  Release;\nend;\n\nconstructor TFrameMessage.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  LayoutActions.Visible := False;\n  IsAudio := False;\n  FlowLayoutImages.Visible := False;\n  MenuItemEdit.Enabled := False;\n  ButtonEditCompact.Enabled := False;\n  LayoutFunc.Visible := False;\nend;\n\nprocedure TFrameMessage.StartAnimate;\nbegin\n  LayoutClient.Margins.Top := 50;\n  LayoutClient.Opacity := 0;\n  TAnimator.AnimateFloat(LayoutClient, 'Margins.Top', 0);\n  TAnimator.AnimateFloat(LayoutClient, 'Opacity', 1);\nend;\n\nfunction TFrameMessage.ToJsonObject: TJSONObject;\nbegin\n  Result := TJSONObject.Create;\n  try\n    Result.AddPair('id', FId);\n    Result.AddPair('role', FMessageRole.ToString);\n    Result.AddPair('content', FText);\n    if Length(FImages) > 0 then\n    begin\n      var JImages := TJSONArray.Create;\n      for var Img in FImages do\n        JImages.Add(Img);\n      Result.AddPair('images', JImages);\n    end;\n    Result.AddPair('func_name', FFuncName);\n    Result.AddPair('func_args', FFuncArgs);\n    Result.AddPair('func_state', Ord(FFuncState));\n  except\n    //\n  end;\nend;\n\nprocedure TFrameMessage.FOnTextWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  if ssTouch in Shift then\n  begin\n    if ParentControl.ParentControl is TCustomScrollBox then\n      TCustomScrollBox(ParentControl.ParentControl).ViewportPosition :=\n        TPointF.Create(TCustomScrollBox(ParentControl.ParentControl).ViewportPosition.X,\n        TCustomScrollBox(ParentControl.ParentControl).ViewportPosition.Y + WheelDelta);\n  end\n  else if ParentControl.ParentControl is TCustomScrollBox then\n    TCustomScrollBox(ParentControl.ParentControl).AniCalculations.MouseWheel(0, -WheelDelta);\nend;\n\nprocedure TFrameMessage.FrameResize(Sender: TObject);\nbegin\n  LayoutContent.Width := Min(Width - (LayoutClient.Padding.Left + LayoutClient.Padding.Right), MaxMessageWidth);\n  UpdateContentSize;\nend;\n\nprocedure TFrameMessage.UpdateBufferText(const Id, Text: string);\nbegin\n  if Assigned(FOnTextUpdated) then\n    FOnTextUpdated(Self, Id, Text);\nend;\n\nprocedure TFrameMessage.MenuItemEditClick(Sender: TObject);\nbegin\n  Manager.OverlayContainer.BringToFront;\n  TFrameTextEditor.Execute(Manager.OverlayContainer,\n    procedure(Frame: TFrameTextEditor)\n    begin\n      Frame.LabelCaption.Text := 'Message edit';\n      Frame.MemoText.Text := Text;\n    end,\n    procedure(Frame: TFrameTextEditor; Success: Boolean)\n    begin\n      if Success then\n      begin\n        Text := Frame.MemoText.Text;\n        UpdateBufferText(Id, Text);\n      end;\n    end);\nend;\n\nprocedure TFrameMessage.SetFuncArgs(const Value: string);\nbegin\n  FFuncArgs := Value;\n  LabelGPTFunc.Hint := 'Arsg: '#13#10 + Value;\nend;\n\nprocedure TFrameMessage.SetFuncName(const Value: string);\nbegin\n  FFuncName := Value;\n  LayoutFunc.Visible := not FFuncName.IsEmpty;\n  LabelGPTFunc.Text := Value;\nend;\n\nprocedure TFrameMessage.SetFuncState(const Value: TMessageFuncState);\nbegin\n  FFuncState := Value;\n  AniIndicatorFunc.Visible := Value = TMessageFuncState.Executing;\n  AniIndicatorFunc.Enabled := AniIndicatorFunc.Visible;\n  ButtonExecuteFunc.Enabled := Value in [TMessageFuncState.Error, TMessageFuncState.Wait];\n  PathSuccess.Visible := Value = TMessageFuncState.Success;\n  PathError.Visible := Value = TMessageFuncState.Error;\n  PathWait.Visible := Value = TMessageFuncState.Wait;\nend;\n\nprocedure TFrameMessage.SetId(const Value: string);\nbegin\n  FId := Value;\nend;\n\nprocedure TFrameMessage.SetImages(const Value: TArray<string>);\nbegin\n  FImages := Value;\n  FlowLayoutImages.BeginUpdate;\n  try\n    while FlowLayoutImages.ControlsCount > 0 do\n      FlowLayoutImages.Controls[0].Free;\n    for var Item in FImages do\n    begin\n      var Frame := TFrameImage.Create(FlowLayoutImages);\n      Frame.Parent := FlowLayoutImages;\n      Frame.Image := Item;\n    end;\n  finally\n    FlowLayoutImages.EndUpdate;\n  end;\n  FlowLayoutImages.Visible := FlowLayoutImages.ControlsCount > 0;\n  UpdateContentSize;\nend;\n\nprocedure TFrameMessage.SetIsAudio(const Value: Boolean);\nbegin\n  FIsAudio := Value;\n  LayoutAudio.Visible := FIsAudio;\n  RectangleAudioCompact.Visible := FIsAudio;\nend;\n\nprocedure TFrameMessage.SetIsError(const Value: Boolean);\nbegin\n  FIsError := Value;\n  for var Control in LayoutContentText.Controls do\n    if Control is TFrameText then\n      TFrameText(Control).MemoText.FontColor := $FFEF4444;\n  UpdateMessageRole;\nend;\n\nprocedure TFrameMessage.SetMessageRole(const Value: TMessageKind);\nbegin\n  FMessageRole := Value;\n  UpdateMessageRole;\nend;\n\nprocedure TFrameMessage.SetMode(const Value: TWindowMode);\nbegin\n  FMode := Value;\n  UpdateMode;\nend;\n\nprocedure TFrameMessage.SetOnDelete(const Value: TNotifyEvent);\nbegin\n  FOnDelete := Value;\nend;\n\nprocedure TFrameMessage.SetOnFuncExecute(const Value: TOnFuncExecute);\nbegin\n  FOnFuncExecute := Value;\nend;\n\nprocedure TFrameMessage.SetOnTextUpdated(const Value: TOnTextUpdated);\nbegin\n  FOnTextUpdated := Value;\nend;\n\nprocedure TFrameMessage.ParseText(const Value: string);\n\n  function CreatePart(AType: TPartType; AContent: string): TPart;\n  begin\n    Result.PartType := AType;\n    if (AType = TPartType.Code) and (not (AContent.StartsWith(#13) or AContent.StartsWith(' '))) then\n    begin\n      var Len := AContent.IndexOfAny([#13, #10, ' ']);\n      if Len >= 0 then\n      begin\n        Result.Language := AContent.Substring(0, Len);\n        Result.Content := AContent.Remove(0, Len).Trim([#13, #10, ' ']);\n      end\n      else\n        Result.Content := AContent.Trim([#13, #10, ' ']);\n    end\n    else\n      Result.Content := AContent.Trim([#13, #10, ' ']);\n  end;\n\nvar\n  Parts: TList<TPart>;\n  CodePairs: Integer;\n  IsCodeParse: Boolean;\n  Buf: string;\nbegin\n  try\n    if Value.IsEmpty then\n      Exit;\n    Parts := TList<TPart>.Create;\n    try\n      if Value.StartsWith('{') then\n      try\n        var JSON := TJSONObject.ParseJSONValue(Value);\n        if Assigned(JSON) then\n        try\n          var Part: TPart;\n          Part.PartType := TPartType.Code;\n          Part.Content := Value;\n          Part.Language := 'json';\n          Parts.Add(Part);\n          Exit;\n        finally\n          JSON.Free;\n        end;\n      except\n        //\n      end;\n      CodePairs := 0;\n      Buf := '';\n      IsCodeParse := False;\n      for var i := 1 to Value.Length do\n      begin\n        if Value[i] = '`' then\n        begin\n          Inc(CodePairs);\n          Buf := Buf + Value[i];\n          if CodePairs = 3 then\n          begin\n            if IsCodeParse then\n            begin\n              if not Buf.Trim([' ', '`']).IsEmpty then\n                Parts.Add(CreatePart(TPartType.Code, Buf.Trim(['`'])));\n              IsCodeParse := False;\n            end\n            else\n            begin\n              if not Buf.Trim([' ', '`']).IsEmpty then\n                Parts.Add(CreatePart(TPartType.Text, Buf.Trim([' ', '`'])));\n              IsCodeParse := True;\n            end;\n            CodePairs := 0;\n            Buf := '';\n          end;\n        end\n        else\n        begin\n          CodePairs := 0;\n          Buf := Buf + Value[i];\n        end;\n      end;\n      if IsCodeParse then\n      begin\n        if not Buf.Trim([' ', '`']).IsEmpty then\n          Parts.Add(CreatePart(TPartType.Code, Buf.Trim(['`'])));\n      end\n      else\n      begin\n        if not Buf.Trim([' ']).IsEmpty then\n          Parts.Add(CreatePart(TPartType.Text, Buf));\n      end;\n    finally\n      BuildContent(Parts);\n      Parts.Free;\n    end;\n  finally\n    UpdateContentSize;\n  end;\nend;\n\nprocedure TFrameMessage.CreateCodePart(Part: TPart);\nbegin\n  var Frame := TFrameCode.Create(LayoutContentText);\n  Frame.Parent := LayoutContentText;\n  Frame.Fill(Part);\n  Frame.Align := TAlignLayout.None;\n  Frame.Position.Y := 10000;\n  Frame.Align := TAlignLayout.Top;\n  Frame.OnWheel := FOnTextWheel;\nend;\n\nprocedure TFrameMessage.UpdateMessageRole;\nbegin\n  RectangleUser.Visible := FMessageRole = TMessageKind.User;\n  RectangleBot.Visible := FMessageRole = TMessageKind.Assistant;\n  RectangleSystem.Visible := FMessageRole = TMessageKind.System;\n  RectangleError.Visible := FMessageRole = TMessageKind.Error;\n  RectangleFunc.Visible := FMessageRole = TMessageKind.Func;\n\n  if FMessageRole = TMessageKind.Assistant then\n    RectangleBG.Fill.Color := BGColorBot\n  else\n    RectangleBG.Fill.Color := BGColorUser;\nend;\n\nprocedure TFrameMessage.CreatePartText(Part: TPart);\nbegin\n  var Frame := TFrameText.Create(LayoutContentText);\n  Frame.Parent := LayoutContentText;\n  Frame.Fill(Part);\n  Frame.Align := TAlignLayout.None;\n  Frame.Position.Y := 10000;\n  Frame.Align := TAlignLayout.Top;\n  Frame.OnWheel := FOnTextWheel;\n  if IsError then\n    Frame.MemoText.FontColor := ColorError\n  else if FMessageRole = TMessageKind.Assistant then\n    Frame.MemoText.FontColor := ColorBot\n  else\n    Frame.MemoText.FontColor := ColorUser;\nend;\n\nprocedure TFrameMessage.BuildContent(Parts: TList<TPart>);\nbegin\n  LayoutContentText.BeginUpdate;\n  try\n    FlowLayoutImages.Parent := nil;\n    LayoutFunc.Parent := nil;\n    while LayoutContentText.ControlsCount > 0 do\n      LayoutContentText.Controls[0].Free;\n    FlowLayoutImages.Parent := LayoutContentText;\n    LayoutFunc.Parent := LayoutContentText;\n    for var Part in Parts do\n    begin\n      //SVG check\n      var PosS := Part.Content.IndexOf('<svg');\n      if PosS >= 0 then\n      begin\n        var PosE := Part.Content.IndexOf('</svg>');\n        if PosE >= 0 then\n        begin\n          var SvgText := Part.Content.Substring(PosS, PosE - PosS + 6);\n          if not SvgText.IsEmpty then\n          try\n            var Frame := TFrameSVG.Create(LayoutContentText, SvgText);\n            Frame.Parent := LayoutContentText;\n            Frame.Align := TAlignLayout.None;\n            Frame.Position.Y := 10000;\n            Frame.Align := TAlignLayout.Top;\n          except\n            // not insert\n          end;\n        end;\n      end;\n\n      // Code\n      if Part.PartType = TPartType.Code then\n      begin\n        CreateCodePart(Part);\n        Continue;\n      end;\n\n      // Text\n      if Part.PartType = TPartType.Text then\n      begin\n        CreatePartText(Part);\n        Continue;\n      end;\n    end;\n  finally\n    LayoutContentText.EndUpdate;\n  end;\nend;\n\nprocedure TFrameMessage.SetText(const Value: string);\nbegin\n  FText := Value.Trim([' ', #13, #10]);\n  MenuItemEdit.Enabled := not FText.IsEmpty;\n  ButtonEditCompact.Enabled := not FText.IsEmpty;\n  UpdateMode;\n  ParseText(FText);\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FramePlainText.fmx",
    "content": "object FrameText: TFrameText\n  Size.Width = 575.000000000000000000\n  Size.Height = 387.000000000000000000\n  Size.PlatformDefault = False\n  OnResize = FrameResize\n  OnResized = FrameResize\n  object MemoText: TMemo\n    Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]\n    Caret.Color = x00FFFFFF\n    DataDetectorTypes = []\n    DisableMouseWheel = True\n    Lines.Strings = (\n      'begin'\n      ''\n      'end.')\n    ReadOnly = True\n    ShowScrollBars = False\n    StyledSettings = [Style]\n    TextSettings.Font.Family = 'Segoe UI, Roboto'\n    TextSettings.Font.Size = 16.000000000000000000\n    TextSettings.FontColor = xFFECECF1\n    TextSettings.WordWrap = True\n    Align = Client\n    CanParentFocus = True\n    Cursor = crDefault\n    DisableFocusEffect = True\n    EnableDragHighlight = False\n    Size.Width = 575.000000000000000000\n    Size.Height = 387.000000000000000000\n    Size.PlatformDefault = False\n    StyleLookup = 'memostyle_clear'\n    TabOrder = 0\n    OnApplyStyleLookup = MemoTextApplyStyleLookup\n    OnMouseWheel = MemoTextMouseWheel\n    OnPresentationNameChoosing = MemoTextPresentationNameChoosing\n    Viewport.Width = 565.000000000000000000\n    Viewport.Height = 387.000000000000000000\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FramePlainText.pas",
    "content": "﻿unit ChatGPT.FramePlainText;\n\ninterface\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Objects, FMX.Memo.Types, FMX.Controls.Presentation, FMX.ScrollBox,\n  FMX.Memo, FMX.Layouts, FMX.Memo.Style, ChatGPT.Classes, FMX.TextLayout,\n  ChatGPT.Code, FMX.RichEdit.Style;\n\ntype\n  TFrameText = class(TFrame)\n    MemoText: TMemo;\n    procedure FrameResize(Sender: TObject);\n    procedure MemoTextMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\n    procedure MemoTextPresentationNameChoosing(Sender: TObject; var PresenterName: string);\n    procedure MemoTextApplyStyleLookup(Sender: TObject);\n  private\n    FOnWheel: TMouseWheelEvent;\n    FStyledMemo: TRichEditStyled;\n    procedure SetOnWheel(const Value: TMouseWheelEvent);\n  public\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n    function GetContentHeight: Single;\n    procedure Fill(Data: TPart);\n    property OnWheel: TMouseWheelEvent read FOnWheel write SetOnWheel;\n  end;\n\nimplementation\n\nuses\n  System.Math, System.Net.URLClient;\n\n{$R *.fmx}\n\n{ TFrameText }\n\nconstructor TFrameText.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  MemoText.DisableDisappear := True;\n  {$IFDEF MOBILE}\n  MemoText.HitTest := False;\n  {$ENDIF}\n  MemoText.TextSettings.VertAlign := TTextAlign.Center;\n  MemoText.TextSettings.WordWrap := True;\nend;\n\ndestructor TFrameText.Destroy;\nbegin\n  inherited;\nend;\n\nprocedure TFrameText.Fill(Data: TPart);\nbegin\n  FStyledMemo := (MemoText.Presentation as TRichEditStyled);\n  MemoText.ApplyStyleLookup;\n  MemoText.Text := Data.Content;\n  FrameResize(nil);\nend;\n\nprocedure TFrameText.FrameResize(Sender: TObject);\nbegin\n  var H := GetContentHeight;\n  if H <> Height then\n    Height := H;\nend;\n\nfunction TFrameText.GetContentHeight: Single;\nbegin\n  if Assigned(FStyledMemo) then\n    FStyledMemo.RecalcSize;\n  var ContentH := MemoText.ContentBounds.Height;\n  if (ContentH + 5) < 30 then\n    MemoText.Margins.Top := 25 - ContentH\n  else\n    MemoText.Margins.Top := 0;\n  Result := Max(ContentH + 5, 30) +\n    MemoText.Margins.Top +\n    MemoText.Margins.Bottom;\nend;\n\nprocedure TFrameText.MemoTextApplyStyleLookup(Sender: TObject);\nbegin\n  FStyledMemo.SetCodeSyntaxName('md', MemoText.Font, MemoText.FontColor);\n  FStyledMemo.SelectedTextColor := TAlphaColorRec.White;\n  FStyledMemo.RoundedSelection := True;\n  FStyledMemo.UseSelectedTextColor := True;\n  FrameResize(nil);\nend;\n\nprocedure TFrameText.MemoTextMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  if (MemoText.SelLength > 0) and (Root.Captured = IControl(FStyledMemo)) then\n  begin\n    Handled := True;\n    if Assigned(FOnWheel) then\n      FOnWheel(Sender, Shift, WheelDelta, Handled);\n  end;\nend;\n\nprocedure TFrameText.MemoTextPresentationNameChoosing(Sender: TObject; var PresenterName: string);\nbegin\n  PresenterName := 'RichEditStyled';\nend;\n\nprocedure TFrameText.SetOnWheel(const Value: TMouseWheelEvent);\nbegin\n  FOnWheel := Value;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameSVG.fmx",
    "content": "object FrameSVG: TFrameSVG\n  Size.Width = 654.000000000000000000\n  Size.Height = 150.000000000000000000\n  Size.PlatformDefault = False\n  object SvgImage: TSkSvg\n    Align = Left\n    Size.Width = 150.000000000000000000\n    Size.Height = 150.000000000000000000\n    Size.PlatformDefault = False\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameSVG.pas",
    "content": "﻿unit ChatGPT.FrameSVG;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  System.Skia, FMX.Skia;\n\ntype\n  TFrameSVG = class(TFrame)\n    SvgImage: TSkSvg;\n  private\n    { Private declarations }\n  public\n    constructor Create(AOwner: TComponent; SvgData: string); reintroduce;\n  end;\n\nimplementation\n\n{$R *.fmx}\n\n{ TFrameSVG }\n\nconstructor TFrameSVG.Create(AOwner: TComponent; SvgData: string);\nbegin\n  inherited Create(AOwner);\n  Name := '';\n  SvgImage.Svg.Source := SvgData;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.FrameUIMessage.fmx",
    "content": "object FrameUIMessage: TFrameUIMessage\n  Align = Contents\n  HitTest = False\n  Size.Width = 754.000000000000000000\n  Size.Height = 460.000000000000000000\n  Size.PlatformDefault = False\n  object LayoutContent: TLayout\n    Align = Bottom\n    Position.Y = 376.000000000000000000\n    Size.Width = 754.000000000000000000\n    Size.Height = 84.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleBG: TRectangle\n      Align = Center\n      Fill.Color = xA0000000\n      Size.Width = 101.000000000000000000\n      Size.Height = 34.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n      object LabelText: TLabel\n        Align = Center\n        AutoSize = True\n        StyledSettings = [Family, Style]\n        Size.Width = 57.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Size = 15.000000000000000000\n        TextSettings.FontColor = claWhite\n        TextSettings.HorzAlign = Center\n        TextSettings.WordWrap = False\n        Text = 'Coppied'\n        TabOrder = 0\n        OnResize = LabelTextResize\n        OnResized = LabelTextResize\n      end\n    end\n  end\n  object TimerClose: TTimer\n    Interval = 3000\n    OnTimer = TimerCloseTimer\n    Left = 280\n    Top = 176\n  end\nend\n"
  },
  {
    "path": "ChatGPT.FrameUIMessage.pas",
    "content": "﻿unit ChatGPT.FrameUIMessage;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  FMX.Layouts, FMX.Objects, FMX.Controls.Presentation;\n\ntype\n  TFrameUIMessage = class(TFrame)\n    LayoutContent: TLayout;\n    RectangleBG: TRectangle;\n    LabelText: TLabel;\n    TimerClose: TTimer;\n    procedure LabelTextResize(Sender: TObject);\n    procedure TimerCloseTimer(Sender: TObject);\n  private\n    { Private declarations }\n  public\n    constructor Create(AOwner: TComponent); override;\n  end;\n\nprocedure ShowUIMessage(const Text: string);\n\nimplementation\n\n{$R *.fmx}\n\nprocedure ShowUIMessage(const Text: string);\nbegin\n  with TFrameUIMessage.Create(Application) do\n  begin\n    LabelText.Text := Text;\n    Align := TAlignLayout.Client;\n    Parent := Application.MainForm;\n    BringToFront;\n  end;\nend;\n\nconstructor TFrameUIMessage.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\nend;\n\nprocedure TFrameUIMessage.LabelTextResize(Sender: TObject);\nbegin\n  RectangleBG.Width := LabelText.Width + 20;\nend;\n\nprocedure TFrameUIMessage.TimerCloseTimer(Sender: TObject);\nbegin\n  Release;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Functions.External.Intf.pas",
    "content": "﻿unit ChatGPT.Functions.external.Intf;\n\ninterface\n\ntype\n  IChatFunctionExternal = interface\n    ['{B2DACD74-B773-44C2-838D-43BF99CB5405}']\n    function GetDescription: WideString;                  //Example: 'Get the current weather in a given location'\n    function GetName: WideString;                         //Example: 'get_current_weather'\n    function GetParameters: WideString;                   //JSON Scheme\n    function Execute(const Args: WideString): WideString; //Args - json with params, result - json with info\n  end;\n\nimplementation\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Functions.External.pas",
    "content": "﻿unit ChatGPT.Functions.external;\n\ninterface\n\nuses\n  System.Classes, OpenAI.Chat.Functions, ChatGPT.Functions.external.Intf;\n\ntype\n  TChatFunctionExternal = class(TChatFunction, IChatFunction)\n  private\n    FFuncRef: IChatFunctionExternal;\n  protected\n    function GetDescription: string; override;\n    function GetName: string; override;\n    function GetParameters: string; override;\n  public\n    constructor Create(const Func: IChatFunctionExternal); reintroduce;\n    destructor Destroy; override;\n    function Execute(const Args: string): string; override;\n  end;\n\nimplementation\n\n{ TChatFunctionExternal }\n\nconstructor TChatFunctionExternal.Create(const Func: IChatFunctionExternal);\nbegin\n  inherited Create;\n  FFuncRef := Func;\nend;\n\ndestructor TChatFunctionExternal.Destroy;\nbegin\n  FFuncRef := nil;\n  inherited;\nend;\n\nfunction TChatFunctionExternal.Execute(const Args: string): string;\nbegin\n  Result := FFuncRef.Execute(Args);\nend;\n\nfunction TChatFunctionExternal.GetDescription: string;\nbegin\n  Result := FFuncRef.GetDescription;\nend;\n\nfunction TChatFunctionExternal.GetName: string;\nbegin\n  Result := FFuncRef.GetName;\nend;\n\nfunction TChatFunctionExternal.GetParameters: string;\nbegin\n  Result := FFuncRef.GetParameters;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Functions.pas",
    "content": "﻿unit ChatGPT.Functions;\n\ninterface\n\nuses\n  {$IFDEF MSWINDOWS}\n  Winapi.Windows,\n  {$ENDIF}\n  System.SysUtils, System.Generics.Collections, OpenAI.Chat.Functions,\n  ChatGPT.Functions.external, ChatGPT.Functions.external.Intf;\n\nconst\n  LibExtMask = {$IFDEF MSWINDOWS}     '*.dll'; {$ENDIF}\n               {$IFDEF LINUX}         '*.so';  {$ENDIF}\n               {$IF DEFINED(MACOS) OR\n                    DEFINED(IOS) OR\n                    DEFINED(IOS64)}   '*.o';   {$ENDIF}\n               {$IFDEF ANDROID}       '*.so';  {$ENDIF}\n\ntype\n  TGPTFunctionsFunc = function: TArray<IChatFunctionExternal>;\n\nfunction LoadExternalFunctions: TArray<IChatFunction>;\n\nvar\n  FLoadedLibs: TList<NativeInt>;\n\nimplementation\n\nuses\n  System.IOUtils;\n\nfunction LoadExternalFunctions: TArray<IChatFunction>;\nbegin\n  if TDirectory.Exists('funcs') then\n  begin\n    for var Lib in TDirectory.GetFiles('funcs', LibExtMask) do\n    try\n      var LibHandle := LoadLibrary(PChar(Lib));\n      try\n        var Func: TGPTFunctionsFunc := GetProcAddress(LibHandle, 'gptfunctions');\n        if @Func <> nil then\n        begin\n          for var Item in Func() do\n          begin\n            SetLength(Result, Length(Result) + 1);\n            Result[Length(Result) - 1] := TChatFunctionExternal.Create(Item);\n          end;\n          FLoadedLibs.Add(LibHandle);\n        end;\n      except\n        FreeLibrary(LibHandle);\n      end;\n    except\n      //\n    end;\n  end;\nend;\n\ninitialization\n  FLoadedLibs := TList<NativeInt>.Create;\n\nfinalization\n  for var Lib in FLoadedLibs do\n    FreeLibrary(Lib);\n  FLoadedLibs.Free;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.ImportExport.fmx",
    "content": "inherited FrameImportExport: TFrameImportExport\n  Size.Width = 772.000000000000000000\n  Size.Height = 703.000000000000000000\n  OnResize = FrameResize\n  OnResized = FrameResize\n  inherited RectangleBG: TRectangle\n    Size.Width = 772.000000000000000000\n    Size.Height = 703.000000000000000000\n    OnClick = RectangleBGClick\n  end\n  object LayoutClient: TLayout\n    Align = Center\n    Padding.Left = 10.000000000000000000\n    Padding.Top = 10.000000000000000000\n    Padding.Right = 10.000000000000000000\n    Padding.Bottom = 10.000000000000000000\n    Size.Width = 440.000000000000000000\n    Size.Height = 589.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleFrame: TRectangle\n      Align = Contents\n      Fill.Color = xFF202123\n      Locked = True\n      Size.Width = 440.000000000000000000\n      Size.Height = 589.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n    end\n    object LayoutActions: TLayout\n      Align = Bottom\n      Position.X = 10.000000000000000000\n      Position.Y = 533.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 46.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 2\n      object ButtonOk: TButton\n        Align = Right\n        Position.X = 260.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 0\n        Text = 'OK'\n        TextSettings.Trimming = None\n        OnClick = ButtonOkClick\n      end\n      object ButtonCancel: TButton\n        Align = Right\n        Cancel = True\n        Position.X = 340.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 1\n        Text = 'CANCEL'\n        TextSettings.Trimming = None\n        OnClick = ButtonCancelClick\n      end\n    end\n    object LabelCaption: TLabel\n      Align = Top\n      AutoSize = True\n      StyledSettings = [Style]\n      Margins.Top = 10.000000000000000000\n      Position.X = 10.000000000000000000\n      Position.Y = 20.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 20.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.Font.Family = 'Roboto'\n      TextSettings.Font.Size = 16.000000000000000000\n      TextSettings.FontColor = xFFE9E9E9\n      TextSettings.WordWrap = False\n      Text = 'Import && Export'\n      TabOrder = 44\n    end\n    object VertScrollBox: TVertScrollBox\n      Align = Client\n      Padding.Right = 10.000000000000000000\n      Padding.Bottom = 10.000000000000000000\n      Margins.Right = -10.000000000000000000\n      Size.Width = 430.000000000000000000\n      Size.Height = 493.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 21\n      Viewport.Width = 430.000000000000000000\n      Viewport.Height = 493.000000000000000000\n      object Layout1: TLayout\n        Align = Top\n        Margins.Left = 10.000000000000000000\n        Margins.Top = 20.000000000000000000\n        Margins.Right = 10.000000000000000000\n        Margins.Bottom = 20.000000000000000000\n        Position.X = 10.000000000000000000\n        Position.Y = 20.000000000000000000\n        Size.Width = 400.000000000000000000\n        Size.Height = 456.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 0\n        object RadioButtonImport: TRadioButton\n          Align = Top\n          StyledSettings = [Family, Style, FontColor]\n          Margins.Top = 10.000000000000000000\n          Position.Y = 163.000000000000000000\n          Size.Width = 400.000000000000000000\n          Size.Height = 19.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'radiobuttonstyle_md'\n          TabOrder = 2\n          Text = 'Import'\n          TextSettings.Font.Size = 14.000000000000000000\n          OnChange = RadioButtonExportChange\n        end\n        object RadioButtonExport: TRadioButton\n          Align = Top\n          StyledSettings = [Family, Style, FontColor]\n          IsChecked = True\n          Margins.Top = 10.000000000000000000\n          Position.Y = 10.000000000000000000\n          Size.Width = 400.000000000000000000\n          Size.Height = 19.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'radiobuttonstyle_md'\n          TabOrder = 0\n          Text = 'Export'\n          TextSettings.Font.Size = 14.000000000000000000\n          OnChange = RadioButtonExportChange\n        end\n        object LayoutExport: TLayout\n          Align = Top\n          Margins.Left = 10.000000000000000000\n          Margins.Right = 10.000000000000000000\n          Position.X = 10.000000000000000000\n          Position.Y = 29.000000000000000000\n          Size.Width = 380.000000000000000000\n          Size.Height = 124.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n          object Label17: TLabel\n            Align = Top\n            AutoSize = True\n            StyledSettings = [Style]\n            Margins.Left = 5.000000000000000000\n            Margins.Top = 10.000000000000000000\n            Margins.Right = 5.000000000000000000\n            Margins.Bottom = 5.000000000000000000\n            Position.X = 5.000000000000000000\n            Position.Y = 90.000000000000000000\n            Size.Width = 370.000000000000000000\n            Size.Height = 15.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Family = 'Roboto'\n            TextSettings.FontColor = x78FFFFFF\n            Text = '*.txt, *.json'\n            TabOrder = 8\n            TabStop = False\n          end\n          object EditExport: TEdit\n            Touch.InteractiveGestures = [LongTap, DoubleTap]\n            Align = Top\n            StyleLookup = 'editstyle_clear'\n            TabOrder = 0\n            Position.Y = 47.000000000000000000\n            Margins.Top = 5.000000000000000000\n            Size.Width = 380.000000000000000000\n            Size.Height = 33.000000000000000000\n            Size.PlatformDefault = False\n            object ClearEditButtonExport: TClearEditButton\n              Touch.InteractiveGestures = [LongTap]\n              CanFocus = False\n              Cursor = crArrow\n              TextSettings.Trimming = None\n              Hint = 'Clear'\n              Position.X = 28.000000000000000000\n              Size.Width = 28.000000000000000000\n              Size.Height = 29.000000000000000000\n              Size.PlatformDefault = False\n              StyleLookup = 'buttonstyle_clearmini'\n              TabOrder = 1\n              Text = 'buttonstyle_clearmini'\n              object Path2: TPath\n                Align = Center\n                Data.Path = {\n                  0E00000000000000000060413333B33F010000009A9949410000000001000000\n                  0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n                  010000003333B3400000E04001000000000000009A994941010000003333B33F\n                  00006041010000000000E04066660641010000009A9949410000604101000000\n                  000060419A99494101000000666606410000E04001000000000060413333B33F\n                  03000000000060413333B33F}\n                Fill.Color = xFFACACBE\n                Locked = True\n                HitTest = False\n                Margins.Left = 2.000000000000000000\n                Size.Width = 13.000000000000000000\n                Size.Height = 13.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n            object EditButtonExportFile: TEditButton\n              Touch.InteractiveGestures = [LongTap]\n              CanFocus = False\n              Cursor = crArrow\n              TextSettings.Trimming = None\n              Size.Width = 28.000000000000000000\n              Size.Height = 29.000000000000000000\n              Size.PlatformDefault = False\n              StyleLookup = 'editbuttonstyle'\n              TabOrder = 0\n              Text = 'editbuttonstyle'\n              OnClick = EditButtonExportFileClick\n              object Path1: TPath\n                Align = Center\n                Data.Path = {\n                  2F0000000000000066260F446626874301000000CC4CEE436626E74302000000\n                  9A99EB439A99EC4302000000CD0CE6430000F04302000000CD8CDF430000F043\n                  01000000000080420000F043020000003433E5410000F0430200000000000000\n                  85ABE14302000000000000000000D04301000000000000000000C04202000000\n                  00000000D7A37242020000003333E54100000042020000000000804200000042\n                  0100000000803543000000420200000052784643000000420200000000C05643\n                  CFF71A42020000008FC2624300004B420100000033F389430000C04201000000\n                  0000D0430000C04202000000CDACE1430000C042020000000000F043EC51F942\n                  020000000000F04300002043010000000000F04300004043010000000000D843\n                  00004043010000000000D84300002043020000000000D8430E2D174302000000\n                  3769D44300001043020000000000D04300001043010000000000804300001043\n                  01000000CDCC40434861A94202000000CDCC3D43EC51A34202000000CDCC3943\n                  0000A04202000000008035430000A04201000000000080420000A04202000000\n                  52B85C420000A0420200000000004042295CAE4202000000000040420000C042\n                  01000000000040420000C04301000000EC51EE4233B37143020000003333F942\n                  CDCC66430200000033B307430000604302000000CDCC13430000604301000000\n                  000008440000604302000000CDEC0D440000604302000000CDCC114400007943\n                  0200000066260F44662687430300000066260F4466268743}\n                Fill.Color = xFFACACBE\n                Locked = True\n                HitTest = False\n                Margins.Left = 2.000000000000000000\n                Size.Width = 13.000000000000000000\n                Size.Height = 13.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n          end\n          object Label9: TLabel\n            Align = Top\n            AutoSize = True\n            StyledSettings = [Style]\n            Margins.Top = 20.000000000000000000\n            Margins.Bottom = 5.000000000000000000\n            Position.Y = 20.000000000000000000\n            Size.Width = 380.000000000000000000\n            Size.Height = 17.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Family = 'Roboto'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xB4FFFFFF\n            Text = 'File name'\n            TabOrder = 30\n            TabStop = False\n          end\n        end\n        object LayoutImport: TLayout\n          Align = Top\n          Margins.Left = 10.000000000000000000\n          Margins.Right = 10.000000000000000000\n          Position.X = 10.000000000000000000\n          Position.Y = 182.000000000000000000\n          Size.Width = 380.000000000000000000\n          Size.Height = 147.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 3\n          object Label1: TLabel\n            Align = Top\n            AutoSize = True\n            StyledSettings = [Style]\n            Margins.Left = 5.000000000000000000\n            Margins.Top = 10.000000000000000000\n            Margins.Right = 5.000000000000000000\n            Margins.Bottom = 5.000000000000000000\n            Position.X = 5.000000000000000000\n            Position.Y = 90.000000000000000000\n            Size.Width = 370.000000000000000000\n            Size.Height = 15.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Family = 'Roboto'\n            TextSettings.FontColor = x78FFFFFF\n            Text = '*.json'\n            TabOrder = 8\n            TabStop = False\n          end\n          object EditImport: TEdit\n            Touch.InteractiveGestures = [LongTap, DoubleTap]\n            Align = Top\n            StyleLookup = 'editstyle_clear'\n            TabOrder = 0\n            Position.Y = 47.000000000000000000\n            Margins.Top = 5.000000000000000000\n            Size.Width = 380.000000000000000000\n            Size.Height = 33.000000000000000000\n            Size.PlatformDefault = False\n            object ClearEditButtonImport: TClearEditButton\n              Touch.InteractiveGestures = [LongTap]\n              CanFocus = False\n              Cursor = crArrow\n              TextSettings.Trimming = None\n              Hint = 'Clear'\n              Position.X = 28.000000000000000000\n              Size.Width = 28.000000000000000000\n              Size.Height = 29.000000000000000000\n              Size.PlatformDefault = False\n              StyleLookup = 'buttonstyle_clearmini'\n              TabOrder = 1\n              Text = 'buttonstyle_clearmini'\n              object Path3: TPath\n                Align = Center\n                Data.Path = {\n                  0E00000000000000000060413333B33F010000009A9949410000000001000000\n                  0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n                  010000003333B3400000E04001000000000000009A994941010000003333B33F\n                  00006041010000000000E04066660641010000009A9949410000604101000000\n                  000060419A99494101000000666606410000E04001000000000060413333B33F\n                  03000000000060413333B33F}\n                Fill.Color = xFFACACBE\n                Locked = True\n                HitTest = False\n                Margins.Left = 2.000000000000000000\n                Size.Width = 13.000000000000000000\n                Size.Height = 13.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n            object EditButtonImportFile: TEditButton\n              Touch.InteractiveGestures = [LongTap]\n              CanFocus = False\n              Cursor = crArrow\n              TextSettings.Trimming = None\n              Size.Width = 28.000000000000000000\n              Size.Height = 29.000000000000000000\n              Size.PlatformDefault = False\n              StyleLookup = 'editbuttonstyle'\n              TabOrder = 0\n              Text = 'editbuttonstyle'\n              OnClick = EditButtonImportFileClick\n              object Path4: TPath\n                Align = Center\n                Data.Path = {\n                  2F0000000000000066260F446626874301000000CC4CEE436626E74302000000\n                  9A99EB439A99EC4302000000CD0CE6430000F04302000000CD8CDF430000F043\n                  01000000000080420000F043020000003433E5410000F0430200000000000000\n                  85ABE14302000000000000000000D04301000000000000000000C04202000000\n                  00000000D7A37242020000003333E54100000042020000000000804200000042\n                  0100000000803543000000420200000052784643000000420200000000C05643\n                  CFF71A42020000008FC2624300004B420100000033F389430000C04201000000\n                  0000D0430000C04202000000CDACE1430000C042020000000000F043EC51F942\n                  020000000000F04300002043010000000000F04300004043010000000000D843\n                  00004043010000000000D84300002043020000000000D8430E2D174302000000\n                  3769D44300001043020000000000D04300001043010000000000804300001043\n                  01000000CDCC40434861A94202000000CDCC3D43EC51A34202000000CDCC3943\n                  0000A04202000000008035430000A04201000000000080420000A04202000000\n                  52B85C420000A0420200000000004042295CAE4202000000000040420000C042\n                  01000000000040420000C04301000000EC51EE4233B37143020000003333F942\n                  CDCC66430200000033B307430000604302000000CDCC13430000604301000000\n                  000008440000604302000000CDEC0D440000604302000000CDCC114400007943\n                  0200000066260F44662687430300000066260F4466268743}\n                Fill.Color = xFFACACBE\n                Locked = True\n                HitTest = False\n                Margins.Left = 2.000000000000000000\n                Size.Width = 13.000000000000000000\n                Size.Height = 13.000000000000000000\n                Size.PlatformDefault = False\n                Stroke.Kind = None\n                WrapMode = Fit\n              end\n            end\n          end\n          object Label2: TLabel\n            Align = Top\n            AutoSize = True\n            StyledSettings = [Style]\n            Margins.Top = 20.000000000000000000\n            Margins.Bottom = 5.000000000000000000\n            Position.Y = 20.000000000000000000\n            Size.Width = 380.000000000000000000\n            Size.Height = 17.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Family = 'Roboto'\n            TextSettings.Font.Size = 14.000000000000000000\n            TextSettings.FontColor = xB4FFFFFF\n            Text = 'File name'\n            TabOrder = 29\n            TabStop = False\n          end\n          object Label3: TLabel\n            Align = Top\n            AutoSize = True\n            StyledSettings = [Style]\n            Margins.Left = 5.000000000000000000\n            Margins.Top = 10.000000000000000000\n            Margins.Right = 5.000000000000000000\n            Margins.Bottom = 5.000000000000000000\n            Position.X = 5.000000000000000000\n            Position.Y = 120.000000000000000000\n            Size.Width = 370.000000000000000000\n            Size.Height = 15.000000000000000000\n            Size.PlatformDefault = False\n            TextSettings.Font.Family = 'Roboto'\n            TextSettings.FontColor = x78FFFFFF\n            Text = \n              'The current chat data will not be deleted, but will be supplemen' +\n              'ted'\n            TabOrder = 10\n            TabStop = False\n          end\n        end\n      end\n    end\n  end\n  object SaveDialogExport: TSaveDialog\n    DefaultExt = '.json'\n    Filter = 'JSON|*.json|Text|*.txt'\n    Left = 664\n    Top = 176\n  end\n  object OpenDialogImport: TOpenDialog\n    DefaultExt = '.json'\n    Filter = 'JSON|*.json'\n    Left = 664\n    Top = 328\n  end\nend\n"
  },
  {
    "path": "ChatGPT.ImportExport.pas",
    "content": "﻿unit ChatGPT.ImportExport;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Overlay, FMX.Objects, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo,\n  FMX.Controls.Presentation, FMX.Layouts, ChatGPT.Classes, FMX.Edit;\n\ntype\n  TFrameImportExport = class(TFrameOveraly)\n    LayoutClient: TLayout;\n    RectangleFrame: TRectangle;\n    LayoutActions: TLayout;\n    ButtonOk: TButton;\n    LabelCaption: TLabel;\n    ButtonCancel: TButton;\n    RadioButtonImport: TRadioButton;\n    RadioButtonExport: TRadioButton;\n    Layout1: TLayout;\n    VertScrollBox: TVertScrollBox;\n    LayoutExport: TLayout;\n    Label17: TLabel;\n    EditExport: TEdit;\n    ClearEditButtonExport: TClearEditButton;\n    Path2: TPath;\n    Label9: TLabel;\n    EditButtonExportFile: TEditButton;\n    Path1: TPath;\n    LayoutImport: TLayout;\n    Label1: TLabel;\n    EditImport: TEdit;\n    ClearEditButtonImport: TClearEditButton;\n    Path3: TPath;\n    EditButtonImportFile: TEditButton;\n    Path4: TPath;\n    Label2: TLabel;\n    SaveDialogExport: TSaveDialog;\n    OpenDialogImport: TOpenDialog;\n    Label3: TLabel;\n    procedure FrameResize(Sender: TObject);\n    procedure ButtonCancelClick(Sender: TObject);\n    procedure ButtonOkClick(Sender: TObject);\n    procedure RadioButtonExportChange(Sender: TObject);\n    procedure EditButtonExportFileClick(Sender: TObject);\n    procedure EditButtonImportFileClick(Sender: TObject);\n    procedure RectangleBGClick(Sender: TObject);\n  private\n    FLayoutClientWidth, FLayoutClientHeight: Single;\n    FProcCallback: TProc<TFrameImportExport, Boolean>;\n  protected\n    procedure SetMode(const Value: TWindowMode); override;\n  public\n    constructor Create(AOwner: TComponent); override;\n    procedure Cancel; override;\n    class procedure Execute(AParent: TControl; ProcSet: TProc<TFrameImportExport>; ProcExecuted: TProc<TFrameImportExport, Boolean>);\n  end;\n\nvar\n  FrameImportExport: TFrameImportExport;\n\nimplementation\n\nuses\n  System.Math;\n\n{$R *.fmx}\n\n{ TFrameImportExport }\n\nprocedure TFrameImportExport.ButtonCancelClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameImportExport.ButtonOkClick(Sender: TObject);\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, True);\n  Release;\nend;\n\nprocedure TFrameImportExport.Cancel;\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, False);\n  Release;\nend;\n\nconstructor TFrameImportExport.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  FLayoutClientWidth := LayoutClient.Width;\n  FLayoutClientHeight := LayoutClient.Height;\n  RadioButtonExportChange(nil);\nend;\n\nprocedure TFrameImportExport.EditButtonExportFileClick(Sender: TObject);\nbegin\n  if SaveDialogExport.Execute then\n  begin\n    EditExport.Text := SaveDialogExport.FileName;\n    RadioButtonExport.IsChecked := True;\n  end;\nend;\n\nprocedure TFrameImportExport.EditButtonImportFileClick(Sender: TObject);\nbegin\n  if OpenDialogImport.Execute then\n  begin\n    EditImport.Text := OpenDialogImport.FileName;\n    RadioButtonImport.IsChecked := True;\n  end;\nend;\n\nclass procedure TFrameImportExport.Execute(AParent: TControl; ProcSet: TProc<TFrameImportExport>; ProcExecuted: TProc<TFrameImportExport, Boolean>);\nbegin\n  var Frame := TFrameImportExport.Create(AParent);\n  Frame.Parent := AParent;\n  Frame.FProcCallback := ProcExecuted;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.BringToFront;\n  if Assigned(ProcSet) then\n    ProcSet(Frame);\n  Frame.ButtonCancel.SetFocus;\nend;\n\nprocedure TFrameImportExport.FrameResize(Sender: TObject);\nbegin\n  LayoutClient.Width := Min(FLayoutClientWidth, Width);\n  LayoutClient.Height := Min(FLayoutClientHeight, Height);\nend;\n\nprocedure TFrameImportExport.RadioButtonExportChange(Sender: TObject);\nbegin\n  LayoutExport.Enabled := RadioButtonExport.IsChecked;\n  LayoutImport.Enabled := RadioButtonImport.IsChecked;\nend;\n\nprocedure TFrameImportExport.RectangleBGClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameImportExport.SetMode(const Value: TWindowMode);\nbegin\n  inherited;\n  if Mode = TWindowMode.Compact then\n  begin\n    LayoutClient.Align := TAlignLayout.Client;\n    RectangleFrame.Corners := [];\n  end\n  else\n  begin\n    LayoutClient.Align := TAlignLayout.Center;\n    RectangleFrame.Corners := AllCorners;\n  end;\n  FrameResize(nil);\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.LoadedFunctions.fmx",
    "content": "inherited FrameLoadedFunctions: TFrameLoadedFunctions\n  Size.Width = 1035.000000000000000000\n  Size.Height = 811.000000000000000000\n  OnResize = FrameResize\n  OnResized = FrameResize\n  inherited RectangleBG: TRectangle\n    Size.Width = 1035.000000000000000000\n    Size.Height = 811.000000000000000000\n    OnClick = RectangleBGClick\n  end\n  object LayoutClient: TLayout\n    Align = Center\n    Padding.Left = 10.000000000000000000\n    Padding.Top = 10.000000000000000000\n    Padding.Right = 10.000000000000000000\n    Padding.Bottom = 10.000000000000000000\n    Size.Width = 440.000000000000000000\n    Size.Height = 566.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleFrame: TRectangle\n      Align = Contents\n      Fill.Color = xFF202123\n      Locked = True\n      Size.Width = 440.000000000000000000\n      Size.Height = 566.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n    end\n    object Layout2: TLayout\n      Align = Bottom\n      Position.X = 10.000000000000000000\n      Position.Y = 510.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 46.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 2\n      object ButtonOk: TButton\n        Align = Right\n        Cancel = True\n        Position.X = 340.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 2\n        Text = 'OK'\n        TextSettings.Trimming = None\n        OnClick = ButtonOkClick\n      end\n    end\n    object Label1: TLabel\n      Align = Top\n      AutoSize = True\n      StyledSettings = [Style]\n      Margins.Top = 10.000000000000000000\n      Position.X = 10.000000000000000000\n      Position.Y = 20.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 20.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.Font.Family = 'Roboto'\n      TextSettings.Font.Size = 16.000000000000000000\n      TextSettings.FontColor = xFFE9E9E9\n      TextSettings.WordWrap = False\n      Text = 'Loaded functions'\n      TabOrder = 41\n    end\n    object Label20: TLabel\n      Align = Top\n      AutoSize = True\n      StyledSettings = [Style]\n      Margins.Left = 5.000000000000000000\n      Margins.Top = 5.000000000000000000\n      Margins.Right = 5.000000000000000000\n      Margins.Bottom = 5.000000000000000000\n      Position.X = 15.000000000000000000\n      Position.Y = 45.000000000000000000\n      Size.Width = 410.000000000000000000\n      Size.Height = 29.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.Font.Family = 'Roboto'\n      TextSettings.FontColor = x78FFFFFF\n      Text = \n        'To load third-party functions, you must place the dynamic librar' +\n        'y in the \"funcs\" folder next to the program'#39's executable file'\n      TabOrder = 5\n      TabStop = False\n    end\n    object Rectangle1: TRectangle\n      Align = Client\n      Fill.Color = x78000000\n      Margins.Left = 6.000000000000000000\n      Margins.Top = 6.000000000000000000\n      Margins.Right = 6.000000000000000000\n      Margins.Bottom = 6.000000000000000000\n      Size.Width = 408.000000000000000000\n      Size.Height = 419.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n      object ListBoxItems: TListBox\n        Align = Client\n        Margins.Left = 4.000000000000000000\n        Margins.Top = 4.000000000000000000\n        Margins.Right = 4.000000000000000000\n        Margins.Bottom = 4.000000000000000000\n        Size.Width = 400.000000000000000000\n        Size.Height = 411.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'transparentlistboxstyle'\n        TabOrder = 0\n        DisableFocusEffect = True\n        ItemHeight = 50.000000000000000000\n        DefaultItemStyles.ItemStyle = 'listboxitemstyle_func'\n        DefaultItemStyles.GroupHeaderStyle = ''\n        DefaultItemStyles.GroupFooterStyle = ''\n        Viewport.Width = 400.000000000000000000\n        Viewport.Height = 411.000000000000000000\n      end\n    end\n    object LabelEmpty: TLabel\n      Align = Center\n      AutoSize = True\n      StyledSettings = [Family, Size, Style]\n      Size.Width = 66.000000000000000000\n      Size.Height = 16.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.FontColor = xFF6C6C6C\n      TextSettings.HorzAlign = Center\n      TextSettings.WordWrap = False\n      Text = 'List is empty'\n      TabOrder = 3\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.LoadedFunctions.pas",
    "content": "﻿unit ChatGPT.LoadedFunctions;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Overlay, FMX.Objects, FMX.Controls.Presentation, FMX.Layouts,\n  FMX.ListBox;\n\ntype\n  TFrameLoadedFunctions = class(TFrameOveraly)\n    LayoutClient: TLayout;\n    RectangleFrame: TRectangle;\n    Layout2: TLayout;\n    ButtonOk: TButton;\n    ListBoxItems: TListBox;\n    LabelEmpty: TLabel;\n    Label1: TLabel;\n    Label20: TLabel;\n    Rectangle1: TRectangle;\n    procedure FrameResize(Sender: TObject);\n    procedure ButtonOkClick(Sender: TObject);\n    procedure RectangleBGClick(Sender: TObject);\n  private\n    FLayoutClientWidth, FLayoutClientHeight: Single;\n  public\n    constructor Create(AOwner: TComponent); override;\n    procedure Cancel; override;\n    class procedure Execute(AParent: TControl);\n  end;\n\nvar\n  FrameLoadedFunctions: TFrameLoadedFunctions;\n\nimplementation\n\nuses\n  System.Math, ChatGPT.Manager;\n\n{$R *.fmx}\n\nprocedure TFrameLoadedFunctions.ButtonOkClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameLoadedFunctions.Cancel;\nbegin\n  Release;\nend;\n\nconstructor TFrameLoadedFunctions.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  FLayoutClientWidth := LayoutClient.Width;\n  FLayoutClientHeight := LayoutClient.Height;\n  for var Item in Manager.GPTFuncList do\n  begin\n    var ListItem := TListBoxItem.Create(ListBoxItems);\n    ListItem.Text := Item.GetDescription;\n    ListItem.ItemData.Detail := Item.GetName;\n    ListBoxItems.AddObject(ListItem);\n  end;\n  LabelEmpty.Visible := ListBoxItems.Count <= 0;\nend;\n\nclass procedure TFrameLoadedFunctions.Execute(AParent: TControl);\nbegin\n  var Frame := TFrameLoadedFunctions.Create(AParent);\n  Frame.Parent := AParent;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.BringToFront;\nend;\n\nprocedure TFrameLoadedFunctions.FrameResize(Sender: TObject);\nbegin\n  LayoutClient.Width := Min(FLayoutClientWidth, Width);\n  LayoutClient.Height := Min(FLayoutClientHeight, Height);\nend;\n\nprocedure TFrameLoadedFunctions.RectangleBGClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Main.fmx",
    "content": "object FormMain: TFormMain\n  Left = 0\n  Top = 0\n  Caption = 'ChatGPT'\n  ClientHeight = 686\n  ClientWidth = 1053\n  Fill.Color = xFF202123\n  Fill.Kind = Solid\n  Quality = HighQuality\n  SystemStatusBar.BackgroundColor = xFF202123\n  StyleBook = StyleBook\n  Constraints.MinHeight = 400.000000000000000000\n  Constraints.MinWidth = 400.000000000000000000\n  FormFactor.Width = 320\n  FormFactor.Height = 480\n  FormFactor.Orientations = [Portrait, Landscape, InvertedPortrait, InvertedLandscape]\n  FormFactor.Devices = [Desktop, iPhone, iPad]\n  ShowFullScreenIcon = True\n  OnCreate = FormCreate\n  OnCloseQuery = FormCloseQuery\n  OnResize = FormResize\n  OnConstrainedResize = FormConstrainedResize\n  OnVirtualKeyboardShown = FormVirtualKeyboardShown\n  OnVirtualKeyboardHidden = FormVirtualKeyboardHidden\n  Touch.GestureManager = GestureManager\n  OnGesture = FormGesture\n  OnSaveState = FormSaveState\n  DesignerMasterStyle = 0\n  object LayoutChats: TLayout\n    Align = Client\n    Size.Width = 783.000000000000000000\n    Size.Height = 686.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object Rectangle1: TRectangle\n      Align = Contents\n      Fill.Color = xFF343541\n      Locked = True\n      Size.Width = 783.000000000000000000\n      Size.Height = 686.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n    end\n    object LayoutHead: TLayout\n      Align = Top\n      Size.Width = 783.000000000000000000\n      Size.Height = 43.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 0\n      object Line2: TLine\n        Align = Contents\n        LineType = Bottom\n        Size.Width = 783.000000000000000000\n        Size.Height = 43.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Color = xFF50505D\n      end\n      object ButtonMenu: TButton\n        Align = Left\n        Cursor = crHandPoint\n        Images = Manager.SVGIconImageList\n        ImageIndex = 2\n        Size.Width = 43.000000000000000000\n        Size.Height = 43.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_primary'\n        TabOrder = 1\n        OnClick = ButtonMenuClick\n      end\n      object ButtonNewChatCompact: TButton\n        Align = Right\n        Cursor = crHandPoint\n        Images = Manager.SVGIconImageList\n        ImageIndex = 0\n        Position.X = 740.000000000000000000\n        Size.Width = 43.000000000000000000\n        Size.Height = 43.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_primary'\n        TabOrder = 0\n        OnClick = ButtonNewChatCompactClick\n      end\n      object LabelChatName: TLabel\n        Align = Client\n        StyledSettings = [Family, Style]\n        Size.Width = 697.000000000000000000\n        Size.Height = 43.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'LabelChatNameStyle1'\n        TextSettings.Font.Size = 16.000000000000000000\n        TextSettings.FontColor = xFFD9D9E3\n        TextSettings.HorzAlign = Center\n        TextSettings.WordWrap = False\n        Text = 'Select chat'\n        TabOrder = 2\n      end\n    end\n    object LayoutChatsBox: TLayout\n      Align = Client\n      Size.Width = 783.000000000000000000\n      Size.Height = 643.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n    end\n  end\n  object StyleBook: TStyleBook\n    Styles = <\n      item\n        ResourcesBin = {\n          464D585F5354594C4520322E35010613627574746F6E7374796C655F6E657763\n          686174034D0506106C697374626F786974656D7374796C6503511506166C6973\n          74626F786974656D7374796C655F6D6F64656C039B0B06156C697374626F7869\n          74656D7374796C655F6368617403691306106D656D6F7374796C655F6E6F726D\n          616C03E907060F65646974627574746F6E7374796C65034B0306126C69737462\n          6F787374796C655F636C65617203EE050613627574746F6E7374796C655F7072\n          696D617279032A02060F656469747374796C655F636C65617203D40406157363\n          726F6C6C626172626F74746F6D627574746F6E03700206147363726F6C6C6261\n          7268747261636B7374796C6503260106137363726F6C6C6261726C6566746275\n          74746F6E037A0206147363726F6C6C6261727269676874627574746F6E036F02\n          060E7363726F6C6C6261727374796C6503D90206127363726F6C6C626172746F\n          70627574746F6E03790206147363726F6C6C62617276747261636B7374796C65\n          0343010619736D616C6C7363726F6C6C62617268747261636B7374796C6503AD\n          010613736D616C6C7363726F6C6C6261727374796C650349020619736D616C6C\n          7363726F6C6C62617276747261636B7374796C6503AD01060A7468756D627374\n          796C65031502060A747261636B7374796C65030C02060E7363726F6C6C626F78\n          7374796C6503CF070610627574746F6E7374796C655F6D656E75033405061362\n          7574746F6E7374796C655F636F6E6669726D033703060E6D656D6F7374796C65\n          5F636F6465039C060611627574746F6E7374796C655F636C656172024E060D74\n          7261636B6261727374796C65030D07060D7468756D626261727374796C650337\n          010613627574746F6E7374796C655F77656C636F6D650313040613627574746F\n          6E7374796C655F6578656375746503C206060B636F6D626F5F7374796C6503E9\n          06060D64726F70646F776E70616E656C03AD00060C706F706F7665727374796C\n          65033E02060C6C697374626F787374796C65031E07060D6D656E756974656D73\n          74796C6503C70E06146D656E756974656D7374796C655F627574746F6E03DA09\n          060D6D656E75766965777374796C65038D0206126D656E75736570617261746F\n          727374796C6503920006176C65667473656C656374696F6E706F696E74737479\n          6C6503C5010618726967687473656C656374696F6E706F696E747374796C6503\n          9B010611627574746F6E5F7363726F6C6C646F776E038F04060B737769746368\n          7374796C65033E01061A627574746F6E7374796C655F636C6561726D696E695F\n          6C656674035B03061B627574746F6E7374796C655F636C6561726D696E695F72\n          69676874035E03060F6D656D6F7374796C655F636C6561720399050610627574\n          746F6E7374796C655F69636F6E033C030617627574746F6E7374796C655F6D65\n          6E75627574746F6E7303BB020611627574746F6E7374796C655F726574727903\n          24090611616E69696E64696361746F727374796C6503870B06156C697374626F\n          786974656D7374796C655F66756E6303AC1706177472616E73706172656E746C\n          697374626F787374796C65033D070614627574746F6E7374796C655F636F6E74\n          696E7565030607060B627574746F6E7374796C6503C0040619627574746F6E73\n          74796C655F696D706F72745F6578706F727403B0060613726164696F62757474\n          6F6E7374796C655F6D64036C050615627574746F6E7374796C655F636C656172\n          6D696E69035103060F6261636B67726F756E647374796C6503AF000054504630\n          07544C61796F757400095374796C654E616D650613627574746F6E7374796C65\n          5F6E65776368617405416C69676E070643656E7465720C50616464696E672E4C\n          6566740500000000000000C002400B50616464696E672E546F70050000000000\n          0000C002400D50616464696E672E52696768740500000000000000C002400E50\n          616464696E672E426F74746F6D0500000000000000C002400A53697A652E5769\n          6474680500000000000000F406400B53697A652E486569676874050000000000\n          0000B804401453697A652E506C6174666F726D44656661756C74080756697369\n          626C6508085461624F726465720214000A5452656374616E676C650009537479\n          6C654E616D65060F52656374616E676C65315374796C6505416C69676E070843\n          6F6E74656E74730A46696C6C2E436F6C6F720709783030464646464646074869\n          7454657374080A53697A652E57696474680500000000000000F406400B53697A\n          652E4865696768740500000000000000B804401453697A652E506C6174666F72\n          6D44656661756C74080C5374726F6B652E436F6C6F7207097833334646464646\n          4607585261646975730500000000000000C00140075952616469757305000000\n          00000000C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E\n          616D650614436F6C6F72416E696D6174696F6E315374796C6508447572617469\n          6F6E050000000000CDCCCCFD3F0C50726F70657274794E616D65060A46696C6C\n          2E436F6C6F720A537461727456616C756507097830304646464646460953746F\n          7056616C756507097831394646464646460754726967676572061049734D6F75\n          73654F7665723D747275650E54726967676572496E7665727365061149734D6F\n          7573654F7665723D66616C73650000000654476C79706800095374796C654E61\n          6D65060A676C7970687374796C650B4D617267696E732E546F70050000000000\n          000080FFBF0D4D617267696E732E52696768740500000000000000C002400E4D\n          617267696E732E426F74746F6D050000000000000080FFBF05416C69676E0704\n          4C6566740A506F736974696F6E2E580500000000000000C002400A506F736974\n          696F6E2E590500000000000000B002400A53697A652E57696474680500000000\n          000000C003400B53697A652E4865696768740500000000000000C00340145369\n          7A652E506C6174666F726D44656661756C74080A496D616765496E6465780200\n          000E5446696C6C52474245666665637400095374796C654E616D65061346696C\n          6C524742456666656374315374796C6505436F6C6F7207097846464439443945\n          330000001654427574746F6E5374796C65546578744F626A6563740009537479\n          6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65\n          64090A53697A652E57696474680500000000000000DC06400B53697A652E4865\n          696768740500000000000000B003401453697A652E506C6174666F726D446566\n          61756C7408165465787453657474696E67732E466F6E742E53697A6505000000\n          00000000E00240165465787453657474696E67732E466F6E74436F6C6F720708\n          636C615768697465155465787453657474696E67732E5472696D6D696E670709\n          436861726163746572155465787453657474696E67732E576F72645772617008\n          165465787453657474696E67732E486F727A416C69676E07074C656164696E67\n          0D536861646F7756697369626C650808486F74436F6C6F720708636C61576869\n          74650C466F6375736564436F6C6F720708636C6157686974650B4E6F726D616C\n          436F6C6F720708636C6157686974650C50726573736564436F6C6F720708636C\n          6157686974650000005450463007544C61796F757400095374796C654E616D65\n          06106C697374626F786974656D7374796C6505416C69676E070643656E746572\n          0A53697A652E57696474680500000000000000BB07400B53697A652E48656967\n          687405000000000000009004401453697A652E506C6174666F726D4465666175\n          6C74080756697369626C6508085461624F7264657202190B4669786564486569\n          676874021E000A5452656374616E676C6500095374796C654E616D65060F6261\n          636B67726F756E645F6F76657205416C69676E0708436F6E74656E74730A4669\n          6C6C2E436F6C6F7207097830303437383646460748697454657374080A53697A\n          652E57696474680500000000000000BB07400B53697A652E4865696768740500\n          0000000000009004401453697A652E506C6174666F726D44656661756C74080C\n          5374726F6B652E436F6C6F720709783030343738364646000F54436F6C6F7241\n          6E696D6174696F6E00095374796C654E616D6506046F76657208447572617469\n          6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C\n          2E436F6C6F720A537461727456616C756507097830303639364136440953746F\n          7056616C756507097842343639364136440754726967676572060F497353656C\n          65637465643D747275650E54726967676572496E76657273650610497353656C\n          65637465643D66616C73650000000654476C79706800095374796C654E616D65\n          060A676C7970687374796C650C4D617267696E732E4C65667405000000000000\n          008000400B4D617267696E732E546F70050000000000000080FF3F0D4D617267\n          696E732E526967687405000000000000008000400E4D617267696E732E426F74\n          746F6D050000000000000080FF3F05416C69676E07044C6566740A506F736974\n          696F6E2E5805000000000000008000400A506F736974696F6E2E590500000000\n          00000080FF3F0A53697A652E576964746805000000000000008003400B53697A\n          652E48656967687405000000000000008804401453697A652E506C6174666F72\n          6D44656661756C7408000016544163746976655374796C65546578744F626A65\n          637400095374796C654E616D6506047465787405416C69676E0706436C69656E\n          740C4D617267696E732E4C6566740500000000000000C000400B4D617267696E\n          732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500\n          000000000000C000400E4D617267696E732E426F74746F6D0500000000000000\n          80FF3F0A53697A652E57696474680500000000000000B807400B53697A652E48\n          656967687405000000000000008804401453697A652E506C6174666F726D4465\n          6661756C7408165465787453657474696E67732E466F6E742E53697A65050000\n          0000000000800340165465787453657474696E67732E466F6E74436F6C6F7207\n          09783936464646464646155465787453657474696E67732E576F726457726170\n          08165465787453657474696E67732E486F727A416C69676E07074C656164696E\n          670D536861646F7756697369626C65080D416374697665547269676765720708\n          53656C65637465640B416374697665436F6C6F720708636C6157686974650000\n          0954436865636B426F7800095374796C654E616D650605636865636B05416C69\n          676E07044C6566740843616E466F637573081244697361626C65466F63757345\n          6666656374090C4D617267696E732E4C65667405000000000000008001400A50\n          6F736974696F6E2E5805000000000000008001400A53697A652E576964746805\n          00000000000000A003400B53697A652E48656967687405000000000000009004\n          401453697A652E506C6174666F726D44656661756C74080756697369626C6508\n          000007544C61796F757400095374796C654E616D65060D6163636573736F7279\n          6D6F726505416C69676E07094D6F737452696768740A53697A652E5769647468\n          0500000000000000B003400B53697A652E4865696768740500000000000000B0\n          04401453697A652E506C6174666F726D44656661756C74080756697369626C65\n          080012544163746976655374796C654F626A6563740005416C69676E07064365\n          6E7465720C536F757263654C6F6F6B7570061A57696E646F7773203130204D6F\n          6465726E7374796C652E706E670A53697A652E57696474680500000000000000\n          C002400B53697A652E48656967687405000000000000008003401453697A652E\n          506C6174666F726D44656661756C740808577261704D6F6465070643656E7465\n          720D41637469766554726967676572070853656C65637465640A416374697665\n          4C696E6B0E010F536F75726365526563742E4C65667405000000000000008B06\n          400E536F75726365526563742E546F700500000000000000D4054010536F7572\n          6365526563742E5269676874050000000000000097064011536F757263655265\n          63742E426F74746F6D0500000000000000F405400001055363616C6505000000\n          00000000C0FF3F0F536F75726365526563742E4C6566740500000000000000D0\n          06400E536F75726365526563742E546F7005000000000000009F064010536F75\n          726365526563742E52696768740500000000000000E2064011536F7572636552\n          6563742E426F74746F6D0500000000000000B706400001055363616C65050000\n          00000000008000400F536F75726365526563742E4C6566740500000000000000\n          8B07400E536F75726365526563742E546F700500000000000000D4064010536F\n          75726365526563742E5269676874050000000000000097074011536F75726365\n          526563742E426F74746F6D0500000000000000F406400001055363616C650500\n          000000000000C000400F536F75726365526563742E4C65667405000000000000\n          80D007400E536F75726365526563742E546F7005000000000000009F07401053\n          6F75726365526563742E52696768740500000000000080E2074011536F757263\n          65526563742E426F74746F6D0500000000000000B7074000000A536F75726365\n          4C696E6B0E010F536F75726365526563742E4C65667405000000000000008B06\n          400E536F75726365526563742E546F700500000000000000D4054010536F7572\n          6365526563742E5269676874050000000000000097064011536F757263655265\n          63742E426F74746F6D0500000000000000F405400001055363616C6505000000\n          00000000C0FF3F0F536F75726365526563742E4C6566740500000000000000D0\n          06400E536F75726365526563742E546F7005000000000000009F064010536F75\n          726365526563742E52696768740500000000000000E2064011536F7572636552\n          6563742E426F74746F6D0500000000000000B706400001055363616C65050000\n          00000000008000400F536F75726365526563742E4C6566740500000000000000\n          8B07400E536F75726365526563742E546F700500000000000000D4064010536F\n          75726365526563742E5269676874050000000000000097074011536F75726365\n          526563742E426F74746F6D0500000000000000F406400001055363616C650500\n          000000000000C000400F536F75726365526563742E4C65667405000000000000\n          80D007400E536F75726365526563742E546F7005000000000000009F07401053\n          6F75726365526563742E52696768740500000000000080E2074011536F757263\n          65526563742E426F74746F6D0500000000000000B70740000013546F75636841\n          6E696D6174696F6E2E4C696E6B0E0000000007544C61796F757400095374796C\n          654E616D6506126163636573736F7279636865636B6D61726B05416C69676E07\n          094D6F737452696768740A53697A652E57696474680500000000000000B00340\n          0B53697A652E4865696768740500000000000000B004401453697A652E506C61\n          74666F726D44656661756C74080756697369626C650800125441637469766553\n          74796C654F626A6563740005416C69676E070643656E7465720C536F75726365\n          4C6F6F6B7570061A57696E646F7773203130204D6F6465726E7374796C652E70\n          6E670A53697A652E576964746805000000000000009003400B53697A652E4865\n          6967687405000000000000009003401453697A652E506C6174666F726D446566\n          61756C740808577261704D6F6465070643656E7465720D416374697665547269\n          67676572070853656C65637465640A4163746976654C696E6B0E010F536F7572\n          6365526563742E4C65667405000000000000009B06400E536F75726365526563\n          742E546F700500000000000000D2054010536F75726365526563742E52696768\n          740500000000000000AD064011536F75726365526563742E426F74746F6D0500\n          000000000000F605400001055363616C650500000000000000C0FF3F0F536F75\n          726365526563742E4C6566740500000000000000E806400E536F757263655265\n          63742E546F7005000000000000009D064010536F75726365526563742E526967\n          6874050000000000008081074011536F75726365526563742E426F74746F6D05\n          00000000000000B806400001055363616C6505000000000000008000400F536F\n          75726365526563742E4C65667405000000000000009B07400E536F7572636552\n          6563742E546F700500000000000000D2064010536F75726365526563742E5269\n          6768740500000000000000AD074011536F75726365526563742E426F74746F6D\n          0500000000000000F606400001055363616C650500000000000000C000400F53\n          6F75726365526563742E4C6566740500000000000080E807400E536F75726365\n          526563742E546F7005000000000000809D074010536F75726365526563742E52\n          6967687405000000000000C081084011536F75726365526563742E426F74746F\n          6D0500000000000080B8074000000A536F757263654C696E6B0E010F536F7572\n          6365526563742E4C65667405000000000000009B06400E536F75726365526563\n          742E546F700500000000000000D2054010536F75726365526563742E52696768\n          740500000000000000AD064011536F75726365526563742E426F74746F6D0500\n          000000000000F605400001055363616C650500000000000000C0FF3F0F536F75\n          726365526563742E4C6566740500000000000000E806400E536F757263655265\n          63742E546F7005000000000000009D064010536F75726365526563742E526967\n          6874050000000000008081074011536F75726365526563742E426F74746F6D05\n          00000000000000B806400001055363616C6505000000000000008000400F536F\n          75726365526563742E4C65667405000000000000009B07400E536F7572636552\n          6563742E546F700500000000000000D2064010536F75726365526563742E5269\n          6768740500000000000000AD074011536F75726365526563742E426F74746F6D\n          0500000000000000F606400001055363616C650500000000000000C000400F53\n          6F75726365526563742E4C6566740500000000000080E807400E536F75726365\n          526563742E546F7005000000000000809D074010536F75726365526563742E52\n          6967687405000000000000C081084011536F75726365526563742E426F74746F\n          6D0500000000000080B80740000013546F756368416E696D6174696F6E2E4C69\n          6E6B0E0000000007544C61796F757400095374796C654E616D65060F61636365\n          73736F727964657461696C05416C69676E07094D6F737452696768740A53697A\n          652E57696474680500000000000000B003400B53697A652E4865696768740500\n          000000000000B004401453697A652E506C6174666F726D44656661756C740807\n          56697369626C65080012544163746976655374796C654F626A6563740005416C\n          69676E070643656E7465720C536F757263654C6F6F6B7570061A57696E646F77\n          73203130204D6F6465726E7374796C652E706E670A53697A652E576964746805\n          000000000000008003400B53697A652E48656967687405000000000000008003\n          401453697A652E506C6174666F726D44656661756C740808577261704D6F6465\n          070643656E7465720D41637469766554726967676572070853656C6563746564\n          0A4163746976654C696E6B0E010F536F75726365526563742E4C656674050000\n          00000000808707400E536F75726365526563742E546F700500000000000000D4\n          054010536F75726365526563742E526967687405000000000000808F07401153\n          6F75726365526563742E426F74746F6D0500000000000000F405400001055363\n          616C650500000000000000C0FF3F0F536F75726365526563742E4C6566740500\n          000000000000CB07400E536F75726365526563742E546F700500000000000000\n          9F064010536F75726365526563742E52696768740500000000000000D7074011\n          536F75726365526563742E426F74746F6D0500000000000000B7064000010553\n          63616C6505000000000000008000400F536F75726365526563742E4C65667405\n          000000000000808708400E536F75726365526563742E546F7005000000000000\n          00D4064010536F75726365526563742E526967687405000000000000808F0840\n          11536F75726365526563742E426F74746F6D0500000000000000F40640000105\n          5363616C650500000000000000C000400F536F75726365526563742E4C656674\n          0500000000000040CB08400E536F75726365526563742E546F70050000000000\n          00009F074010536F75726365526563742E52696768740500000000000040D708\n          4011536F75726365526563742E426F74746F6D0500000000000000B707400000\n          0A536F757263654C696E6B0E010F536F75726365526563742E4C656674050000\n          00000000808707400E536F75726365526563742E546F700500000000000000D4\n          054010536F75726365526563742E526967687405000000000000808F07401153\n          6F75726365526563742E426F74746F6D0500000000000000F405400001055363\n          616C650500000000000000C0FF3F0F536F75726365526563742E4C6566740500\n          000000000000CB07400E536F75726365526563742E546F700500000000000000\n          9F064010536F75726365526563742E52696768740500000000000000D7074011\n          536F75726365526563742E426F74746F6D0500000000000000B7064000010553\n          63616C6505000000000000008000400F536F75726365526563742E4C65667405\n          000000000000808708400E536F75726365526563742E546F7005000000000000\n          00D4064010536F75726365526563742E526967687405000000000000808F0840\n          11536F75726365526563742E426F74746F6D0500000000000000F40640000105\n          5363616C650500000000000000C000400F536F75726365526563742E4C656674\n          0500000000000040CB08400E536F75726365526563742E546F70050000000000\n          00009F074010536F75726365526563742E52696768740500000000000040D708\n          4011536F75726365526563742E426F74746F6D0500000000000000B707400000\n          13546F756368416E696D6174696F6E2E4C696E6B0E0000000000545046300754\n          4C61796F757400095374796C654E616D6506166C697374626F786974656D7374\n          796C655F6D6F64656C05416C69676E070643656E7465720A53697A652E576964\n          74680500000000000000BB07400B53697A652E48656967687405000000000000\n          009004401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508085461624F72646572021A0B4669786564486569676874021E000A5452\n          656374616E676C6500095374796C654E616D65060F6261636B67726F756E645F\n          6F76657205416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207\n          097830303437383646460748697454657374080A53697A652E57696474680500\n          000000000000BB07400B53697A652E4865696768740500000000000000900440\n          1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F\n          6C6F720709783030343738364646000F54436F6C6F72416E696D6174696F6E00\n          095374796C654E616D6506046F766572084475726174696F6E05000000000000\n          000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374\n          61727456616C756507097830303639364136440953746F7056616C7565070978\n          42343639364136440754726967676572060F497353656C65637465643D747275\n          650E54726967676572496E76657273650610497353656C65637465643D66616C\n          73650000000654476C79706800095374796C654E616D65060A676C7970687374\n          796C650C4D617267696E732E4C65667405000000000000008000400B4D617267\n          696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874\n          05000000000000008000400E4D617267696E732E426F74746F6D050000000000\n          000080FF3F05416C69676E07044C6566740A506F736974696F6E2E5805000000\n          000000008000400A506F736974696F6E2E59050000000000000080FF3F0A5369\n          7A652E576964746805000000000000008003400B53697A652E48656967687405\n          000000000000008804401453697A652E506C6174666F726D44656661756C7408\n          000016544163746976655374796C65546578744F626A65637400095374796C65\n          4E616D6506047465787405416C69676E0706436C69656E740C4D617267696E73\n          2E4C6566740500000000000000C000400B4D617267696E732E546F7005000000\n          0000000080FF3F0D4D617267696E732E52696768740500000000000000C00040\n          0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E\n          57696474680500000000000000B006400B53697A652E48656967687405000000\n          000000008804401453697A652E506C6174666F726D44656661756C7408045465\n          7874060454657874165465787453657474696E67732E466F6E742E53697A6505\n          00000000000000800340165465787453657474696E67732E466F6E74436F6C6F\n          720709783936464646464646155465787453657474696E67732E5472696D6D69\n          6E670709436861726163746572155465787453657474696E67732E576F726457\n          72617008165465787453657474696E67732E486F727A416C69676E07074C6561\n          64696E670D536861646F7756697369626C65080D416374697665547269676765\n          72070853656C65637465640B416374697665436F6C6F720708636C6157686974\n          6500000954436865636B426F7800095374796C654E616D650605636865636B05\n          416C69676E07044C6566740843616E466F637573081244697361626C65466F63\n          7573456666656374090C4D617267696E732E4C65667405000000000000008001\n          400A506F736974696F6E2E5805000000000000008001400A53697A652E576964\n          74680500000000000000A003400B53697A652E48656967687405000000000000\n          009004401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508000016544163746976655374796C65546578744F626A65637400095374\n          796C654E616D650607636F6E7465787405416C69676E07055269676874074F70\n          61636974790500000000003333B3FE3F0C4D617267696E732E4C656674050000\n          0000000000C000400B4D617267696E732E546F70050000000000000080FF3F0D\n          4D617267696E732E52696768740500000000000000C000400E4D617267696E73\n          2E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000\n          0000000000B906400A506F736974696F6E2E59050000000000000080FF3F0A53\n          697A652E576964746805000000000000008205400B53697A652E486569676874\n          05000000000000008804401453697A652E506C6174666F726D44656661756C74\n          0804546578740606313238303030165465787453657474696E67732E466F6E74\n          2E53697A650500000000000000800340165465787453657474696E67732E466F\n          6E74436F6C6F720709783936464646464646155465787453657474696E67732E\n          5472696D6D696E670709436861726163746572155465787453657474696E6773\n          2E576F72645772617008165465787453657474696E67732E486F727A416C6967\n          6E0708547261696C696E670D536861646F7756697369626C65080D4163746976\n          6554726967676572070853656C65637465640B416374697665436F6C6F720708\n          636C615768697465000016544163746976655374796C65546578744F626A6563\n          7400095374796C654E616D650606746F6B656E7305416C69676E070552696768\n          74074F7061636974790500000000003333B3FE3F0C4D617267696E732E4C6566\n          740500000000000000C000400B4D617267696E732E546F700500000000000000\n          80FF3F0D4D617267696E732E52696768740500000000000000C000400E4D6172\n          67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E\n          5805000000000000008007400A506F736974696F6E2E59050000000000000080\n          FF3F0A53697A652E57696474680500000000000000A004400B53697A652E4865\n          6967687405000000000000008804401453697A652E506C6174666F726D446566\n          61756C74080454657874060434303936165465787453657474696E67732E466F\n          6E742E53697A650500000000000000800340165465787453657474696E67732E\n          466F6E74436F6C6F720709783936464646464646155465787453657474696E67\n          732E5472696D6D696E670709436861726163746572155465787453657474696E\n          67732E576F72645772617008165465787453657474696E67732E486F727A416C\n          69676E0708547261696C696E670D536861646F7756697369626C65080D416374\n          69766554726967676572070853656C65637465640B416374697665436F6C6F72\n          0708636C615768697465000016544163746976655374796C65546578744F626A\n          65637400095374796C654E616D650608646174616461746505416C69676E0705\n          5269676874074F7061636974790500000000003333B3FE3F0C4D617267696E73\n          2E4C6566740500000000000000C000400B4D617267696E732E546F7005000000\n          0000000080FF3F0D4D617267696E732E52696768740500000000000000C00040\n          0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F736974\n          696F6E2E5805000000000000009707400A506F736974696F6E2E590500000000\n          00000080FF3F0A53697A652E576964746805000000000000008A05400B53697A\n          652E48656967687405000000000000008804401453697A652E506C6174666F72\n          6D44656661756C74080454657874060853657020323032331654657874536574\n          74696E67732E466F6E742E53697A650500000000000000800340165465787453\n          657474696E67732E466F6E74436F6C6F72070978393646464646464615546578\n          7453657474696E67732E5472696D6D696E670709436861726163746572155465\n          787453657474696E67732E576F72645772617008165465787453657474696E67\n          732E486F727A416C69676E0708547261696C696E670D536861646F7756697369\n          626C65080D41637469766554726967676572070853656C65637465640B416374\n          697665436F6C6F720708636C6157686974650000005450463007544C61796F75\n          7400095374796C654E616D6506156C697374626F786974656D7374796C655F63\n          68617405416C69676E070643656E7465720C436C69704368696C6472656E090C\n          50616464696E672E4C6566740500000000000000C002400B50616464696E672E\n          546F700500000000000000C002400D50616464696E672E526967687405000000\n          00000000C002400E50616464696E672E426F74746F6D0500000000000000C002\n          400A53697A652E57696474680500000000000000C406400B53697A652E486569\n          6768740500000000000000AC04401453697A652E506C6174666F726D44656661\n          756C74080756697369626C6508085461624F726465720204000A545265637461\n          6E676C6500095374796C654E616D650602626705416C69676E0708436F6E7465\n          6E74730A46696C6C2E436F6C6F72070978303032413242333207486974546573\n          74080A53697A652E57696474680500000000000000C406400B53697A652E4865\n          696768740500000000000000AC04401453697A652E506C6174666F726D446566\n          61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305\n          00000000000000C0014007595261646975730500000000000000C00140000F54\n          436F6C6F72416E696D6174696F6E00095374796C654E616D6506046F76657208\n          4475726174696F6E0500000000006F1283F53F0C50726F70657274794E616D65\n          060A46696C6C2E436F6C6F720A537461727456616C7565070978303032413242\n          33320953746F7056616C75650709784646324132423332075472696767657206\n          2149734D6F7573654F7665723D747275653B497353656C65637465643D66616C\n          73650E54726967676572496E7665727365062249734D6F7573654F7665723D66\n          616C73653B497353656C65637465643D66616C736500000F54436F6C6F72416E\n          696D6174696F6E00095374796C654E616D65060873656C656374656408447572\n          6174696F6E0500000000006F1283F53F0C50726F70657274794E616D65060A46\n          696C6C2E436F6C6F720A537461727456616C7565070978464632413242333209\n          53746F7056616C756507097846463334333534310754726967676572060F4973\n          53656C65637465643D747275650E54726967676572496E766572736506224973\n          4D6F7573654F7665723D66616C73653B497353656C65637465643D66616C7365\n          0000000654476C79706800095374796C654E616D65060A676C7970687374796C\n          650B4D617267696E732E546F7005000000000000008000400D4D617267696E73\n          2E52696768740500000000000000C002400E4D617267696E732E426F74746F6D\n          050000000000000080004005416C69676E07044C6566740A506F736974696F6E\n          2E580500000000000000C002400A506F736974696F6E2E590500000000000000\n          E002400A53697A652E576964746805000000000000008003400B53697A652E48\n          65696768740500000000000000F002401453697A652E506C6174666F726D4465\n          6661756C74080A496D616765496E6465780201000E5446696C6C524742456666\n          65637400095374796C654E616D65061346696C6C524742456666656374315374\n          796C6505436F6C6F7207097846464439443945330000001654427574746F6E53\n          74796C65546578744F626A65637400095374796C654E616D6506047465787405\n          416C69676E0706436C69656E74064C6F636B6564090A53697A652E5769647468\n          0500000000000000B906400B53697A652E486569676874050000000000000098\n          03401453697A652E506C6174666F726D44656661756C74081654657874536574\n          74696E67732E466F6E742E53697A650500000000000000E00240165465787453\n          657474696E67732E466F6E74436F6C6F720708636C6157686974651554657874\n          53657474696E67732E5472696D6D696E67070943686172616374657215546578\n          7453657474696E67732E576F72645772617008165465787453657474696E6773\n          2E486F727A416C69676E07074C656164696E670D536861646F7756697369626C\n          650808486F74436F6C6F720708636C6157686974650C466F6375736564436F6C\n          6F720708636C6157686974650B4E6F726D616C436F6C6F720708636C61576869\n          74650C50726573736564436F6C6F720708636C615768697465000007544C6179\n          6F757400095374796C654E616D6506086F7665725F6C617905416C69676E0705\n          52696768740D4D617267696E732E52696768740500000000000000D404C00A50\n          6F736974696F6E2E580500000000000000C506400A506F736974696F6E2E5905\n          00000000000000C002400A53697A652E57696474680500000000000000A00440\n          0B53697A652E48656967687405000000000000009803401453697A652E506C61\n          74666F726D44656661756C7408085461624F726465720200000F54466C6F6174\n          416E696D6174696F6E00095374796C654E616D650609656469745F6F76657208\n          4475726174696F6E0500000000006F1283F53F07496E7665727365090C50726F\n          70657274794E616D65060D4D617267696E732E52696768740A53746172745661\n          6C75650500000000000000D404C00953746F7056616C75650500000000000000\n          0000000754726967676572060F497353656C65637465643D747275650E547269\n          67676572496E76657273650610497353656C65637465643D66616C7365000007\n          54427574746F6E00095374796C654E616D65060664656C65746505416C69676E\n          0705526967687406437572736F72070B637248616E64506F696E740C50616464\n          696E672E4C656674050000000000000080FF3F0B50616464696E672E546F7005\n          0000000000000080FF3F0D50616464696E672E52696768740500000000000000\n          80FF3F0E50616464696E672E426F74746F6D050000000000000080FF3F0C4D61\n          7267696E732E4C65667405000000000000008002400B4D617267696E732E546F\n          7005000000000000008000400E4D617267696E732E426F74746F6D0500000000\n          0000008000400A506F736974696F6E2E580500000000000000C003400A506F73\n          6974696F6E2E5905000000000000008000400A53697A652E5769647468050000\n          00000000008003400B53697A652E4865696768740500000000000000F0024014\n          53697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75\n          700611627574746F6E7374796C655F636C656172085461624F72646572020100\n          05545061746800095374796C654E616D65060A50617468315374796C6505416C\n          69676E0706436C69656E7409446174612E506174680AF0040000690000000000\n          0000000050410000000001000000000030410000000002000000867D15410000\n          0000020000000000004133ECAB3F020000000000004100004040010000000000\n          00410000804001000000000000400000804002000000BC4EB93F000080400200\n          00000000803FAF538E40020000000000803F0000A040020000000000803F51AC\n          B14002000000BA4EB93F0000C04002000000FFFFFF3F0000C040010000000000\n          40400000C04001000000000040400000A041020000000000404051ACB1410200\n          0000BC4E99400000C041020000000000E0400000C04101000000000088410000\n          C0410200000051AC99410000C041020000000000A84151ACB141020000000000\n          A8410000A041010000000000A8410000C040010000000000B0410000C0400200\n          0000146BB4410000C040020000000000B84151ACB140020000000000B8410000\n          A040020000000000B841AF538E4002000000146BB44100008040020000000000\n          B041000080400100000000008041000080400100000000008041000040400200\n          00000000804133ECAB3F020000007A826A410000000002000000000050410000\n          0000030000000000504100000000000000000000204100004040020000000000\n          20415DA71C4002000000D8292741FFFFFF3F0200000000003041000000400100\n          000000005041000000400200000029D658410000004002000000000060415EA7\n          1C40020000000000604100004040010000000000604100008040010000000000\n          20410000804003000000000020410000404000000000000098410000A0410200\n          00000000984129D6A8410200000029D690410000B04102000000000088410000\n          B041010000000000E0400000B041020000005EA7BC400000B041020000000000\n          A04029D6A841020000000000A0400000A041010000000000A0400000C0400100\n          0000000098410000C04003000000000098410000A04100000000000040410000\n          104102000000D7293741000010410200000000003041D7291741020000000000\n          3041000020410100000000003041000090410200000000003041146B94410200\n          0000D7293741000098410200000000004041000098410200000028D648410000\n          98410200000000005041146B9441020000000000504100009041010000000000\n          5041000020410200000000005041D72917410200000029D64841000010410200\n          0000000040410000104103000000000040410000104100000000000070410000\n          90410200000000007041146B944102000000D729774100009841020000000000\n          80410000984102000000146B8441000098410200000000008841146B94410200\n          000000008841000090410100000000008841000020410200000000008841D729\n          174102000000146B84410000104102000000000080410000104102000000D729\n          7741000010410200000000007041D72917410200000000007041000020410300\n          0000000070410000904100000000000000410000104102000000AF53EE400000\n          1041020000000000E040D7291741020000000000E04000002041010000000000\n          E04000009041020000000000E040146B944102000000AF53EE40000098410200\n          000000000041000098410200000028D60841000098410200000000001041146B\n          9441020000000000104100009041010000000000104100002041020000000000\n          1041D72917410200000029D60841000010410200000000000041000010410300\n          000000000041000010410A46696C6C2E436F6C6F720709784646443944394533\n          064C6F636B6564090748697454657374080A53697A652E576964746805000000\n          00000000E002400B53697A652E4865696768740500000000000000D002401453\n          697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64\n          07044E6F6E6508577261704D6F64650703466974000F54436F6C6F72416E696D\n          6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E\n          315374796C65084475726174696F6E0500000000006F1283F53F07496E766572\n          7365090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461\n          727456616C756507097846464439443945330953746F7056616C75650708636C\n          6157686974650754726967676572061049734D6F7573654F7665723D74727565\n          0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C\n          7365000000000754427574746F6E00095374796C654E616D6506046564697405\n          416C69676E0705526967687406437572736F72070B637248616E64506F696E74\n          0C50616464696E672E4C656674050000000000000080FF3F0B50616464696E67\n          2E546F70050000000000000080FF3F0D50616464696E672E5269676874050000\n          000000000080FF3F0E50616464696E672E426F74746F6D050000000000000080\n          FF3F0C4D617267696E732E4C65667405000000000000008002400B4D61726769\n          6E732E546F7005000000000000008000400E4D617267696E732E426F74746F6D\n          05000000000000008000400A506F736974696F6E2E5905000000000000008000\n          400A53697A652E576964746805000000000000008003400B53697A652E486569\n          6768740500000000000000F002401453697A652E506C6174666F726D44656661\n          756C74080B5374796C654C6F6F6B75700611627574746F6E7374796C655F636C\n          656172085461624F7264657202020005545061746800095374796C654E616D65\n          060A50617468315374796C6505416C69676E0706436C69656E7409446174612E\n          506174680AAC0000000E00000000000000000040410000A041010000000000A8\n          410000A041000000000000844100006040020000002CA18A4178FF2A40020000\n          00EF5F9541A1062B400200000000009C4100106040020000003D9FA2415E898A\n          40020000004B9FA241E07DB540020000001F009C4183FFCF40010000000000E0\n          400000984101000000000040400000A041010000000000804000008041010000\n          0000008441000060400300000000008441000060400946696C6C2E4B696E6407\n          044E6F6E65064C6F636B6564090748697454657374080A53697A652E57696474\n          680500000000000000E002400B53697A652E4865696768740500000000000000\n          D002401453697A652E506C6174666F726D44656661756C74080C5374726F6B65\n          2E436F6C6F72070978464644394439453308577261704D6F6465070346697400\n          0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C\n          6F72416E696D6174696F6E315374796C6507456E61626C656409084475726174\n          696F6E0500000000006F1283F53F07496E7665727365090C50726F7065727479\n          4E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565070978\n          46464439443945330953746F7056616C75650708636C61576869746507547269\n          67676572061049734D6F7573654F7665723D747275650E54726967676572496E\n          7665727365061149734D6F7573654F7665723D66616C73650000000000005450\n          463007544C61796F757400095374796C654E616D6506106D656D6F7374796C65\n          5F6E6F726D616C05416C69676E070643656E7465720C50616464696E672E4C65\n          667405000000000000008001400B50616464696E672E546F7005000000000000\n          008001400D50616464696E672E526967687405000000000000008001400E5061\n          6464696E672E426F74746F6D05000000000000008001400A53697A652E576964\n          74680500000000000000F406400B53697A652E48656967687405000000000000\n          009908401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508085461624F726465720222000A5452656374616E676C6500095374796C\n          654E616D650602626705416C69676E0708436F6E74656E74730A46696C6C2E43\n          6F6C6F7207097833434646464646460748697454657374080A53697A652E5769\n          6474680500000000000000F406400B53697A652E486569676874050000000000\n          00009908401453697A652E506C6174666F726D44656661756C74080C5374726F\n          6B652E436F6C6F72070978354146464646464607585261646975730500000000\n          000000C0004007595261646975730500000000000000C00040000F54436F6C6F\n          72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D\n          6174696F6E315374796C65084475726174696F6E050000000000CDCCCCFC3F0C\n          50726F70657274794E616D65060C5374726F6B652E436F6C6F720A5374617274\n          56616C756507097835414646464646460953746F7056616C7565070978433846\n          46464646460754726967676572060E4973466F63757365643D747275650E5472\n          6967676572496E7665727365060F4973466F63757365643D66616C7365000000\n          0C5442727573684F626A65637400095374796C654E616D65060A666F72656772\n          6F756E6400000C5442727573684F626A65637400095374796C654E616D650609\n          73656C656374696F6E0B42727573682E436F6C6F720709783746324139364646\n          00000B54466F6E744F626A65637400095374796C654E616D650604666F6E7409\n          466F6E742E53697A650500000000000000E00240000007544C61796F75740009\n          5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74\n          0C4D617267696E732E4C65667405000000000000008001400B4D617267696E73\n          2E546F7005000000000000008001400D4D617267696E732E5269676874050000\n          00000000008001400E4D617267696E732E426F74746F6D050000000000000080\n          01400A53697A652E57696474680500000000000000DC06400B53697A652E4865\n          6967687405000000000000009308401453697A652E506C6174666F726D446566\n          61756C7408085461624F72646572020000000A545363726F6C6C426172000953\n          74796C654E616D65060A767363726F6C6C62617205416C69676E070552696768\n          7406437572736F72070763724172726F770B536D616C6C4368616E6765050000\n          00000000000000000B4F7269656E746174696F6E0708566572746963616C0A50\n          6F736974696F6E2E580500000000000000E806400A506F736974696F6E2E5905\n          000000000000008001400A53697A652E57696474680500000000000000800240\n          0B53697A652E48656967687405000000000000009508401453697A652E506C61\n          74666F726D44656661756C7408085461624F72646572020100000A545363726F\n          6C6C42617200095374796C654E616D65060A687363726F6C6C62617205416C69\n          676E0706426F74746F6D06437572736F72070763724172726F770B536D616C6C\n          4368616E676505000000000000000000000B4F7269656E746174696F6E070A48\n          6F72697A6F6E74616C0A506F736974696F6E2E5805000000000000008001400A\n          506F736974696F6E2E5905000000000000009608400A53697A652E5769647468\n          0500000000000000EC06400B53697A652E486569676874050000000000000080\n          02401453697A652E506C6174666F726D44656661756C7408085461624F726465\n          720202000007544C61796F75740005416C69676E0706436C69656E740A53697A\n          652E57696474680500000000000000E406400B53697A652E4865696768740500\n          0000000000009508401453697A652E506C6174666F726D44656661756C740808\n          5461624F726465720203000F54536D616C6C5363726F6C6C4261720009537479\n          6C654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E070552\n          6967687406437572736F72070763724172726F770B536D616C6C4368616E6765\n          05000000000000000000000B4F7269656E746174696F6E070856657274696361\n          6C0C4D617267696E732E4C65667405000000000000008000400A53697A652E57\n          6964746805000000000000008002400B53697A652E4865696768740500000000\n          0000008002401453697A652E506C6174666F726D44656661756C740807566973\n          69626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E61\n          6D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F\n          6D06437572736F72070763724172726F770B536D616C6C4368616E6765050000\n          00000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C\n          0B4D617267696E732E546F7005000000000000008000400A53697A652E576964\n          746805000000000000009606400B53697A652E48656967687405000000000000\n          008002401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508000000005450463007544C61796F757400095374796C654E616D65060F\n          65646974627574746F6E7374796C6505416C69676E070643656E7465720A5369\n          7A652E576964746805000000000000008004400B53697A652E48656967687405\n          000000000000008004401453697A652E506C6174666F726D44656661756C7408\n          0756697369626C6508085461624F726465720209000A5452656374616E676C65\n          00095374796C654E616D65060F52656374616E676C65315374796C6505416C69\n          676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978303032303231\n          32330748697454657374080A53697A652E576964746805000000000000008004\n          400B53697A652E48656967687405000000000000008004401453697A652E506C\n          6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65\n          07585261646975730500000000000000C0014007595261646975730500000000\n          000000C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E61\n          6D650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F\n          6E0500000000006F1283F53F0C50726F70657274794E616D65060A46696C6C2E\n          436F6C6F720A537461727456616C756507097830303230323132330953746F70\n          56616C756507097846463230323132330754726967676572061049734D6F7573\n          654F7665723D747275650E54726967676572496E7665727365061149734D6F75\n          73654F7665723D66616C73650000000654476C79706800095374796C654E616D\n          65060A676C7970687374796C650C4D617267696E732E4C656674050000000000\n          00008000400B4D617267696E732E546F7005000000000000008000400D4D6172\n          67696E732E526967687405000000000000008000400E4D617267696E732E426F\n          74746F6D050000000000000080004005416C69676E070643656E7465720A5369\n          7A652E57696474680500000000000000C003400B53697A652E48656967687405\n          00000000000000C003401453697A652E506C6174666F726D44656661756C7408\n          0A496D616765496E6465780202000E5446696C6C524742456666656374000953\n          74796C654E616D65061346696C6C524742456666656374315374796C6505436F\n          6C6F720709784646443944394533000000005450463007544C61796F75740009\n          5374796C654E616D6506126C697374626F787374796C655F636C65617205416C\n          69676E070643656E7465720A53697A652E57696474680500000000000000F406\n          400B53697A652E48656967687405000000000000009908401453697A652E506C\n          6174666F726D44656661756C74080756697369626C6508085461624F72646572\n          0220000C5442727573684F626A65637400095374796C654E616D650618416C74\n          65726E6174696E67526F774261636B67726F756E640B42727573682E436F6C6F\n          720709784646454545454545000007544C61796F757400095374796C654E616D\n          650607636F6E74656E7405416C69676E0706436C69656E740C436C6970436869\n          6C6472656E090A53697A652E57696474680500000000000000EC06400B53697A\n          652E48656967687405000000000000009708401453697A652E506C6174666F72\n          6D44656661756C7408085461624F72646572020000000A545363726F6C6C4261\n          7200095374796C654E616D65060A767363726F6C6C62617205416C69676E0705\n          52696768740B536D616C6C4368616E676505000000000000000000000B4F7269\n          656E746174696F6E0708566572746963616C0A506F736974696F6E2E58050000\n          0000000000EC06400A53697A652E576964746805000000000000008002400B53\n          697A652E48656967687405000000000000009708401453697A652E506C617466\n          6F726D44656661756C7408085461624F72646572020100000A545363726F6C6C\n          42617200095374796C654E616D65060A687363726F6C6C62617205416C69676E\n          0706426F74746F6D0B536D616C6C4368616E676505000000000000000000000B\n          4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E\n          2E5905000000000000009708400A53697A652E57696474680500000000000000\n          F406400B53697A652E48656967687405000000000000008002401453697A652E\n          506C6174666F726D44656661756C7408085461624F726465720202000007544C\n          61796F75740005416C69676E0706436C69656E740A53697A652E576964746805\n          00000000000000EC06400B53697A652E48656967687405000000000000009708\n          401453697A652E506C6174666F726D44656661756C7408085461624F72646572\n          0203000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F\n          76736D616C6C7363726F6C6C62617205416C69676E070552696768740B536D61\n          6C6C4368616E676505000000000000000000000B4F7269656E746174696F6E07\n          08566572746963616C0C4D617267696E732E4C65667405000000000000008000\n          400A53697A652E576964746805000000000000008002400B53697A652E486569\n          67687405000000000000008002401453697A652E506C6174666F726D44656661\n          756C74080756697369626C650800000F54536D616C6C5363726F6C6C42617200\n          095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C6967\n          6E0706426F74746F6D0B536D616C6C4368616E67650500000000000000000000\n          0B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E73\n          2E546F7005000000000000008000400A53697A652E5769647468050000000000\n          00009606400B53697A652E48656967687405000000000000008002401453697A\n          652E506C6174666F726D44656661756C74080756697369626C65080000000754\n          4C61796F757400095374796C654E616D65060668656164657205416C69676E07\n          03546F700A53697A652E57696474680500000000000000C804400B53697A652E\n          4865696768740500000000000000C804401453697A652E506C6174666F726D44\n          656661756C74080756697369626C6508085461624F726465720204000007544C\n          61796F757400095374796C654E616D650606666F6F74657205416C69676E0706\n          426F74746F6D0A53697A652E57696474680500000000000000C804400B53697A\n          652E4865696768740500000000000000C804401453697A652E506C6174666F72\n          6D44656661756C74080756697369626C6508085461624F726465720205000000\n          5450463007544C61796F757400095374796C654E616D650613627574746F6E73\n          74796C655F7072696D61727905416C69676E070643656E746572074F70616369\n          7479050000000000CDCCCCFE3F0A53697A652E57696474680500000000000000\n          A004400B53697A652E4865696768740500000000000000A004401453697A652E\n          506C6174666F726D44656661756C74080756697369626C6508085461624F7264\n          6572020A000654476C79706800095374796C654E616D65060A676C7970687374\n          796C6505416C69676E070643656E7465720A53697A652E576964746805000000\n          00000000C003400B53697A652E4865696768740500000000000000C003401453\n          697A652E506C6174666F726D44656661756C74080A496D616765496E64657802\n          00000E5446696C6C52474245666665637400095374796C654E616D6506134669\n          6C6C524742456666656374315374796C6505436F6C6F72070978464644394439\n          45330000000F54466C6F6174416E696D6174696F6E00095374796C654E616D65\n          0614466C6F6174416E696D6174696F6E315374796C65084475726174696F6E05\n          0000000000CDCCCCFC3F0C50726F70657274794E616D6506074F706163697479\n          0A537461727456616C7565050000000000CDCCCCFE3F0953746F7056616C7565\n          050000000000000080FF3F0754726967676572061049734D6F7573654F766572\n          3D747275650E54726967676572496E7665727365061149734D6F7573654F7665\n          723D66616C73650000005450463007544C61796F757400095374796C654E616D\n          65060F656469747374796C655F636C65617205416C69676E070643656E746572\n          0A53697A652E57696474680500000000000000D606400B53697A652E48656967\n          687405000000000000008C04401453697A652E506C6174666F726D4465666175\n          6C74080756697369626C6508085461624F726465720224000A5452656374616E\n          676C6500095374796C654E616D650602626705416C69676E0708436F6E74656E\n          74730A46696C6C2E436F6C6F7207097833434646464646460748697454657374\n          080A53697A652E57696474680500000000000000D606400B53697A652E486569\n          67687405000000000000008C04401453697A652E506C6174666F726D44656661\n          756C74080C5374726F6B652E436F6C6F72070978354146464646464607585261\n          646975730500000000000000C0004007595261646975730500000000000000C0\n          0040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614\n          436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E050000\n          000000CDCCCCFC3F0C50726F70657274794E616D65060C5374726F6B652E436F\n          6C6F720A537461727456616C756507097835414646464646460953746F705661\n          6C756507097843384646464646460754726967676572060E4973466F63757365\n          643D747275650E54726967676572496E7665727365060F4973466F6375736564\n          3D66616C73650000000C5442727573684F626A65637400095374796C654E616D\n          65060A666F726567726F756E6400000C5442727573684F626A65637400095374\n          796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F720709\n          78374632413936464600000B54466F6E744F626A65637400095374796C654E61\n          6D650604666F6E7409466F6E742E53697A650500000000000000E00240000007\n          544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967\n          6E0706436C69656E740C4D617267696E732E4C6566740500000000000000C000\n          400B4D617267696E732E546F700500000000000000C000400D4D617267696E73\n          2E52696768740500000000000000C000400E4D617267696E732E426F74746F6D\n          0500000000000000C000400A53697A652E57696474680500000000000000CE06\n          400B53697A652E4865696768740500000000000000E803401453697A652E506C\n          6174666F726D44656661756C7408085461624F726465720200000007544C6179\n          6F757400095374796C654E616D650607627574746F6E7305416C69676E070552\n          69676874064C6F636B6564090B4D617267696E732E546F700500000000000000\n          8000400D4D617267696E732E526967687405000000000000008000400E4D6172\n          67696E732E426F74746F6D05000000000000008000400A506F736974696F6E2E\n          580500000000000000D406400A506F736974696F6E2E59050000000000000080\n          00400A53697A652E576964746805000000000000000000000B53697A652E4865\n          696768740500000000000000F803401453697A652E506C6174666F726D446566\n          61756C7408085461624F726465720201000006544C6162656C00095374796C65\n          4E616D65060670726F6D7074064C6F636B656409074F70616369747905000000\n          0000000080FE3F0756697369626C6508085461624F7264657202030000005450\n          463007544C61796F757400095374796C654E616D6506157363726F6C6C626172\n          626F74746F6D627574746F6E05416C69676E070643656E7465720A53697A652E\n          576964746805000000000000008803400B53697A652E48656967687405000000\n          000000008803401453697A652E506C6174666F726D44656661756C7408075669\n          7369626C6508085461624F72646572021F000554506174680005416C69676E07\n          0643656E74657209446174612E506174680A3400000004000000000000000000\n          000000000000010000000000803F00000000010000000000003F0000803F0300\n          000000000000000000000A46696C6C2E436F6C6F720707636C6147726179064C\n          6F636B6564090748697454657374080A53697A652E5769647468050000000000\n          00008002400B53697A652E4865696768740500000000000000E001401453697A\n          652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704\n          4E6F6E65000F54436F6C6F72416E696D6174696F6E00084475726174696F6E05\n          0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F\n          6C6F720A537461727456616C75650707636C61477261790953746F7056616C75\n          6507097846464343434343430754726967676572061049734D6F7573654F7665\n          723D7472756500000F54436F6C6F72416E696D6174696F6E0008447572617469\n          6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C\n          2E436F6C6F720A537461727456616C756507097846464343434343430953746F\n          7056616C75650707636C61477261790754726967676572061149734D6F757365\n          4F7665723D66616C7365000000005450463007544C61796F757400095374796C\n          654E616D6506147363726F6C6C62617268747261636B7374796C6505416C6967\n          6E070643656E7465720A53697A652E576964746805000000000000009803400B\n          53697A652E4865696768740500000000000100FC04401453697A652E506C6174\n          666F726D44656661756C74080756697369626C6508085461624F72646572021E\n          0006545468756D6200095374796C654E616D6506057468756D62064C6F636B65\n          64090A506F736974696F6E2E580500000000000000A001400A506F736974696F\n          6E2E590500000000000000A001400A53697A652E576964746805000000000000\n          00A002400B53697A652E4865696768740500000000000000B804401453697A65\n          2E506C6174666F726D44656661756C74080000005450463007544C61796F7574\n          00095374796C654E616D6506137363726F6C6C6261726C656674627574746F6E\n          05416C69676E070643656E7465720A53697A652E576964746805000000000000\n          00A803400B53697A652E4865696768740500000000000000A803401453697A65\n          2E506C6174666F726D44656661756C74080756697369626C6508085461624F72\n          6465720221000554506174680005416C69676E070643656E7465720944617461\n          2E506174680A4000000005000000000000000000803F00000000010000000000\n          803F0000803F01000000000000000000003F010000000000803F000000000300\n          000000000000000000000A46696C6C2E436F6C6F720707636C6147726179064C\n          6F636B6564090748697454657374080A53697A652E5769647468050000000000\n          0000E001400B53697A652E48656967687405000000000000008002401453697A\n          652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704\n          4E6F6E65000F54436F6C6F72416E696D6174696F6E00084475726174696F6E05\n          0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F\n          6C6F720A537461727456616C75650707636C61477261790953746F7056616C75\n          6507097846464343434343430754726967676572061049734D6F7573654F7665\n          723D7472756500000F54436F6C6F72416E696D6174696F6E0008447572617469\n          6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C\n          2E436F6C6F720A537461727456616C756507097846464343434343430953746F\n          7056616C75650707636C61477261790754726967676572061149734D6F757365\n          4F7665723D66616C7365000000005450463007544C61796F757400095374796C\n          654E616D6506147363726F6C6C6261727269676874627574746F6E05416C6967\n          6E070643656E7465720A53697A652E57696474680500000000000000B003400B\n          53697A652E4865696768740500000000000000A003401453697A652E506C6174\n          666F726D44656661756C74080756697369626C6508085461624F726465720223\n          000554506174680005416C69676E070643656E74657209446174612E50617468\n          0A34000000040000000000000000000000000000000100000000000000000080\n          3F010000000000803F0000003F0300000000000000000000000A46696C6C2E43\n          6F6C6F720707636C6147726179064C6F636B6564090748697454657374080A53\n          697A652E57696474680500000000000000E001400B53697A652E486569676874\n          05000000000000008002401453697A652E506C6174666F726D44656661756C74\n          080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D61\n          74696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F706572\n          74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070763\n          6C61477261790953746F7056616C756507097846464343434343430754726967\n          676572061049734D6F7573654F7665723D7472756500000F54436F6C6F72416E\n          696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F\n          70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565\n          07097846464343434343430953746F7056616C75650707636C61477261790754\n          726967676572061149734D6F7573654F7665723D66616C736500000000545046\n          3007544C61796F757400095374796C654E616D65060E7363726F6C6C62617273\n          74796C6505416C69676E070643656E7465720A53697A652E5769647468050000\n          00000000009008400B53697A652E486569676874050000000000008085074014\n          53697A652E506C6174666F726D44656661756C74080756697369626C65080854\n          61624F726465720227000A54526F756E645265637400095374796C654E616D65\n          060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C\n          6C2E436F6C6F7207097831453333333333330A53697A652E5769647468050000\n          00000000009008400B53697A652E486569676874050000000000008085074014\n          53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E\n          6407044E6F6E6500000654547261636B00095374796C654E616D650606687472\n          61636B05416C69676E0706436C69656E74064C6F636B656409034D6178050000\n          000000000080FF3F0B4F7269656E746174696F6E070A486F72697A6F6E74616C\n          0A53697A652E576964746805000000000000009008400B53697A652E48656967\n          687405000000000000808507401453697A652E506C6174666F726D4465666175\n          6C74080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B\n          7374796C650C56696577706F727453697A65050000000000CDCCCCFB3F000006\n          54547261636B00095374796C654E616D65060676747261636B05416C69676E07\n          06436C69656E74064C6F636B656409034D6178050000000000000080FF3F0B4F\n          7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E57696474\n          6805000000000000009008400B53697A652E4865696768740500000000000080\n          8507401453697A652E506C6174666F726D44656661756C74080B5374796C654C\n          6F6F6B757006147363726F6C6C62617276747261636B7374796C650C56696577\n          706F727453697A65050000000000CDCCCCFB3F0000005450463007544C61796F\n          757400095374796C654E616D6506127363726F6C6C626172746F70627574746F\n          6E05416C69676E070643656E7465720A53697A652E5769647468050000000000\n          00008003400B53697A652E48656967687405000000000000009803401453697A\n          652E506C6174666F726D44656661756C74080756697369626C6508085461624F\n          726465720226000554506174680005416C69676E070643656E74657209446174\n          612E506174680A400000000500000000000000000000000000803F0100000000\n          00803F0000803F010000000000003F0000000001000000000000000000803F03\n          00000000000000000000000A46696C6C2E436F6C6F720707636C614772617906\n          4C6F636B6564090748697454657374080A53697A652E57696474680500000000\n          0000008002400B53697A652E4865696768740500000000000000E00140145369\n          7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407\n          044E6F6E65000F54436F6C6F72416E696D6174696F6E00084475726174696F6E\n          050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E43\n          6F6C6F720A537461727456616C75650707636C61477261790953746F7056616C\n          756507097846464343434343430754726967676572061049734D6F7573654F76\n          65723D7472756500000F54436F6C6F72416E696D6174696F6E00084475726174\n          696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C\n          6C2E436F6C6F720A537461727456616C75650709784646434343434343095374\n          6F7056616C75650707636C61477261790754726967676572061149734D6F7573\n          654F7665723D66616C7365000000005450463007544C61796F75740009537479\n          6C654E616D6506147363726F6C6C62617276747261636B7374796C6505416C69\n          676E070643656E7465720A53697A652E57696474680500000000000000F60540\n          0B53697A652E48656967687405000000000000009003401453697A652E506C61\n          74666F726D44656661756C74080756697369626C6508085461624F7264657202\n          170006545468756D6200095374796C654E616D6506057468756D620643757273\n          6F72070B637248616E64506F696E74064C6F636B6564090A506F736974696F6E\n          2E5805000000000000008001400A506F736974696F6E2E590500000000000000\n          8001400A53697A652E57696474680500000000000000BC04400B53697A652E48\n          656967687405000000000000009002401453697A652E506C6174666F726D4465\n          6661756C74080756697369626C6508000000545046300A54526F756E64526563\n          7400095374796C654E616D650619736D616C6C7363726F6C6C62617268747261\n          636B7374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F72\n          07097831453333333333330A53697A652E57696474680500000000000040A408\n          400B53697A652E48656967687405000000000000009003401453697A652E506C\n          6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65\n          0756697369626C65080006545468756D6200095374796C654E616D6506057468\n          756D62064C6F636B6564090C4D617267696E732E4C6566740500000000000000\n          80FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D61726769\n          6E732E5269676874050000000000000080FF3F0E4D617267696E732E426F7474\n          6F6D050000000000000080FF3F0A506F736974696F6E2E580500000000000000\n          C000400A506F736974696F6E2E590500000000000000C002C00A53697A652E57\n          696474680500000000000000A002400B53697A652E4865696768740500000000\n          000000B804401453697A652E506C6174666F726D44656661756C740800000054\n          50463007544C61796F757400095374796C654E616D650613736D616C6C736372\n          6F6C6C6261727374796C6505416C69676E070643656E7465720A53697A652E57\n          696474680500000000000000FA05400B53697A652E4865696768740500000000\n          000040B408401453697A652E506C6174666F726D44656661756C740807566973\n          69626C6508085461624F72646572021D000654547261636B00095374796C654E\n          616D65060668747261636B05416C69676E0706436C69656E74064C6F636B6564\n          09034D6178050000000000000080FF3F0B4F7269656E746174696F6E070A486F\n          72697A6F6E74616C0A53697A652E57696474680500000000000000FA05400B53\n          697A652E4865696768740500000000000040B408401453697A652E506C617466\n          6F726D44656661756C74080B5374796C654C6F6F6B75700619736D616C6C7363\n          726F6C6C62617268747261636B7374796C650C56696577706F727453697A6505\n          0000000000CDCCCCFB3F00000654547261636B00095374796C654E616D650606\n          76747261636B05416C69676E0706436C69656E74064C6F636B656409034D6178\n          050000000000000080FF3F0B4F7269656E746174696F6E070A486F72697A6F6E\n          74616C0A53697A652E57696474680500000000000000FA05400B53697A652E48\n          65696768740500000000000040B408401453697A652E506C6174666F726D4465\n          6661756C74080B5374796C654C6F6F6B75700619736D616C6C7363726F6C6C62\n          617276747261636B7374796C650C56696577706F727453697A65050000000000\n          CDCCCCFB3F000000545046300A54526F756E645265637400095374796C654E61\n          6D650619736D616C6C7363726F6C6C62617276747261636B7374796C6505416C\n          69676E070643656E7465720A46696C6C2E436F6C6F7207097831453333333333\n          330A53697A652E57696474680500000000000000A003400B53697A652E486569\n          6768740500000000000000FC07401453697A652E506C6174666F726D44656661\n          756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C650800\n          06545468756D6200095374796C654E616D6506057468756D62064C6F636B6564\n          090C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E\n          732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500\n          00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000\n          80FF3F0A506F736974696F6E2E5805000000000000009002C00A506F73697469\n          6F6E2E590500000000000000C002400A53697A652E5769647468050000000000\n          0000BC04400B53697A652E48656967687405000000000000009002401453697A\n          652E506C6174666F726D44656661756C74080000005450463007544C61796F75\n          7400095374796C654E616D65060A7468756D627374796C6505416C69676E0706\n          43656E74657206437572736F72070B637248616E64506F696E740A53697A652E\n          576964746805000000000000009003400B53697A652E48656967687405000000\n          000000008803401453697A652E506C6174666F726D44656661756C7408075669\n          7369626C6508085461624F72646572021C000A54526F756E6452656374000953\n          74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74\n          656E74730A46696C6C2E436F6C6F720709784646353635383639064C6F636B65\n          64090748697454657374080A53697A652E576964746805000000000000009003\n          400B53697A652E48656967687405000000000000008803401453697A652E506C\n          6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65\n          000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F\n          6C6F72416E696D6174696F6E315374796C65084475726174696F6E0500000000\n          000AD7A3F83F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A\n          537461727456616C756507097846463536353836390953746F7056616C756507\n          097846464143414342450754726967676572061049734D6F7573654F7665723D\n          747275650E54726967676572496E7665727365061149734D6F7573654F766572\n          3D66616C7365000000005450463007544C61796F757400095374796C654E616D\n          65060A747261636B7374796C6505416C69676E070643656E7465720A53697A65\n          2E576964746805000000000000009D06400B53697A652E486569676874050000\n          00000000009003401453697A652E506C6174666F726D44656661756C74080756\n          697369626C6508085461624F72646572021B000A5452656374616E676C650009\n          5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E\n          74656E74730A46696C6C2E436F6C6F720709784646353035303530064C6F636B\n          6564090748697454657374080A53697A652E576964746805000000000000009D\n          06400B53697A652E48656967687405000000000000009003401453697A652E50\n          6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846\n          4633303330333007585261646975730500000000000000800140075952616469\n          75730500000000000000800140000006545468756D6200095374796C654E616D\n          6506057468756D6206437572736F72070B637248616E64506F696E74064C6F63\n          6B6564090A506F736974696F6E2E580500000000000000C000400A506F736974\n          696F6E2E59050000000000000080FF3F0A53697A652E57696474680500000000\n          000000C404400B53697A652E4865696768740500000000000000F00240145369\n          7A652E506C6174666F726D44656661756C74080000005450463007544C61796F\n          757400095374796C654E616D65060E7363726F6C6C626F787374796C6505416C\n          69676E070643656E7465720A53697A652E57696474680500000000000000CD07\n          400B53697A652E4865696768740500000000000000BE07401453697A652E506C\n          6174666F726D44656661756C74080756697369626C6508085461624F72646572\n          02310007544C61796F757400095374796C654E616D65060A6261636B67726F75\n          6E6405416C69676E0708436F6E74656E7473064C6F636B6564090A53697A652E\n          57696474680500000000000000CD07400B53697A652E48656967687405000000\n          00000000BE07401453697A652E506C6174666F726D44656661756C7408000754\n          4C61796F757400095374796C654E616D650607636F6E74656E7405416C69676E\n          0708436F6E74656E74730D4D617267696E732E52696768740500000000000000\n          C002400A53697A652E57696474680500000000000000C707400B53697A652E48\n          65696768740500000000000000BE07401453697A652E506C6174666F726D4465\n          6661756C7408000007544C61796F75740005416C69676E0706436C69656E740A\n          53697A652E57696474680500000000000000C607400B53697A652E4865696768\n          740500000000000000B707401453697A652E506C6174666F726D44656661756C\n          7408000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F\n          76736D616C6C7363726F6C6C62617205416C69676E070552696768740B536D61\n          6C6C4368616E676505000000000000000000000B4F7269656E746174696F6E07\n          08566572746963616C0C4D617267696E732E4C65667405000000000000008000\n          400A53697A652E576964746805000000000000008002400B53697A652E486569\n          67687405000000000000008002401453697A652E506C6174666F726D44656661\n          756C74080B5374796C654C6F6F6B757006227363726F6C6C626F787374796C65\n          536D616C6C5363726F6C6C4261725374796C65310756697369626C650800000F\n          54536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D61\n          6C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C43\n          68616E676505000000000000000000000B4F7269656E746174696F6E070A486F\n          72697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A\n          53697A652E576964746805000000000000009606400B53697A652E4865696768\n          7405000000000000008002401453697A652E506C6174666F726D44656661756C\n          74080756697369626C650800000007544C61796F75740005416C69676E070843\n          6F6E74656E74730A53697A652E57696474680500000000000000CD07400B5369\n          7A652E4865696768740500000000000000BE07401453697A652E506C6174666F\n          726D44656661756C74080007544C61796F75740005416C69676E0706426F7474\n          6F6D0A506F736974696F6E2E590500000000000000A507400A53697A652E5769\n          6474680500000000000000CD07400B53697A652E486569676874050000000000\n          0000C804401453697A652E506C6174666F726D44656661756C74080009545369\n          7A654772697000095374796C654E616D65060873697A656772697005416C6967\n          6E07055269676874064C6F636B6564090A506F736974696F6E2E580500000000\n          000000C307400A53697A652E57696474680500000000000000A003400B53697A\n          652E4865696768740500000000000000C804401453697A652E506C6174666F72\n          6D44656661756C74080B5374796C654C6F6F6B7570061C7363726F6C6C626F78\n          7374796C6553697A65477269705374796C6531000000000A545363726F6C6C42\n          617200095374796C654E616D65060A767363726F6C6C62617205416C69676E07\n          0552696768740B536D616C6C4368616E676505000000000000000000000B4F72\n          69656E746174696F6E0708566572746963616C0C4D617267696E732E4C656674\n          0500000000000000C000400B4D617267696E732E546F700500000000000000C0\n          00400D4D617267696E732E52696768740500000000000000C000400E4D617267\n          696E732E426F74746F6D0500000000000000C000400A506F736974696F6E2E58\n          0500000000000080C707400A506F736974696F6E2E590500000000000000C000\n          400A53697A652E576964746805000000000000008002400B53697A652E486569\n          6768740500000000000000B407401453697A652E506C6174666F726D44656661\n          756C74080B5374796C654C6F6F6B7570061D7363726F6C6C626F787374796C65\n          5363726F6C6C4261725374796C653100000A545363726F6C6C42617200095374\n          796C654E616D65060A687363726F6C6C62617205416C69676E0706426F74746F\n          6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E7461\n          74696F6E070A486F72697A6F6E74616C0C4D617267696E732E4C656674050000\n          0000000000C000400B4D617267696E732E546F700500000000000000C000400D\n          4D617267696E732E52696768740500000000000000C000400E4D617267696E73\n          2E426F74746F6D0500000000000000C000400A506F736974696F6E2E58050000\n          0000000000C000400A506F736974696F6E2E590500000000000080B807400A53\n          697A652E57696474680500000000000000CA07400B53697A652E486569676874\n          05000000000000008002401453697A652E506C6174666F726D44656661756C74\n          08000000005450463007544C61796F757400095374796C654E616D6506106275\n          74746F6E7374796C655F6D656E7505416C69676E070643656E7465720C506164\n          64696E672E4C6566740500000000000000C002400B50616464696E672E546F70\n          0500000000000000C002400D50616464696E672E526967687405000000000000\n          00C002400E50616464696E672E426F74746F6D0500000000000000C002400A53\n          697A652E57696474680500000000000000F406400B53697A652E486569676874\n          0500000000000000B004401453697A652E506C6174666F726D44656661756C74\n          080756697369626C6508085461624F726465720203000A5452656374616E676C\n          6500095374796C654E616D65060F52656374616E676C65315374796C6505416C\n          69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709783030324132\n          4233320748697454657374080A53697A652E57696474680500000000000000F4\n          06400B53697A652E4865696768740500000000000000B004401453697A652E50\n          6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E\n          6507585261646975730500000000000000C00140075952616469757305000000\n          00000000C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E\n          616D6506046F766572084475726174696F6E0500000000006F1283F53F0C5072\n          6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75\n          6507097830303241324233320953746F7056616C756507097846463241324233\n          320754726967676572061049734D6F7573654F7665723D747275650E54726967\n          676572496E7665727365061149734D6F7573654F7665723D66616C7365000000\n          0654476C79706800095374796C654E616D65060A676C7970687374796C650B4D\n          617267696E732E546F7005000000000000008000400D4D617267696E732E5269\n          6768740500000000000000C002400E4D617267696E732E426F74746F6D050000\n          000000000080004005416C69676E07044C6566740A506F736974696F6E2E5805\n          00000000000000C002400A506F736974696F6E2E590500000000000000E00240\n          0A53697A652E576964746805000000000000008003400B53697A652E48656967\n          687405000000000000008003401453697A652E506C6174666F726D4465666175\n          6C74080A496D616765496E6465780201000E5446696C6C524742456666656374\n          00095374796C654E616D65061346696C6C524742456666656374315374796C65\n          05436F6C6F7207097846464439443945330000001654427574746F6E5374796C\n          65546578744F626A65637400095374796C654E616D6506047465787405416C69\n          676E0706436C69656E74064C6F636B6564090A53697A652E5769647468050000\n          0000000000DC06400B53697A652E4865696768740500000000000000A0034014\n          53697A652E506C6174666F726D44656661756C7408165465787453657474696E\n          67732E466F6E742E53697A650500000000000000E00240165465787453657474\n          696E67732E466F6E74436F6C6F720708636C6157686974651554657874536574\n          74696E67732E5472696D6D696E67070943686172616374657215546578745365\n          7474696E67732E576F72645772617008165465787453657474696E67732E486F\n          727A416C69676E07074C656164696E670D536861646F7756697369626C650808\n          486F74436F6C6F720708636C6157686974650C466F6375736564436F6C6F7207\n          08636C6157686974650B4E6F726D616C436F6C6F720708636C6157686974650C\n          50726573736564436F6C6F720708636C6157686974650000005450463007544C\n          61796F757400095374796C654E616D650613627574746F6E7374796C655F636F\n          6E6669726D05416C69676E070643656E7465720A53697A652E57696474680500\n          0000000000008004400B53697A652E4865696768740500000000000000800440\n          1453697A652E506C6174666F726D44656661756C74080756697369626C650808\n          5461624F726465720205000A5452656374616E676C6500095374796C654E616D\n          65060F52656374616E676C65315374796C6505416C69676E0708436F6E74656E\n          74730A46696C6C2E436F6C6F7207097830304646464646460748697454657374\n          080A53697A652E576964746805000000000000008004400B53697A652E486569\n          67687405000000000000008004401453697A652E506C6174666F726D44656661\n          756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500\n          000000000000C0014007595261646975730500000000000000C00140000F5443\n          6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241\n          6E696D6174696F6E315374796C65084475726174696F6E0500000000006F1283\n          F53F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172\n          7456616C756507097830304646464646460953746F7056616C75650709783134\n          4646464646460754726967676572061049734D6F7573654F7665723D74727565\n          0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C\n          73650000000654476C79706800095374796C654E616D65060A676C7970687374\n          796C650B4D617267696E732E546F7005000000000000008000400D4D61726769\n          6E732E526967687405000000000000008000400E4D617267696E732E426F7474\n          6F6D050000000000000080004005416C69676E070643656E7465720A53697A65\n          2E57696474680500000000000000C003400B53697A652E486569676874050000\n          0000000000C003401453697A652E506C6174666F726D44656661756C74080A49\n          6D616765496E6465780202000E5446696C6C5247424566666563740009537479\n          6C654E616D65061346696C6C524742456666656374315374796C6505436F6C6F\n          720709784646443944394533000000005450463007544C61796F757400095374\n          796C654E616D65060E6D656D6F7374796C655F636F646505416C69676E070643\n          656E7465720A53697A652E57696474680500000000000000C806400B53697A65\n          2E4865696768740500000000000000C806401453697A652E506C6174666F726D\n          44656661756C74080756697369626C6508085461624F726465720230000A5452\n          656374616E676C6500095374796C654E616D65060F52656374616E676C653153\n          74796C6505416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207\n          097833323030303030300748697454657374080A53697A652E57696474680500\n          000000000000C806400B53697A652E4865696768740500000000000000C80640\n          1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69\n          6E6407044E6F6E6507585261646975730500000000000000C001400759526164\n          6975730500000000000000C0014000000C5442727573684F626A656374000953\n          74796C654E616D65060A666F726567726F756E640B42727573682E436F6C6F72\n          0708636C61426C61636B00000C5442727573684F626A65637400095374796C65\n          4E616D65060973656C656374696F6E0B42727573682E436F6C6F720709783634\n          34453445353300000B54466F6E744F626A65637400095374796C654E616D6506\n          04666F6E74000007544C61796F757400095374796C654E616D650607636F6E74\n          656E7405416C69676E0706436C69656E740C4D617267696E732E4C6566740500\n          000000000000A001400B4D617267696E732E546F700500000000000000A00140\n          0D4D617267696E732E52696768740500000000000000A001400E4D617267696E\n          732E426F74746F6D0500000000000000A001400A53697A652E57696474680500\n          000000000000B606400B53697A652E4865696768740500000000000000B60640\n          1453697A652E506C6174666F726D44656661756C7408085461624F7264657202\n          0000000A545363726F6C6C42617200095374796C654E616D65060A767363726F\n          6C6C62617205416C69676E0705526967687406437572736F7207076372417272\n          6F770B536D616C6C4368616E676505000000000000000000000B4F7269656E74\n          6174696F6E0708566572746963616C0A506F736974696F6E2E58050000000000\n          0000C006400A53697A652E576964746805000000000000008002400B53697A65\n          2E4865696768740500000000000000C006401453697A652E506C6174666F726D\n          44656661756C7408085461624F72646572020100000A545363726F6C6C426172\n          00095374796C654E616D65060A687363726F6C6C62617205416C69676E070642\n          6F74746F6D06437572736F72070763724172726F770B536D616C6C4368616E67\n          6505000000000000000000000B4F7269656E746174696F6E070A486F72697A6F\n          6E74616C0A506F736974696F6E2E590500000000000000C006400A53697A652E\n          57696474680500000000000000C806400B53697A652E48656967687405000000\n          000000008002401453697A652E506C6174666F726D44656661756C7408085461\n          624F726465720202000007544C61796F75740005416C69676E0706436C69656E\n          740A53697A652E57696474680500000000000000C006400B53697A652E486569\n          6768740500000000000000C006401453697A652E506C6174666F726D44656661\n          756C7408085461624F726465720203000F54536D616C6C5363726F6C6C426172\n          00095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69\n          676E0705526967687406437572736F72070763724172726F770B536D616C6C43\n          68616E676505000000000000000000000B4F7269656E746174696F6E07085665\n          72746963616C0C4D617267696E732E4C65667405000000000000008000400A53\n          697A652E576964746805000000000000008002400B53697A652E486569676874\n          05000000000000008002401453697A652E506C6174666F726D44656661756C74\n          080756697369626C650800000F54536D616C6C5363726F6C6C42617200095374\n          796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706\n          426F74746F6D06437572736F72070763724172726F770B536D616C6C4368616E\n          676505000000000000000000000B4F7269656E746174696F6E070A486F72697A\n          6F6E74616C0B4D617267696E732E546F7005000000000000008000400A53697A\n          652E576964746805000000000000009606400B53697A652E4865696768740500\n          0000000000008002401453697A652E506C6174666F726D44656661756C740807\n          56697369626C6508000000005450463007544C61796F757400095374796C654E\n          616D650611627574746F6E7374796C655F636C65617205416C69676E07064365\n          6E7465720756697369626C6508085461624F7264657202330000545046300754\n          4C61796F757400095374796C654E616D65060D747261636B6261727374796C65\n          05416C69676E070643656E7465720C50616464696E672E4C6566740500000000\n          0000008001400D50616464696E672E526967687405000000000000008001400A\n          53697A652E576964746805000000000000809507400B53697A652E4865696768\n          7405000000000000009803401453697A652E506C6174666F726D44656661756C\n          74080756697369626C6508085461624F7264657202350B466978656448656967\n          68740213000A54526F756E645265637400095374796C654E616D650606687472\n          61636B05416C69676E070A5665727443656E746572074869745465737408074F\n          7061636974790500000000009A9999FE3F0A506F736974696F6E2E5805000000\n          000000008001400A506F736974696F6E2E5905000000000000008001400A5369\n          7A652E576964746805000000000000809107400B53697A652E48656967687405\n          00000000000000B002401453697A652E506C6174666F726D44656661756C7408\n          0C5374726F6B652E436F6C6F720709784646443644364436000009545374796C\n          6554616700035461670214095374796C654E616D6506095468756D6253697A65\n          00000C545374796C654F626A65637400095374796C654E616D65060676747261\n          636B05416C69676E070A486F727A43656E746572074361704D6F646507045469\n          6C65064C6F636B6564090C536F757263654C6F6F6B7570061B57696E646F7773\n          203130204465736B746F707374796C652E706E670A506F736974696F6E2E5805\n          000000000000009006400A53697A652E57696474680500000000000000B00240\n          0B53697A652E48656967687405000000000000009803401453697A652E506C61\n          74666F726D44656661756C74080A536F757263654C696E6B0E010D436170496E\n          736574732E546F70050000000000000080014010436170496E736574732E426F\n          74746F6D05000000000000008001400F536F75726365526563742E4C65667405\n          000000000000808F07400E536F75726365526563742E546F7005000000000000\n          00B1064010536F75726365526563742E52696768740500000000000000950740\n          11536F75726365526563742E426F74746F6D0500000000000000ED064000010D\n          436170496E736574732E546F700500000000000000C0014010436170496E7365\n          74732E426F74746F6D0500000000000000C00140055363616C65050000000000\n          0000C0FF3F0F536F75726365526563742E4C6566740500000000000000D70740\n          0E536F75726365526563742E546F70050000000000008084074010536F757263\n          65526563742E52696768740500000000000000DF074011536F75726365526563\n          742E426F74746F6D0500000000000000B2074000010D436170496E736574732E\n          546F70050000000000000080024010436170496E736574732E426F74746F6D05\n          00000000000000800240055363616C6505000000000000008000400F536F7572\n          6365526563742E4C65667405000000000000808F08400E536F75726365526563\n          742E546F700500000000000000B1074010536F75726365526563742E52696768\n          74050000000000000095084011536F75726365526563742E426F74746F6D0500\n          000000000000ED07400000000A5452656374616E676C6500095374796C654E61\n          6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946\n          696C6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374080C\n          4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E\n          546F7005000000000000008000400D4D617267696E732E526967687405000000\n          0000000080FF3F0E4D617267696E732E426F74746F6D05000000000000008000\n          400A53697A652E576964746805000000000000009002400B53697A652E486569\n          6768740500000000000000F002401453697A652E506C6174666F726D44656661\n          756C74080B5374726F6B652E4B696E6407044E6F6E6500000006545468756D62\n          00095374796C654E616D650606767468756D62064C6F636B6564090C4D617267\n          696E732E4C65667405000000000000008000C00B4D617267696E732E546F7005\n          000000000000008000C00D4D617267696E732E52696768740500000000000000\n          8000C00E4D617267696E732E426F74746F6D05000000000000008000C00B5374\n          796C654C6F6F6B7570060D7468756D626261727374796C65000006545468756D\n          6200095374796C654E616D650606687468756D62064C6F636B6564090C4D6172\n          67696E732E4C65667405000000000000008000C00B4D617267696E732E546F70\n          05000000000000008000C00D4D617267696E732E526967687405000000000000\n          008000C00E4D617267696E732E426F74746F6D05000000000000008000C00B53\n          74796C654C6F6F6B7570060D7468756D626261727374796C65085461624F7264\n          657202010000005450463007544C61796F757400095374796C654E616D65060D\n          7468756D626261727374796C6505416C69676E070643656E7465720A53697A65\n          2E57696474680500000000000000A003400B53697A652E486569676874050000\n          0000000000A003401453697A652E506C6174666F726D44656661756C74080756\n          697369626C6508085461624F726465720237000754436972636C650009537479\n          6C654E616D65060C436972636C65315374796C6505416C69676E0706436C6965\n          6E740A46696C6C2E436F6C6F720708636C615768697465074869745465737408\n          0A53697A652E57696474680500000000000000A003400B53697A652E48656967\n          68740500000000000000A003401453697A652E506C6174666F726D4465666175\n          6C74080C5374726F6B652E436F6C6F7207097846464444444444440000005450\n          463007544C61796F757400095374796C654E616D650613627574746F6E737479\n          6C655F77656C636F6D6505416C69676E070643656E7465720C50616464696E67\n          2E4C6566740500000000000000A002400B50616464696E672E546F7005000000\n          00000000A002400D50616464696E672E52696768740500000000000000A00240\n          0E50616464696E672E426F74746F6D0500000000000000A002400A53697A652E\n          57696474680500000000000000F406400B53697A652E48656967687405000000\n          00000000B804401453697A652E506C6174666F726D44656661756C7408075669\n          7369626C6508085461624F726465720213000A5452656374616E676C65000953\n          74796C654E616D65060F52656374616E676C65315374796C6505416C69676E07\n          08436F6E74656E74730A46696C6C2E436F6C6F72070978464633453346344207\n          48697454657374080A53697A652E57696474680500000000000000F406400B53\n          697A652E4865696768740500000000000000B804401453697A652E506C617466\n          6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852\n          61646975730500000000000000C0014007595261646975730500000000000000\n          C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506\n          14436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E0500\n          000000000AD7A3F83F0C50726F70657274794E616D65060A46696C6C2E436F6C\n          6F720A537461727456616C756507097846463345334634420953746F7056616C\n          756507097846463230323132330754726967676572061049734D6F7573654F76\n          65723D747275650E54726967676572496E7665727365061149734D6F7573654F\n          7665723D66616C73650000001654427574746F6E5374796C65546578744F626A\n          65637400095374796C654E616D6506047465787405416C69676E0706436C6965\n          6E74064C6F636B6564090A53697A652E57696474680500000000000000E00640\n          0B53697A652E4865696768740500000000000000D003401453697A652E506C61\n          74666F726D44656661756C7408165465787453657474696E67732E466F6E742E\n          53697A650500000000000000E00240165465787453657474696E67732E466F6E\n          74436F6C6F720708636C615768697465155465787453657474696E67732E5472\n          696D6D696E670709436861726163746572155465787453657474696E67732E57\n          6F72645772617008165465787453657474696E67732E486F727A416C69676E07\n          074C656164696E670D536861646F7756697369626C650808486F74436F6C6F72\n          0708636C6157686974650C466F6375736564436F6C6F720708636C6157686974\n          650B4E6F726D616C436F6C6F720708636C6157686974650C5072657373656443\n          6F6C6F720708636C6157686974650000005450463007544C61796F7574000953\n          74796C654E616D650613627574746F6E7374796C655F6578656375746505416C\n          69676E070643656E7465720C50616464696E672E4C6566740500000000000000\n          C002400B50616464696E672E546F7005000000000000008002400D5061646469\n          6E672E52696768740500000000000000C002400E50616464696E672E426F7474\n          6F6D05000000000000008002400A53697A652E57696474680500000000000000\n          F406400B53697A652E48656967687405000000000000009804401453697A652E\n          506C6174666F726D44656661756C74080756697369626C6508085461624F7264\n          6572020F000A5452656374616E676C6500095374796C654E616D65060F526563\n          74616E676C65315374796C6505416C69676E0708436F6E74656E74730A46696C\n          6C2E436F6C6F7207097846463334333534310748697454657374080A53697A65\n          2E57696474680500000000000000F406400B53697A652E486569676874050000\n          00000000009804401453697A652E506C6174666F726D44656661756C74080C53\n          74726F6B652E436F6C6F72070978464635363538363907585261646975730500\n          000000000000C0014007595261646975730500000000000000C00140000F5443\n          6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241\n          6E696D6174696F6E315374796C65084475726174696F6E0500000000000AD7A3\n          F83F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172\n          7456616C756507097846463334333534310953746F7056616C75650709784646\n          3431343034450754726967676572061049734D6F7573654F7665723D74727565\n          0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C\n          73650000001654427574746F6E5374796C65546578744F626A65637400095374\n          796C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B\n          6564090A53697A652E57696474680500000000000000CA06400B53697A652E48\n          65696768740500000000000000B003401453697A652E506C6174666F726D4465\n          6661756C7408165465787453657474696E67732E466F6E742E53697A65050000\n          0000000000E00240165465787453657474696E67732E466F6E74436F6C6F7207\n          08636C615768697465155465787453657474696E67732E5472696D6D696E6707\n          09436861726163746572155465787453657474696E67732E576F726457726170\n          08165465787453657474696E67732E486F727A416C69676E07074C656164696E\n          670D536861646F7756697369626C650808486F74436F6C6F720708636C615768\n          6974650C466F6375736564436F6C6F720708636C6157686974650B4E6F726D61\n          6C436F6C6F720708636C6157686974650C50726573736564436F6C6F72070863\n          6C615768697465000005545061746800095374796C654E616D65060A50617468\n          315374796C6505416C69676E07044C65667409446174612E506174680AA80100\n          002300000000000000C3F59641B81E41410100000086EB4D41EC51AC41020000\n          004EE44A41B0AEAE4102000000129C45412C14B04102000000010040410000B0\n          41020000000D843E41EB1DB0410200000013013D41EB1DB0410200000020853B\n          410000B04102000000B97534413BF9AE410200000024B52F4162ACAB41020000\n          00000030410000A84101000000000030410000704101000000713DDA40000070\n          4102000000CFE4B640AB007041020000005B3C9A4087AD614102000000053B9A\n          403601504102000000903A9A4001F149410200000019AC9D40AB004441020000\n          00F628A44048E13E41010000007B143241A4701D4002000000E4C535412EC903\n          4002000000F3613D419238EF3F02000000E17A44410000004002000000468A4B\n          412A36084002000000DB4A5041F19C2240020000000000504100004040010000\n          00000050410000104101000000A47089410000104102000000CD46924154FF0F\n          4102000000EA70994178521E410200000040719941C9FE2F41020000005D7199\n          41FF0E364102000000FB94984155FF3B4102000000C4F59641B81E4141030000\n          00C3F59641B81E41410A46696C6C2E436F6C6F72070978464644394439453307\n          48697454657374080D4D617267696E732E52696768740500000000000000C001\n          400A506F736974696F6E2E580500000000000000C002400A506F736974696F6E\n          2E5905000000000000008002400A53697A652E57696474680500000000000000\n          C002400B53697A652E4865696768740500000000000000B003401453697A652E\n          506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F\n          6E6508577261704D6F646507034669740000005450463007544C61796F757400\n          095374796C654E616D65060B636F6D626F5F7374796C6505416C69676E070643\n          656E7465720A53697A652E57696474680500000000000000FA06400B53697A65\n          2E48656967687405000000000000008404401453697A652E506C6174666F726D\n          44656661756C74080756697369626C6508085461624F726465720239000A5452\n          656374616E676C6500095374796C654E616D650602626705416C69676E070843\n          6F6E74656E74730A46696C6C2E436F6C6F720709783343464646464646074869\n          7454657374080A53697A652E57696474680500000000000000FA06400B53697A\n          652E48656967687405000000000000008404401453697A652E506C6174666F72\n          6D44656661756C74080C5374726F6B652E436F6C6F7207097835414646464646\n          4607585261646975730500000000000000C00040075952616469757305000000\n          00000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E\n          616D650614436F6C6F72416E696D6174696F6E315374796C6508447572617469\n          6F6E050000000000CDCCCCFC3F0C50726F70657274794E616D65060C5374726F\n          6B652E436F6C6F720A537461727456616C756507097835414646464646460953\n          746F7056616C756507097843384646464646460754726967676572060E497346\n          6F63757365643D747275650E54726967676572496E7665727365060F4973466F\n          63757365643D66616C736500000A5452656374616E676C6500095374796C654E\n          616D6506056172726F7705416C69676E0708466974526967687407436F726E65\n          72730B08546F7052696768740B426F74746F6D5269676874000A46696C6C2E43\n          6F6C6F7207097833434646464646460748697454657374080C4D617267696E73\n          2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000\n          0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F\n          0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F736974\n          696F6E2E58050000000000B0F8D906400A506F736974696F6E2E590500000000\n          00000080FF3F0A53697A652E5769647468050000000000803AF803400B53697A\n          652E4865696768740500000000000000F803401453697A652E506C6174666F72\n          6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164\n          6975730500000000000000C0004007595261646975730500000000000000C000\n          40000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061443\n          6F6C6F72416E696D6174696F6E315374796C65084475726174696F6E05000000\n          0000CDCCCCFC3F07496E7665727365090C50726F70657274794E616D65060A46\n          696C6C2E436F6C6F720A537461727456616C7565070978334346464646464609\n          53746F7056616C75650709783738464646464646075472696767657206104973\n          4D6F7573654F7665723D747275650E54726967676572496E7665727365061149\n          734D6F7573654F7665723D66616C7365000005545061746800095374796C654E\n          616D65060A50617468315374796C6505416C69676E070643656E746572094461\n          74612E506174680A580000000700000000000000AE476D41295C834101000000\n          0000C04152B8CC410100000014AE0442295C8341010000000000104200009A41\n          010000000000C0410000FA41010000000000404100009A4103000000AE476D41\n          295C83410A46696C6C2E436F6C6F720709784646443944394533074869745465\n          7374080A53697A652E57696474680500000000000000C002400B53697A652E48\n          65696768740500000000000000F803401453697A652E506C6174666F726D4465\n          6661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64\n          6507034669740000000007544C61796F757400095374796C654E616D65060763\n          6F6E74656E7405416C69676E0708436F6E74656E7473064C6F636B6564090C4D\n          617267696E732E4C6566740500000000000000C000400B4D617267696E732E54\n          6F700500000000000000C000400D4D617267696E732E52696768740500000000\n          000000B803400E4D617267696E732E426F74746F6D0500000000000000C00040\n          0A53697A652E57696474680500000000000000E006400B53697A652E48656967\n          68740500000000000000D803401453697A652E506C6174666F726D4465666175\n          6C740800000B54466F6E744F626A65637400095374796C654E616D650604666F\n          6E7409466F6E742E53697A650500000000000000E0024000000C544272757368\n          4F626A65637400095374796C654E616D65060A666F726567726F756E6400000C\n          5442727573684F626A65637400095374796C654E616D65060973656C65637469\n          6F6E0B42727573682E436F6C6F72070978374632413936464600000054504630\n          0A5452656374616E676C6500095374796C654E616D65060D64726F70646F776E\n          70616E656C05416C69676E070643656E7465720A46696C6C2E436F6C6F720709\n          7846463334333534310A53697A652E57696474680500000000000000B807400B\n          53697A652E4865696768740500000000000080BD07401453697A652E506C6174\n          666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650756\n          697369626C650800005450463007544C61796F757400095374796C654E616D65\n          060C706F706F7665727374796C6505416C69676E070643656E7465720A53697A\n          652E576964746805000000000000809D07400B53697A652E4865696768740500\n          0000000000808507401453697A652E506C6174666F726D44656661756C740807\n          56697369626C6508085461624F726465720210000A5452656374616E676C6500\n          095374796C654E616D650602626705416C69676E0706436C69656E740A46696C\n          6C2E436F6C6F7207097846463334333534310A53697A652E5769647468050000\n          00000000809D07400B53697A652E486569676874050000000000008085074014\n          53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C\n          6F72070978464636363637373007585261646975730500000000000000A00140\n          07595261646975730500000000000000A00140000D54536861646F7745666665\n          6374000844697374616E63650500000000006F1283F53F09446972656374696F\n          6E0500000000000000B4044008536F66746E657373050000000000CECCCCFC3F\n          074F706163697479050000000000CDCCCCFD3F0B536861646F77436F6C6F7207\n          08636C61426C61636B000007544C61796F757400095374796C654E616D650607\n          636F6E74656E7405416C69676E0706436C69656E740A53697A652E5769647468\n          05000000000000809D07400B53697A652E486569676874050000000000008085\n          07401453697A652E506C6174666F726D44656661756C7408085461624F726465\n          720200000000005450463007544C61796F757400095374796C654E616D65060C\n          6C697374626F787374796C6505416C69676E070643656E7465720A53697A652E\n          57696474680500000000000000E907400B53697A652E48656967687405000000\n          00000040D607401453697A652E506C6174666F726D44656661756C7408075669\n          7369626C6508085461624F726465720216000C5442727573684F626A65637400\n          095374796C654E616D650618416C7465726E6174696E67526F774261636B6772\n          6F756E640B42727573682E436F6C6F72070978464645424542454200000A5452\n          656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405\n          416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464633\n          34333534310748697454657374080A53697A652E576964746805000000000000\n          00E907400B53697A652E4865696768740500000000000040D607401453697A65\n          2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709\n          78464639413941413007585261646975730500000000000000C0004007595261\n          646975730500000000000000C000400007544C61796F757400095374796C654E\n          616D650607636F6E74656E7405416C69676E0706436C69656E740C436C697043\n          68696C6472656E090C4D617267696E732E4C6566740500000000000000800040\n          0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E\n          526967687405000000000000008000400E4D617267696E732E426F74746F6D05\n          000000000000008000400A53697A652E57696474680500000000000000E30740\n          0B53697A652E4865696768740500000000000040D007401453697A652E506C61\n          74666F726D44656661756C7408085461624F72646572020000000A545363726F\n          6C6C42617200095374796C654E616D65060A767363726F6C6C62617205416C69\n          676E070552696768740B536D616C6C4368616E67650500000000000000000000\n          0B4F7269656E746174696F6E0708566572746963616C0A506F736974696F6E2E\n          580500000000000000E507400A53697A652E5769647468050000000000000080\n          02400B53697A652E4865696768740500000000000040D207401453697A652E50\n          6C6174666F726D44656661756C7408085461624F72646572020100000A545363\n          726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261720541\n          6C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000000000\n          0000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F7369\n          74696F6E2E590500000000000040D207400A53697A652E576964746805000000\n          00000000E907400B53697A652E48656967687405000000000000008002401453\n          697A652E506C6174666F726D44656661756C7408085461624F72646572020200\n          0007544C61796F75740005416C69676E0706436C69656E740A53697A652E5769\n          6474680500000000000000E507400B53697A652E486569676874050000000000\n          0040D207401453697A652E506C6174666F726D44656661756C7408085461624F\n          726465720203000F54536D616C6C5363726F6C6C42617200095374796C654E61\n          6D65060F76736D616C6C7363726F6C6C62617205416C69676E07055269676874\n          0B536D616C6C4368616E676505000000000000000000000B4F7269656E746174\n          696F6E0708566572746963616C0C4D617267696E732E4C656674050000000000\n          00008000400A53697A652E576964746805000000000000008002400B53697A65\n          2E48656967687405000000000000008002401453697A652E506C6174666F726D\n          44656661756C74080756697369626C650800000F54536D616C6C5363726F6C6C\n          42617200095374796C654E616D65060F68736D616C6C7363726F6C6C62617205\n          416C69676E0706426F74746F6D0B536D616C6C4368616E676505000000000000\n          000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D6172\n          67696E732E546F7005000000000000008000400A53697A652E57696474680500\n          0000000000009606400B53697A652E4865696768740500000000000000800240\n          1453697A652E506C6174666F726D44656661756C74080756697369626C650800\n          000007544C61796F757400095374796C654E616D65060668656164657205416C\n          69676E0703546F700A53697A652E57696474680500000000000000C804400B53\n          697A652E4865696768740500000000000000C804401453697A652E506C617466\n          6F726D44656661756C74080756697369626C6508085461624F72646572020400\n          0007544C61796F757400095374796C654E616D650606666F6F74657205416C69\n          676E0706426F74746F6D0A53697A652E57696474680500000000000000C80440\n          0B53697A652E4865696768740500000000000000C804401453697A652E506C61\n          74666F726D44656661756C74080756697369626C6508085461624F7264657202\n          05000000005450463007544C61796F75740003546167021E095374796C654E61\n          6D65060D6D656E756974656D7374796C6505416C69676E070643656E7465720A\n          53697A652E576964746805000000000000809007400B53697A652E4865696768\n          740500000000000000CC04401453697A652E506C6174666F726D44656661756C\n          74080756697369626C6508085461624F726465720215000A5452656374616E67\n          6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07\n          08436F6E74656E74730A46696C6C2E436F6C6F72070978464634343435353007\n          4869745465737408074F70616369747905000000000000000000000A53697A65\n          2E576964746805000000000000809007400B53697A652E486569676874050000\n          0000000000CC04401453697A652E506C6174666F726D44656661756C74080B53\n          74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000\n          80014007595261646975730500000000000000800140000F54466C6F6174416E\n          696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F\n          70657274794E616D6506074F7061636974790A537461727456616C7565050000\n          00000000000000000953746F7056616C7565050000000000000080FF3F075472\n          6967676572061049734D6F7573654F7665723D747275650E5472696767657249\n          6E7665727365061149734D6F7573654F7665723D66616C736500000007544C61\n          796F757400095374796C654E616D650605676C79706805416C69676E07044C65\n          66740A53697A652E57696474680500000000000000C803400B53697A652E4865\n          696768740500000000000000CC04401453697A652E506C6174666F726D446566\n          61756C74080007544C61796F757400095374796C654E616D650609636865636B\n          6D61726B05416C69676E0708436F6E74656E7473074F70616369747905000000\n          00006F1283F53F0A53697A652E57696474680500000000000000C803400B5369\n          7A652E4865696768740500000000000000CC04401453697A652E506C6174666F\n          726D44656661756C74080005545061746800095374796C654E616D65060E6368\n          65636B6D61726B7374796C6505416C69676E070643656E74657209446174612E\n          506174680A58000000070000000000000056D9524391AE2C4301000000927666\n          4365021643010000009F3983432B7C3C43010000009E9AA64382D2B442010000\n          006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE2C\n          430A46696C6C2E436F6C6F720708636C61426C61636B0748697454657374080A\n          53697A652E57696474680500000000000000B002400B53697A652E4865696768\n          740500000000000000B002401453697A652E506C6174666F726D44656661756C\n          74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D\n          6174696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F7065\n          7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650708\n          636C61426C61636B0953746F7056616C75650708636C61426C61636B07547269\n          67676572060F497353656C65637465643D747275650E54726967676572496E76\n          657273650610497353656C65637465643D66616C736500000F54436F6C6F7241\n          6E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C5072\n          6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75\n          650708636C61426C61636B0953746F7056616C75650708636C61426C61636B07\n          54726967676572062149734D6F7573654F7665723D747275653B497353656C65\n          637465643D66616C73650E54726967676572496E7665727365062249734D6F75\n          73654F7665723D66616C73653B497353656C65637465643D66616C7365000000\n          0F54466C6F6174416E696D6174696F6E00084475726174696F6E050000000000\n          CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A53746172\n          7456616C756505000000000000000000000953746F7056616C75650500000000\n          00000080FF3F0754726967676572060E4973436865636B65643D747275650E54\n          726967676572496E7665727365060F4973436865636B65643D66616C73650000\n          000654496D61676500095374796C654E616D6506066269746D61700E4D756C74\n          695265734269746D61700E01000005416C69676E070A486F727A43656E746572\n          0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73\n          2E546F7005000000000000008000400D4D617267696E732E5269676874050000\n          00000000008000400E4D617267696E732E426F74746F6D050000000000000080\n          00400A506F736974696F6E2E5805000000000000008000400A506F736974696F\n          6E2E5905000000000000008000400A53697A652E576964746805000000000000\n          00A803400B53697A652E4865696768740500000000000000BC04401453697A65\n          2E506C6174666F726D44656661756C740800000654476C79706800095374796C\n          654E616D65060A676C7970687374796C650C4D617267696E732E4C6566740500\n          00000000000080FF3F0B4D617267696E732E546F700500000000000000800040\n          0D4D617267696E732E52696768740500000000000000C000400E4D617267696E\n          732E426F74746F6D050000000000000080FF3F05416C69676E070A486F727A43\n          656E7465720A53697A652E576964746805000000000000008003400B53697A65\n          2E48656967687405000000000000008003401453697A652E506C6174666F726D\n          44656661756C740800000005545465787400095374796C654E616D6506047465\n          787405416C69676E07044C656674064C6F636B6564090748697454657374080C\n          4D617267696E732E4C65667405000000000000008002400D4D617267696E732E\n          526967687405000000000000008002400A506F736974696F6E2E580500000000\n          0000008404400A53697A652E57696474680500000000000000C804400B53697A\n          652E4865696768740500000000000000CC04401453697A652E506C6174666F72\n          6D44656661756C7408165465787453657474696E67732E466F6E742E53697A65\n          0500000000000000800340165465787453657474696E67732E466F6E74436F6C\n          6F720709783936464646464646165465787453657474696E67732E486F727A41\n          6C69676E07074C656164696E67000F54436F6C6F72416E696D6174696F6E0009\n          5374796C654E616D650608616E696D5F73656C084475726174696F6E05000000\n          000018B7D1F23F0C50726F70657274794E616D650605436F6C6F720A53746172\n          7456616C756507097839364646464646460953746F7056616C75650709783936\n          4646464646460754726967676572060F497353656C65637465643D747275650E\n          54726967676572496E76657273650610497353656C65637465643D66616C7365\n          00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65060961\n          6E696D5F6F766572084475726174696F6E05000000000018B7D1F23F0C50726F\n          70657274794E616D650605436F6C6F720A537461727456616C75650709783936\n          4646464646460953746F7056616C75650708636C615768697465075472696767\n          6572062149734D6F7573654F7665723D747275653B497353656C65637465643D\n          66616C73650E54726967676572496E7665727365062249734D6F7573654F7665\n          723D66616C73653B497353656C65637465643D66616C73650000000554546578\n          7400095374796C654E616D65060873686F727463757405416C69676E07055269\n          676874064C6F636B656409074869745465737408074F70616369747905000000\n          00003333B3FE3F0C4D617267696E732E4C6566740500000000000000C002400D\n          4D617267696E732E52696768740500000000000000C001400A506F736974696F\n          6E2E580500000000000000D506400A53697A652E576964746805000000000000\n          00C804400B53697A652E4865696768740500000000000000CC04401453697A65\n          2E506C6174666F726D44656661756C7408165465787453657474696E67732E46\n          6F6E74436F6C6F720708636C615768697465165465787453657474696E67732E\n          486F727A416C69676E07074C656164696E67000007544C61796F757400095374\n          796C654E616D6506077375626D61726B05416C69676E070552696768740A506F\n          736974696F6E2E5805000000000000808607400A53697A652E57696474680500\n          000000000000A003400B53697A652E4865696768740500000000000000CC0440\n          1453697A652E506C6174666F726D44656661756C740800055450617468000541\n          6C69676E070643656E74657209446174612E506174680A340000000400000000\n          000000000000000000000001000000000000000000803F010000000000803F00\n          00003F0300000000000000000000000A46696C6C2E436F6C6F72070978464645\n          4445444544064C6F636B6564090748697454657374080A53697A652E57696474\n          680500000000000000E001400B53697A652E4865696768740500000000000000\n          8002401453697A652E506C6174666F726D44656661756C74080B5374726F6B65\n          2E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00084475\n          726174696F6E05000000000018B7D1F23F0C50726F70657274794E616D65060A\n          46696C6C2E436F6C6F720A537461727456616C75650708636C61426C61636B09\n          53746F7056616C75650708636C61426C61636B0754726967676572062149734D\n          6F7573654F7665723D747275653B497353656C65637465643D66616C73650E54\n          726967676572496E7665727365062249734D6F7573654F7665723D66616C7365\n          3B497353656C65637465643D66616C736500000F54436F6C6F72416E696D6174\n          696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F70657274\n          794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650708636C\n          61426C61636B0953746F7056616C75650708636C61426C61636B075472696767\n          6572060F497353656C65637465643D747275650E54726967676572496E766572\n          73650610497353656C65637465643D66616C73650000000009545374796C6554\n          616700095374796C654E616D65060668656967687408546167466C6F61740500\n          000000000000F003400000005450463007544C61796F757400095374796C654E\n          616D6506146D656E756974656D7374796C655F627574746F6E05416C69676E07\n          0643656E7465720A53697A652E576964746805000000000000809007400B5369\n          7A652E4865696768740500000000000000CC04401453697A652E506C6174666F\n          726D44656661756C74080756697369626C6508085461624F726465720211000A\n          5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E\n          6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846\n          46343434353530074869745465737408074F7061636974790500000000000000\n          0000000A53697A652E576964746805000000000000809007400B53697A652E48\n          65696768740500000000000000CC04401453697A652E506C6174666F726D4465\n          6661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573\n          050000000000000080014007595261646975730500000000000000800140000F\n          54466C6F6174416E696D6174696F6E00084475726174696F6E05000000000018\n          B7D1F23F0C50726F70657274794E616D6506074F7061636974790A5374617274\n          56616C756505000000000000000000000953746F7056616C7565050000000000\n          000080FF3F0754726967676572061049734D6F7573654F7665723D747275650E\n          54726967676572496E7665727365061149734D6F7573654F7665723D66616C73\n          6500000007544C61796F757400095374796C654E616D650605676C7970680541\n          6C69676E07044C6566740A53697A652E57696474680500000000000000C80340\n          0B53697A652E4865696768740500000000000000CC04401453697A652E506C61\n          74666F726D44656661756C74080007544C61796F757400095374796C654E616D\n          650609636865636B6D61726B05416C69676E0708436F6E74656E7473074F7061\n          636974790500000000006F1283F53F0A53697A652E5769647468050000000000\n          0000C803400B53697A652E4865696768740500000000000000CC04401453697A\n          652E506C6174666F726D44656661756C74080005545061746800095374796C65\n          4E616D65060E636865636B6D61726B7374796C6505416C69676E070643656E74\n          657209446174612E506174680A58000000070000000000000056D9524391AE2C\n          43010000009276664365021643010000009F3983432B7C3C43010000009E9AA6\n          4382D2B442010000006F1CB04375A4D1420100000026DF8243263F6743030000\n          0056D9524391AE2C430A46696C6C2E436F6C6F720708636C61426C61636B0748\n          697454657374080A53697A652E57696474680500000000000000B002400B5369\n          7A652E4865696768740500000000000000B002401453697A652E506C6174666F\n          726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F5443\n          6F6C6F72416E696D6174696F6E00084475726174696F6E05000000000018B7D1\n          F23F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172\n          7456616C75650708636C61426C61636B0953746F7056616C75650708636C6142\n          6C61636B0754726967676572060F497353656C65637465643D747275650E5472\n          6967676572496E76657273650610497353656C65637465643D66616C73650000\n          0F54436F6C6F72416E696D6174696F6E00084475726174696F6E050000000000\n          18B7D1F23F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53\n          7461727456616C75650708636C61426C61636B0953746F7056616C7565070863\n          6C61426C61636B0754726967676572062149734D6F7573654F7665723D747275\n          653B497353656C65637465643D66616C73650E54726967676572496E76657273\n          65062249734D6F7573654F7665723D66616C73653B497353656C65637465643D\n          66616C73650000000F54466C6F6174416E696D6174696F6E0008447572617469\n          6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506074F706163\n          6974790A537461727456616C756505000000000000000000000953746F705661\n          6C7565050000000000000080FF3F0754726967676572060E4973436865636B65\n          643D747275650E54726967676572496E7665727365060F4973436865636B6564\n          3D66616C73650000000654496D61676500095374796C654E616D650606626974\n          6D61700E4D756C74695265734269746D61700E01000005416C69676E070A486F\n          727A43656E7465720C4D617267696E732E4C6566740500000000000000800040\n          0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E\n          526967687405000000000000008000400E4D617267696E732E426F74746F6D05\n          000000000000008000400A506F736974696F6E2E580500000000000000800040\n          0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474\n          680500000000000000A803400B53697A652E4865696768740500000000000000\n          BC04401453697A652E506C6174666F726D44656661756C740800000654476C79\n          706800095374796C654E616D65060A676C7970687374796C650C4D617267696E\n          732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000\n          00000000008000400D4D617267696E732E52696768740500000000000000C000\n          400E4D617267696E732E426F74746F6D050000000000000080FF3F05416C6967\n          6E070A486F727A43656E7465720A53697A652E57696474680500000000000000\n          8003400B53697A652E48656967687405000000000000008003401453697A652E\n          506C6174666F726D44656661756C74080000001654427574746F6E5374796C65\n          546578744F626A65637400095374796C654E616D6506047465787405416C6967\n          6E0706436C69656E74064C6F636B6564090C4D617267696E732E4C6566740500\n          00000000000080FF3F0B4D617267696E732E546F700500000000000000800040\n          0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E\n          732E426F74746F6D05000000000000008000400A53697A652E57696474680500\n          0000000000008307400B53697A652E4865696768740500000000000000BC0440\n          1453697A652E506C6174666F726D44656661756C740818546578745365747469\n          6E67732E466F6E742E46616D696C790606526F626F746F165465787453657474\n          696E67732E466F6E742E53697A65050000000000000080034016546578745365\n          7474696E67732E466F6E74436F6C6F7207097839364646464646461654657874\n          53657474696E67732E486F727A416C69676E07074C656164696E670D53686164\n          6F7756697369626C650808486F74436F6C6F720708636C6157686974650C466F\n          6375736564436F6C6F7207097839364646464646460B4E6F726D616C436F6C6F\n          7207097839364646464646460C50726573736564436F6C6F720708636C615768\n          6974650000005450463007544C61796F757400095374796C654E616D65060D6D\n          656E75766965777374796C6505416C69676E070643656E7465720A53697A652E\n          57696474680500000000000000E406400B53697A652E48656967687405000000\n          00000000A907401453697A652E506C6174666F726D44656661756C7408085461\n          624F726465720212000A5452656374616E676C6500095374796C654E616D6506\n          02626705416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846\n          463334333534310A53697A652E57696474680500000000000000E406400B5369\n          7A652E4865696768740500000000000000A907401453697A652E506C6174666F\n          726D44656661756C74080C5374726F6B652E436F6C6F72070978464634423434\n          353407585261646975730500000000000000A001400759526164697573050000\n          0000000000A00140000D54536861646F77456666656374000844697374616E63\n          650500000000006F1283F53F09446972656374696F6E0500000000000000B404\n          4008536F66746E657373050000000000CECCCCFC3F074F706163697479050000\n          000000CDCCCCFD3F0B536861646F77436F6C6F720708636C61426C61636B0000\n          0007544C61796F757400095374796C654E616D650607636F6E74656E7405416C\n          69676E0706436C69656E740C4D617267696E732E4C6566740500000000000000\n          C001400B4D617267696E732E546F700500000000000000C001400D4D61726769\n          6E732E52696768740500000000000000C001400E4D617267696E732E426F7474\n          6F6D0500000000000000C001400A53697A652E57696474680500000000000000\n          D806400B53697A652E4865696768740500000000000000A307401453697A652E\n          506C6174666F726D44656661756C74080000005450463007544C61796F757400\n          095374796C654E616D6506126D656E75736570617261746F727374796C650541\n          6C69676E070643656E7465720A53697A652E57696474680500000000000000C8\n          05400B53697A652E48656967687405000000000000008002401453697A652E50\n          6C6174666F726D44656661756C74080756697369626C6508085461624F726465\n          72023B00005450463007544C61796F757400095374796C654E616D6506176C65\n          667473656C656374696F6E706F696E747374796C6505416C69676E070643656E\n          7465720A53697A652E57696474680500000000000000C003400B53697A652E48\n          65696768740500000000000000C004401453697A652E506C6174666F726D4465\n          6661756C74080756697369626C6508085461624F7264657202400A4669786564\n          576964746802180B46697865644865696768740230000A5452656374616E676C\n          6500095374796C654E616D65060A6261636B67726F756E6407436F726E657273\n          0B07546F704C6566740A426F74746F6D4C6566740B426F74746F6D5269676874\n          000A46696C6C2E436F6C6F720709784646414341434245074869745465737408\n          0A506F736974696F6E2E580500000000000000A803C00A506F736974696F6E2E\n          5905000000000000008404400A53697A652E57696474680500000000000000A0\n          03400B53697A652E4865696768740500000000000000A003401453697A652E50\n          6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E\n          6507585261646975730500000000000000A00240075952616469757305000000\n          00000000A002400000005450463007544C61796F757400095374796C654E616D\n          650618726967687473656C656374696F6E706F696E747374796C6505416C6967\n          6E070643656E7465720A53697A652E57696474680500000000000000C003400B\n          53697A652E4865696768740500000000000000C004401453697A652E506C6174\n          666F726D44656661756C74080756697369626C6508085461624F726465720244\n          0A4669786564576964746802180B46697865644865696768740230000A545265\n          6374616E676C6500095374796C654E616D65060A6261636B67726F756E640743\n          6F726E6572730B08546F7052696768740A426F74746F6D4C6566740B426F7474\n          6F6D5269676874000A46696C6C2E436F6C6F7207097846464143414342450748\n          697454657374080A53697A652E57696474680500000000000000A003400B5369\n          7A652E4865696768740500000000000000A003401453697A652E506C6174666F\n          726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261\n          646975730500000000000000A0024007595261646975730500000000000000A0\n          02400000005450463007544C61796F757400095374796C654E616D6506116275\n          74746F6E5F7363726F6C6C646F776E05416C69676E070643656E7465720A5369\n          7A652E57696474680500000000000000F003400B53697A652E48656967687405\n          00000000000000F003401453697A652E506C6174666F726D44656661756C7408\n          0756697369626C6508085461624F72646572024A000754436972636C65000953\n          74796C654E616D650602626705416C69676E0706436C69656E740A46696C6C2E\n          436F6C6F7207097833324646464646460748697454657374080A53697A652E57\n          696474680500000000000000F003400B53697A652E4865696768740500000000\n          000000F003401453697A652E506C6174666F726D44656661756C74080C537472\n          6F6B652E436F6C6F720709783145464646464646000554506174680009537479\n          6C654E616D65060A50617468315374796C6505416C69676E070643656E746572\n          09446174612E506174680AD801000027000000000000001E6ACF42E790C94502\n          000000F631D042C58DC94502000000F631D042B488C945020000001E6ACF4294\n          85C9450200000045A2CE427382C94502000000BC5ECD427382C9450200000066\n          97CC429485C9450100000038B7BF4225B9C945020000003716BF42AABBC94502\n          00000026FFBD42E1B9C9450200000026FFBD4251B6C9450100000026FFBD42DF\n          3FC9450200000026FFBD42733BC94502000000421EBD420038C945020000001F\n          04BC420038C945010000001402BC420038C94502000000F1E7BA420038C94502\n          000000EB00BA42733BC94502000000EB00BA42DF3FC94501000000EB00BA4251\n          B6C94502000000EB00BA42E1B9C9450200000084F1B842AABBC9450200000083\n          50B84225B9C945010000009F66AB425585C94502000000499FAA423382C94502\n          000000C65CA9423382C94502000000ED94A8425585C945010000007095A84255\n          85C945020000001ACEA7427488C945020000001ACEA742868DC94502000000F3\n          95A842A790C94501000000FB34B9424FD3C94501000000FB34B9424FD3C94502\n          0000002AC4BA4290D9C94502000000BF4BBD4290D9C94502000000EDDABE424F\n          D3C94502000000ED36BF42DCD1C94502000000A1C6CF42748FC945020000001E\n          6ACF42E790C9450A46696C6C2E436F6C6F720709784141464646464646074869\n          7454657374080A53697A652E576964746805000000000000008003400B53697A\n          652E48656967687405000000000000008003401453697A652E506C6174666F72\n          6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650857726170\n          4D6F6465070346697400000F54436F6C6F72416E696D6174696F6E0009537479\n          6C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508447572\n          6174696F6E050000000000CDCCCCFC3F0C50726F70657274794E616D65060A46\n          696C6C2E436F6C6F720A537461727456616C7565070978333246464646464609\n          53746F7056616C75650709783530464646464646075472696767657206104973\n          4D6F7573654F7665723D747275650E54726967676572496E7665727365061149\n          734D6F7573654F7665723D66616C736500000000545046300D54537769746368\n          4F626A65637400095374796C654E616D65060B7377697463687374796C650541\n          6C69676E070643656E7465720A53697A652E5769647468050000000000004094\n          08400B53697A652E48656967687405000000000000808207401453697A652E50\n          6C6174666F726D44656661756C7408085461624F72646572023F12547261636B\n          696E675468756D625363616C65050000000000000080FF3F0756697369626C65\n          080A46696C6C2E436F6C6F7207097846463133313331330B5374726F6B652E4B\n          696E6407044E6F6E650B5468756D622E436F6C6F720709784646373437343734\n          0D5468756D624F6E2E436F6C6F7207097846464143414342450C5468756D624F\n          6E2E4B696E640705536F6C6964105468756D625374726F6B652E4B696E640704\n          4E6F6E6505536861706507044F76616C00005450463007544C61796F75740009\n          5374796C654E616D65061A627574746F6E7374796C655F636C6561726D696E69\n          5F6C65667405416C69676E070643656E7465720A53697A652E57696474680500\n          0000000000008004400B53697A652E4865696768740500000000000000800440\n          1453697A652E506C6174666F726D44656661756C74080756697369626C650808\n          5461624F726465720207000A5452656374616E676C6500095374796C654E616D\n          65060F52656374616E676C65315374796C6505416C69676E0708436F6E74656E\n          747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A\n          46696C6C2E436F6C6F7207097846463230323132330748697454657374080A53\n          697A652E576964746805000000000000008004400B53697A652E486569676874\n          05000000000000008004401453697A652E506C6174666F726D44656661756C74\n          080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500000000\n          000000C0014007595261646975730500000000000000C00140000F54436F6C6F\n          72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D\n          6174696F6E315374796C65084475726174696F6E0500000000006F1283F53F0C\n          50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661\n          6C756507097846463230323132330953746F7056616C75650709784646353235\n          3435380754726967676572061049734D6F7573654F7665723D747275650E5472\n          6967676572496E7665727365061149734D6F7573654F7665723D66616C736500\n          00000654476C79706800095374796C654E616D65060A676C7970687374796C65\n          0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E\n          526967687405000000000000008000400E4D617267696E732E426F74746F6D05\n          0000000000000080004005416C69676E070643656E7465720A53697A652E5769\n          6474680500000000000000C003400B53697A652E486569676874050000000000\n          0000C003401453697A652E506C6174666F726D44656661756C74080A496D6167\n          65496E6465780202000E5446696C6C52474245666665637400095374796C654E\n          616D65061346696C6C524742456666656374315374796C6505436F6C6F720709\n          784646443944394533000000005450463007544C61796F757400095374796C65\n          4E616D65061B627574746F6E7374796C655F636C6561726D696E695F72696768\n          7405416C69676E070643656E7465720A53697A652E5769647468050000000000\n          00008004400B53697A652E48656967687405000000000000008004401453697A\n          652E506C6174666F726D44656661756C74080756697369626C6508085461624F\n          726465720206000654476C79706800095374796C654E616D65060A676C797068\n          7374796C650B4D617267696E732E546F7005000000000000008000400D4D6172\n          67696E732E526967687405000000000000008000400E4D617267696E732E426F\n          74746F6D050000000000000080004005416C69676E070643656E7465720A5369\n          7A652E57696474680500000000000000C003400B53697A652E48656967687405\n          00000000000000C003401453697A652E506C6174666F726D44656661756C7408\n          0A496D616765496E6465780202000E5446696C6C524742456666656374000953\n          74796C654E616D65061346696C6C524742456666656374315374796C6505436F\n          6C6F7207097846464439443945330000000A5452656374616E676C6500095374\n          796C654E616D65060F52656374616E676C65315374796C6505416C69676E0708\n          436F6E74656E747307436F726E6572730B08546F7052696768740B426F74746F\n          6D5269676874000A46696C6C2E436F6C6F720709784646323032313233074869\n          7454657374080A53697A652E576964746805000000000000008004400B53697A\n          652E48656967687405000000000000008004401453697A652E506C6174666F72\n          6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164\n          6975730500000000000000C0014007595261646975730500000000000000C001\n          40000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061443\n          6F6C6F72416E696D6174696F6E315374796C65084475726174696F6E05000000\n          00006F1283F53F0C50726F70657274794E616D65060A46696C6C2E436F6C6F72\n          0A537461727456616C756507097846463230323132330953746F7056616C7565\n          07097846463532353435380754726967676572061049734D6F7573654F766572\n          3D747275650E54726967676572496E7665727365061149734D6F7573654F7665\n          723D66616C7365000000005450463007544C61796F757400095374796C654E61\n          6D65060F6D656D6F7374796C655F636C65617205416C69676E070643656E7465\n          720A53697A652E57696474680500000000000000F406400B53697A652E486569\n          67687405000000000000009908401453697A652E506C6174666F726D44656661\n          756C74080756697369626C6508085461624F72646572022D000C544272757368\n          4F626A65637400095374796C654E616D65060A666F726567726F756E640B4272\n          7573682E436F6C6F720708636C61426C61636B00000C5442727573684F626A65\n          637400095374796C654E616D65060973656C656374696F6E0B42727573682E43\n          6F6C6F72070978363431463230323700000B54466F6E744F626A656374000953\n          74796C654E616D650604666F6E74000007544C61796F757400095374796C654E\n          616D650607636F6E74656E7405416C69676E0706436C69656E740C4D61726769\n          6E732E4C6566740500000000000000A001400D4D617267696E732E5269676874\n          0500000000000000A001400A53697A652E57696474680500000000000000E206\n          400B53697A652E48656967687405000000000000009708401453697A652E506C\n          6174666F726D44656661756C7408085461624F72646572020000000A54536372\n          6F6C6C42617200095374796C654E616D65060A767363726F6C6C62617205416C\n          69676E0705526967687406437572736F72070763724172726F770B536D616C6C\n          4368616E676505000000000000000000000B4F7269656E746174696F6E070856\n          6572746963616C0A506F736974696F6E2E580500000000000000EC06400A5369\n          7A652E576964746805000000000000008002400B53697A652E48656967687405\n          000000000000009708401453697A652E506C6174666F726D44656661756C7408\n          085461624F72646572020100000A545363726F6C6C42617200095374796C654E\n          616D65060A687363726F6C6C62617205416C69676E0706426F74746F6D064375\n          72736F72070763724172726F770B536D616C6C4368616E676505000000000000\n          000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F73\n          6974696F6E2E5905000000000000009708400A53697A652E5769647468050000\n          0000000000F406400B53697A652E486569676874050000000000000080024014\n          53697A652E506C6174666F726D44656661756C7408085461624F726465720202\n          000007544C61796F75740005416C69676E0706436C69656E740A53697A652E57\n          696474680500000000000000EC06400B53697A652E4865696768740500000000\n          0000009708401453697A652E506C6174666F726D44656661756C740808546162\n          4F726465720203000F54536D616C6C5363726F6C6C42617200095374796C654E\n          616D65060F76736D616C6C7363726F6C6C62617205416C69676E070552696768\n          7406437572736F72070763724172726F770B536D616C6C4368616E6765050000\n          00000000000000000B4F7269656E746174696F6E0708566572746963616C0C4D\n          617267696E732E4C65667405000000000000008000400A53697A652E57696474\n          6805000000000000008002400B53697A652E4865696768740500000000000000\n          8002401453697A652E506C6174666F726D44656661756C74080756697369626C\n          650800000F54536D616C6C5363726F6C6C42617200095374796C654E616D6506\n          0F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F6D0643\n          7572736F72070763724172726F770B536D616C6C4368616E6765050000000000\n          00000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D61\n          7267696E732E546F7005000000000000008000400A53697A652E576964746805\n          000000000000009606400B53697A652E48656967687405000000000000008002\n          401453697A652E506C6174666F726D44656661756C74080756697369626C6508\n          000000005450463007544C61796F757400095374796C654E616D650610627574\n          746F6E7374796C655F69636F6E05416C69676E070643656E7465720C50616464\n          696E672E4C65667405000000000000008001400B50616464696E672E546F7005\n          000000000000008001400D50616464696E672E52696768740500000000000000\n          8001400E50616464696E672E426F74746F6D05000000000000008001400A5369\n          7A652E57696474680500000000000000B804400B53697A652E48656967687405\n          00000000000000B804401453697A652E506C6174666F726D44656661756C7408\n          0756697369626C6508085461624F726465720201000A5452656374616E676C65\n          00095374796C654E616D65060F52656374616E676C65315374796C6505416C69\n          676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978303032413242\n          33320748697454657374080A53697A652E57696474680500000000000000B804\n          400B53697A652E4865696768740500000000000000B804401453697A652E506C\n          6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65\n          07585261646975730500000000000000C0014007595261646975730500000000\n          000000C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E61\n          6D6506046F766572084475726174696F6E0500000000006F1283F53F0C50726F\n          70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565\n          07097830303241324233320953746F7056616C75650709784646324132423332\n          0754726967676572061049734D6F7573654F7665723D747275650E5472696767\n          6572496E7665727365061149734D6F7573654F7665723D66616C736500000006\n          54476C79706800095374796C654E616D65060A676C7970687374796C6505416C\n          69676E070643656E7465720A53697A652E57696474680500000000000000A003\n          400B53697A652E4865696768740500000000000000A003401453697A652E506C\n          6174666F726D44656661756C74080A496D616765496E646578020E000E544669\n          6C6C52474245666665637400095374796C654E616D65061346696C6C52474245\n          6666656374315374796C6505436F6C6F72070978464644394439453300000000\n          5450463007544C61796F757400095374796C654E616D650617627574746F6E73\n          74796C655F6D656E75627574746F6E7305416C69676E070643656E7465720A53\n          697A652E57696474680500000000000000F406400B53697A652E486569676874\n          0500000000000000B004401453697A652E506C6174666F726D44656661756C74\n          080756697369626C6508085461624F726465720202000A5452656374616E676C\n          6500095374796C654E616D65060F52656374616E676C65315374796C6505416C\n          69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709783030464646\n          4646460748697454657374080A53697A652E57696474680500000000000000F4\n          06400B53697A652E4865696768740500000000000000B004401453697A652E50\n          6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E\n          65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506046F\n          766572084475726174696F6E0500000000006F1283F53F0C50726F7065727479\n          4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709783030\n          4646464646460953746F7056616C756507097831454646464646460754726967\n          676572061049734D6F7573654F7665723D747275650E54726967676572496E76\n          65727365061149734D6F7573654F7665723D66616C73650000000654476C7970\n          6800095374796C654E616D65060A676C7970687374796C6505416C69676E0706\n          43656E7465720A53697A652E576964746805000000000000008003400B53697A\n          652E48656967687405000000000000008003401453697A652E506C6174666F72\n          6D44656661756C74080A496D616765496E6465780210000E5446696C6C524742\n          45666665637400095374796C654E616D65061346696C6C524742456666656374\n          315374796C6505436F6C6F720709784646443944394533000000005450463007\n          544C61796F757400095374796C654E616D650611627574746F6E7374796C655F\n          726574727905416C69676E070643656E7465720C50616464696E672E4C656674\n          0500000000000000C002400B50616464696E672E546F70050000000000000080\n          02400D50616464696E672E52696768740500000000000000C002400E50616464\n          696E672E426F74746F6D05000000000000008002400A53697A652E5769647468\n          0500000000000000F406400B53697A652E486569676874050000000000000098\n          04401453697A652E506C6174666F726D44656661756C74080756697369626C65\n          08085461624F72646572020E000A5452656374616E676C6500095374796C654E\n          616D65060F52656374616E676C65315374796C6505416C69676E0708436F6E74\n          656E74730A46696C6C2E436F6C6F720709784646333433353431074869745465\n          7374080A53697A652E57696474680500000000000000F406400B53697A652E48\n          656967687405000000000000009804401453697A652E506C6174666F726D4465\n          6661756C74080C5374726F6B652E436F6C6F7207097846463536353836390758\n          5261646975730500000000000000C00140075952616469757305000000000000\n          00C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65\n          0614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E05\n          00000000000AD7A3F83F0C50726F70657274794E616D65060A46696C6C2E436F\n          6C6F720A537461727456616C756507097846463334333534310953746F705661\n          6C756507097846463431343034450754726967676572061049734D6F7573654F\n          7665723D747275650E54726967676572496E7665727365061149734D6F757365\n          4F7665723D66616C73650000001654427574746F6E5374796C65546578744F62\n          6A65637400095374796C654E616D6506047465787405416C69676E0706436C69\n          656E74064C6F636B6564090A53697A652E57696474680500000000000000CA06\n          400B53697A652E4865696768740500000000000000B003401453697A652E506C\n          6174666F726D44656661756C7408165465787453657474696E67732E466F6E74\n          2E53697A650500000000000000E00240165465787453657474696E67732E466F\n          6E74436F6C6F720708636C615768697465155465787453657474696E67732E54\n          72696D6D696E670709436861726163746572155465787453657474696E67732E\n          576F72645772617008165465787453657474696E67732E486F727A416C69676E\n          07074C656164696E670D536861646F7756697369626C650808486F74436F6C6F\n          720708636C6157686974650C466F6375736564436F6C6F720708636C61576869\n          74650B4E6F726D616C436F6C6F720708636C6157686974650C50726573736564\n          436F6C6F720708636C615768697465000005545061746800095374796C654E61\n          6D65060A50617468315374796C6505416C69676E07044C65667409446174612E\n          506174680A0C04000056000000000000007E466F415A8BFF40010000003A2371\n          414DDBFF4002000000EBE27941282C01410200000038F87F41EB450941020000\n          00F5B97E419205124102000000EEEB7A41D6C52C4102000000B1BF6E419CA245\n          4102000000B6F35B41E10B59410200000052274941BC746C41020000002DB230\n          41BA6B79410200000070141641E4147E410200000091EDF640075F8141020000\n          00971CC0405DDC7E4102000000DA8F8F40F4FD724102000000917E71407F6A6D\n          410200000084BB4740A83566410200000053052340C1A85D41010000009582DA\n          3FCE196B4102000000B9DF893F492E75410200000000008027A60A6E41020000\n          000000802786C95F410100000000008027EBFF1F410100000096267F40EBFF1F\n          41020000008C159C40EBFF1F4102000000925CAA40CD3B314102000000DB3396\n          4048503B41010000003D9B7D40470347410200000074298C40F0164D41020000\n          00BC3F9B40FB3A52410200000008ACAB40AB3E564102000000A015D04046255F\n          41020000004D32F940560E624102000000678F1041C58F5E4102000000888524\n          41CB105B410200000098DD3641A85751410200000094F64441B4C84241020000\n          00F90F5341C13934410200000027315C41AF94214102000000780B5F4123840D\n          4102000000234A604187C4044102000000F16368414A5EFD40020000003A2371\n          414DDBFF40010000007E466F415A8BFF40030000007E466F415A8BFF40000000\n          001D383841321F503F020000007AA5434155C1943F02000000371A4E41D786CE\n          3F02000000F54A5741098A094001000000B8AF644152EDA73F0200000033C46E\n          41FF942E3F02000000000080419066903F0200000000008041F4370140010000\n          00000080411500C04001000000D34D40411500C04002000000B30C32411500C0\n          400200000010E92A4127889D40020000008BFD3441855F8940010000007AA540\n          414B1F64400200000088F43941CFBD4B40020000002C653241B81E3740020000\n          00302A2A41D10527400200000030F517413C6B034002000000DA660341008CEF\n          3F0200000033E1DE4094C1054002000000B2F4B640FDBC134002000000BB4492\n          408CA13A400200000007256C4005DD7440020000006EC033402A8C9740020000\n          00B83B0F400AD7BC4002000000F6D10340BAF7E44002000000E2AFFD3FF376F6\n          4002000000C6E1BC3FDB50014102000000A3C96D3F5A12004102000000569FC3\n          3EB1A7FD4002000000FE3FF33A2A74ED4002000000FB0CA33DDCF4DB40020000\n          00F180A23E0074A64002000000CD018A3FE275694002000000A53110404ED11B\n          400200000063625B4075599C3F02000000D09B9E40098BD23E020000001FD7D3\n          408596F53D02000000378904414A7F2FBE02000000B4F11F41A3DA913D020000\n          001D383841321F503F030000001D383841321F503F0A46696C6C2E436F6C6F72\n          07097846464439443945330748697454657374080D4D617267696E732E526967\n          68740500000000000000C001400A506F736974696F6E2E580500000000000000\n          C002400A506F736974696F6E2E5905000000000000008002400A53697A652E57\n          696474680500000000000000C002400B53697A652E4865696768740500000000\n          000000B003401453697A652E506C6174666F726D44656661756C74080B537472\n          6F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400000054\n          50463007544C61796F757400095374796C654E616D650611616E69696E646963\n          61746F727374796C6505416C69676E070643656E7465720756697369626C6508\n          085461624F726465720259001054536B416E696D61746564496D616765000953\n          74796C654E616D650604616E696D05416C69676E070643656E74657207536361\n          6C652E58050000000000CDCCCCFF3F075363616C652E59050000000000CDCCCC\n          FF3F12416E696D6174696F6E2E50726F67726573730500A8C64B378941A0FC3F\n          04446174610A580A00007B226E6D223A226C6F6164696E675F36222C22646464\n          223A302C2268223A3530302C2277223A3530302C226D657461223A7B2267223A\n          22406C6F7474696566696C65732F746F6F6C6B69742D6A7320302E32362E3122\n          7D2C226C6179657273223A5B7B227479223A342C226E6D223A22536861706520\n          4C617965722032222C227372223A312C227374223A302C226F70223A3330302C\n          226970223A302C226864223A66616C73652C22646464223A302C22626D223A30\n          2C226861734D61736B223A66616C73652C22616F223A302C226B73223A7B2261\n          223A7B2261223A302C226B223A5B302C302C305D2C226978223A317D2C227322\n          3A7B2261223A302C226B223A5B35302C35302C3130305D2C226978223A367D2C\n          22736B223A7B2261223A302C226B223A307D2C2270223A7B2261223A302C226B\n          223A5B3235302C3235302C305D2C226978223A327D2C2272223A7B2261223A31\n          2C226B223A5B7B226F223A7B2278223A302E3136372C2279223A302E3136377D\n          2C2269223A7B2278223A302E3833332C2279223A302E3833337D2C2273223A5B\n          305D2C2274223A307D2C7B2273223A5B3336305D2C2274223A36307D5D2C2269\n          78223A31307D2C227361223A7B2261223A302C226B223A307D2C226F223A7B22\n          61223A302C226B223A3130302C226978223A31317D7D2C226566223A5B5D2C22\n          736861706573223A5B7B227479223A226772222C22626D223A302C226864223A\n          66616C73652C226D6E223A224144424520566563746F722047726F7570222C22\n          6E6D223A22456C6C697073652031222C226978223A312C22636978223A322C22\n          6E70223A332C226974223A5B7B227479223A22656C222C22626D223A302C2268\n          64223A66616C73652C226D6E223A224144424520566563746F72205368617065\n          202D20456C6C69707365222C226E6D223A22456C6C6970736520506174682031\n          222C2264223A312C2270223A7B2261223A302C226B223A5B302C305D2C226978\n          223A337D2C2273223A7B2261223A302C226B223A5B3330302C3330305D2C2269\n          78223A327D7D2C7B227479223A227374222C22626D223A302C226864223A6661\n          6C73652C226D6E223A224144424520566563746F722047726170686963202D20\n          5374726F6B65222C226E6D223A225374726F6B652031222C226C63223A322C22\n          6C6A223A312C226D6C223A342C226F223A7B2261223A302C226B223A3130302C\n          226978223A347D2C2277223A7B2261223A302C226B223A35302C226978223A35\n          7D2C2263223A7B2261223A302C226B223A5B302E363632372C302E363734352C\n          302E363934315D2C226978223A337D7D2C7B227479223A227472222C2261223A\n          7B2261223A302C226B223A5B302C305D2C226978223A317D2C2273223A7B2261\n          223A302C226B223A5B3130302C3130305D2C226978223A337D2C22736B223A7B\n          2261223A302C226B223A302C226978223A347D2C2270223A7B2261223A302C22\n          6B223A5B302C305D2C226978223A327D2C2272223A7B2261223A302C226B223A\n          302C226978223A367D2C227361223A7B2261223A302C226B223A302C22697822\n          3A357D2C226F223A7B2261223A302C226B223A3130302C226978223A377D7D5D\n          7D2C7B227479223A22746D222C22626D223A302C226864223A66616C73652C22\n          6D6E223A224144424520566563746F722046696C746572202D205472696D222C\n          226E6D223A225472696D2050617468732031222C226978223A322C2265223A7B\n          2261223A312C226B223A5B7B226F223A7B2278223A302E3333332C2279223A30\n          7D2C2269223A7B2278223A302E3636372C2279223A317D2C2273223A5B315D2C\n          2274223A307D2C7B2273223A5B3130305D2C2274223A35307D5D2C226978223A\n          327D2C226F223A7B2261223A312C226B223A5B7B226F223A7B2278223A302E31\n          36372C2279223A302E3136377D2C2269223A7B2278223A302E3833332C227922\n          3A302E3833337D2C2273223A5B305D2C2274223A307D2C7B2273223A5B335D2C\n          2274223A36307D5D2C226978223A337D2C2273223A7B2261223A312C226B223A\n          5B7B226F223A7B2278223A302E3333332C2279223A307D2C2269223A7B227822\n          3A302E3636372C2279223A317D2C2273223A5B305D2C2274223A31307D2C7B22\n          73223A5B39395D2C2274223A36307D5D2C226978223A317D2C226D223A317D5D\n          2C22696E64223A317D2C7B227479223A342C226E6D223A225368617065204C61\n          7965722031222C227372223A312C227374223A302C226F70223A3330302C2269\n          70223A302C226864223A66616C73652C22646464223A302C22626D223A302C22\n          6861734D61736B223A66616C73652C22616F223A302C226B73223A7B2261223A\n          7B2261223A302C226B223A5B302C302C305D2C226978223A317D2C2273223A7B\n          2261223A302C226B223A5B35302C35302C3130305D2C226978223A367D2C2273\n          6B223A7B2261223A302C226B223A307D2C2270223A7B2261223A302C226B223A\n          5B3235302C3235302C305D2C226978223A327D2C2272223A7B2261223A302C22\n          6B223A302C226978223A31307D2C227361223A7B2261223A302C226B223A307D\n          2C226F223A7B2261223A302C226B223A33302C226978223A31317D7D2C226566\n          223A5B5D2C22736861706573223A5B7B227479223A226772222C22626D223A30\n          2C226864223A66616C73652C226D6E223A224144424520566563746F72204772\n          6F7570222C226E6D223A22456C6C697073652031222C226978223A312C226369\n          78223A322C226E70223A332C226974223A5B7B227479223A22656C222C22626D\n          223A302C226864223A66616C73652C226D6E223A224144424520566563746F72\n          205368617065202D20456C6C69707365222C226E6D223A22456C6C6970736520\n          506174682031222C2264223A312C2270223A7B2261223A302C226B223A5B302C\n          305D2C226978223A337D2C2273223A7B2261223A302C226B223A5B3330302C33\n          30305D2C226978223A327D7D2C7B227479223A227374222C22626D223A302C22\n          6864223A66616C73652C226D6E223A224144424520566563746F722047726170\n          686963202D205374726F6B65222C226E6D223A225374726F6B652031222C226C\n          63223A312C226C6A223A312C226D6C223A342C226F223A7B2261223A302C226B\n          223A3130302C226978223A347D2C2277223A7B2261223A302C226B223A35302C\n          226978223A357D2C2263223A7B2261223A302C226B223A5B302E393235352C30\n          2E393235352C302E393235355D2C226978223A337D7D2C7B227479223A227472\n          222C2261223A7B2261223A302C226B223A5B302C305D2C226978223A317D2C22\n          73223A7B2261223A302C226B223A5B3130302C3130305D2C226978223A337D2C\n          22736B223A7B2261223A302C226B223A302C226978223A347D2C2270223A7B22\n          61223A302C226B223A5B302C305D2C226978223A327D2C2272223A7B2261223A\n          302C226B223A302C226978223A367D2C227361223A7B2261223A302C226B223A\n          302C226978223A357D2C226F223A7B2261223A302C226B223A3130302C226978\n          223A377D7D5D7D5D2C22696E64223A327D5D2C2276223A22352E382E31222C22\n          6672223A33302C226F70223A36302C226970223A302C22617373657473223A5B\n          5D7D00000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506\n          03616E69084475726174696F6E050000000000CDCCCCFC3F0A53746172745661\n          6C756505000000000000000000000953746F7056616C75650500000000000000\n          0000000000005450463007544C61796F757400095374796C654E616D6506156C\n          697374626F786974656D7374796C655F66756E6305416C69676E070643656E74\n          65720C50616464696E672E4C65667405000000000000008001400B5061646469\n          6E672E546F7005000000000000008001400D50616464696E672E526967687405\n          000000000000008001400E50616464696E672E426F74746F6D05000000000000\n          008001400A53697A652E57696474680500000000000000C007400B53697A652E\n          4865696768740500000000000000C804401453697A652E506C6174666F726D44\n          656661756C74080756697369626C6508085461624F7264657202180B46697865\n          64486569676874021E000A5452656374616E676C6500095374796C654E616D65\n          060F6261636B67726F756E645F6F76657205416C69676E0708436F6E74656E74\n          730A46696C6C2E436F6C6F720709783030343738364646074869745465737408\n          0A53697A652E57696474680500000000000000C007400B53697A652E48656967\n          68740500000000000000C804401453697A652E506C6174666F726D4465666175\n          6C74080C5374726F6B652E436F6C6F7207097830303437383646460758526164\n          6975730500000000000000C0014007595261646975730500000000000000C001\n          40000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506046F\n          766572084475726174696F6E05000000000000000000000C50726F7065727479\n          4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709783030\n          3639364136440953746F7056616C756507097842343639364136440754726967\n          676572060F497353656C65637465643D747275650E54726967676572496E7665\n          7273650610497353656C65637465643D66616C73650000000654476C79706800\n          095374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C\n          65667405000000000000008000400B4D617267696E732E546F70050000000000\n          000080FF3F0D4D617267696E732E526967687405000000000000008000400E4D\n          617267696E732E426F74746F6D050000000000000080FF3F05416C69676E0704\n          4C6566740A506F736974696F6E2E5805000000000000008000400A506F736974\n          696F6E2E59050000000000000080FF3F0A53697A652E57696474680500000000\n          0000008003400B53697A652E4865696768740500000000000000880440145369\n          7A652E506C6174666F726D44656661756C740800001654416374697665537479\n          6C65546578744F626A65637400095374796C654E616D65060664657461696C05\n          416C69676E0706426F74746F6D0C4D617267696E732E4C656674050000000000\n          0000C001400B4D617267696E732E546F70050000000000000080FF3F0D4D6172\n          67696E732E52696768740500000000000000C001400E4D617267696E732E426F\n          74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000\n          0000A002400A506F736974696F6E2E590500000000000000B003400A53697A65\n          2E57696474680500000000000000B607400B53697A652E486569676874050000\n          0000000000B803401453697A652E506C6174666F726D44656661756C74080454\n          657874060454657874165465787453657474696E67732E466F6E742E53697A65\n          0500000000000000E00240165465787453657474696E67732E466F6E74436F6C\n          6F720709783634464646464646155465787453657474696E67732E576F726457\n          72617008165465787453657474696E67732E486F727A416C69676E07074C6561\n          64696E670D536861646F7756697369626C65080D416374697665547269676765\n          72070853656C65637465640B416374697665436F6C6F720708636C6157686974\n          6500000954436865636B426F7800095374796C654E616D650605636865636B05\n          416C69676E07044C6566740843616E466F637573081244697361626C65466F63\n          7573456666656374090C4D617267696E732E4C65667405000000000000008001\n          400A506F736974696F6E2E5805000000000000008001400A53697A652E576964\n          74680500000000000000A003400B53697A652E48656967687405000000000000\n          009004401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508000007544C61796F757400095374796C654E616D65060D616363657373\n          6F72796D6F726505416C69676E07094D6F737452696768740A53697A652E5769\n          6474680500000000000000B003400B53697A652E486569676874050000000000\n          0000B004401453697A652E506C6174666F726D44656661756C74080756697369\n          626C65080012544163746976655374796C654F626A6563740005416C69676E07\n          0643656E7465720C536F757263654C6F6F6B7570061A57696E646F7773203130\n          204D6F6465726E7374796C652E706E670A53697A652E57696474680500000000\n          000000C002400B53697A652E4865696768740500000000000000800340145369\n          7A652E506C6174666F726D44656661756C740808577261704D6F646507064365\n          6E7465720D41637469766554726967676572070853656C65637465640A416374\n          6976654C696E6B0E010F536F75726365526563742E4C65667405000000000000\n          008B06400E536F75726365526563742E546F700500000000000000D405401053\n          6F75726365526563742E5269676874050000000000000097064011536F757263\n          65526563742E426F74746F6D0500000000000000F405400001055363616C6505\n          00000000000000C0FF3F0F536F75726365526563742E4C656674050000000000\n          0000D006400E536F75726365526563742E546F7005000000000000009F064010\n          536F75726365526563742E52696768740500000000000000E2064011536F7572\n          6365526563742E426F74746F6D0500000000000000B706400001055363616C65\n          05000000000000008000400F536F75726365526563742E4C6566740500000000\n          0000008B07400E536F75726365526563742E546F700500000000000000D40640\n          10536F75726365526563742E5269676874050000000000000097074011536F75\n          726365526563742E426F74746F6D0500000000000000F406400001055363616C\n          650500000000000000C000400F536F75726365526563742E4C65667405000000\n          00000080D007400E536F75726365526563742E546F7005000000000000009F07\n          4010536F75726365526563742E52696768740500000000000080E2074011536F\n          75726365526563742E426F74746F6D0500000000000000B7074000000A536F75\n          7263654C696E6B0E010F536F75726365526563742E4C65667405000000000000\n          008B06400E536F75726365526563742E546F700500000000000000D405401053\n          6F75726365526563742E5269676874050000000000000097064011536F757263\n          65526563742E426F74746F6D0500000000000000F405400001055363616C6505\n          00000000000000C0FF3F0F536F75726365526563742E4C656674050000000000\n          0000D006400E536F75726365526563742E546F7005000000000000009F064010\n          536F75726365526563742E52696768740500000000000000E2064011536F7572\n          6365526563742E426F74746F6D0500000000000000B706400001055363616C65\n          05000000000000008000400F536F75726365526563742E4C6566740500000000\n          0000008B07400E536F75726365526563742E546F700500000000000000D40640\n          10536F75726365526563742E5269676874050000000000000097074011536F75\n          726365526563742E426F74746F6D0500000000000000F406400001055363616C\n          650500000000000000C000400F536F75726365526563742E4C65667405000000\n          00000080D007400E536F75726365526563742E546F7005000000000000009F07\n          4010536F75726365526563742E52696768740500000000000080E2074011536F\n          75726365526563742E426F74746F6D0500000000000000B70740000013546F75\n          6368416E696D6174696F6E2E4C696E6B0E0000000007544C61796F7574000953\n          74796C654E616D6506126163636573736F7279636865636B6D61726B05416C69\n          676E07094D6F737452696768740A53697A652E57696474680500000000000000\n          B003400B53697A652E4865696768740500000000000000B004401453697A652E\n          506C6174666F726D44656661756C74080756697369626C650800125441637469\n          76655374796C654F626A6563740005416C69676E070643656E7465720C536F75\n          7263654C6F6F6B7570061A57696E646F7773203130204D6F6465726E7374796C\n          652E706E670A53697A652E576964746805000000000000009003400B53697A65\n          2E48656967687405000000000000009003401453697A652E506C6174666F726D\n          44656661756C740808577261704D6F6465070643656E7465720D416374697665\n          54726967676572070853656C65637465640A4163746976654C696E6B0E010F53\n          6F75726365526563742E4C65667405000000000000009B06400E536F75726365\n          526563742E546F700500000000000000D2054010536F75726365526563742E52\n          696768740500000000000000AD064011536F75726365526563742E426F74746F\n          6D0500000000000000F605400001055363616C650500000000000000C0FF3F0F\n          536F75726365526563742E4C6566740500000000000000E806400E536F757263\n          65526563742E546F7005000000000000009D064010536F75726365526563742E\n          5269676874050000000000008081074011536F75726365526563742E426F7474\n          6F6D0500000000000000B806400001055363616C650500000000000000800040\n          0F536F75726365526563742E4C65667405000000000000009B07400E536F7572\n          6365526563742E546F700500000000000000D2064010536F7572636552656374\n          2E52696768740500000000000000AD074011536F75726365526563742E426F74\n          746F6D0500000000000000F606400001055363616C650500000000000000C000\n          400F536F75726365526563742E4C6566740500000000000080E807400E536F75\n          726365526563742E546F7005000000000000809D074010536F75726365526563\n          742E526967687405000000000000C081084011536F75726365526563742E426F\n          74746F6D0500000000000080B8074000000A536F757263654C696E6B0E010F53\n          6F75726365526563742E4C65667405000000000000009B06400E536F75726365\n          526563742E546F700500000000000000D2054010536F75726365526563742E52\n          696768740500000000000000AD064011536F75726365526563742E426F74746F\n          6D0500000000000000F605400001055363616C650500000000000000C0FF3F0F\n          536F75726365526563742E4C6566740500000000000000E806400E536F757263\n          65526563742E546F7005000000000000009D064010536F75726365526563742E\n          5269676874050000000000008081074011536F75726365526563742E426F7474\n          6F6D0500000000000000B806400001055363616C650500000000000000800040\n          0F536F75726365526563742E4C65667405000000000000009B07400E536F7572\n          6365526563742E546F700500000000000000D2064010536F7572636552656374\n          2E52696768740500000000000000AD074011536F75726365526563742E426F74\n          746F6D0500000000000000F606400001055363616C650500000000000000C000\n          400F536F75726365526563742E4C6566740500000000000080E807400E536F75\n          726365526563742E546F7005000000000000809D074010536F75726365526563\n          742E526967687405000000000000C081084011536F75726365526563742E426F\n          74746F6D0500000000000080B80740000013546F756368416E696D6174696F6E\n          2E4C696E6B0E0000000007544C61796F757400095374796C654E616D65060F61\n          63636573736F727964657461696C05416C69676E07094D6F737452696768740A\n          53697A652E57696474680500000000000000B003400B53697A652E4865696768\n          740500000000000000B004401453697A652E506C6174666F726D44656661756C\n          74080756697369626C65080012544163746976655374796C654F626A65637400\n          05416C69676E070643656E7465720C536F757263654C6F6F6B7570061A57696E\n          646F7773203130204D6F6465726E7374796C652E706E670A53697A652E576964\n          746805000000000000008003400B53697A652E48656967687405000000000000\n          008003401453697A652E506C6174666F726D44656661756C740808577261704D\n          6F6465070643656E7465720D41637469766554726967676572070853656C6563\n          7465640A4163746976654C696E6B0E010F536F75726365526563742E4C656674\n          05000000000000808707400E536F75726365526563742E546F70050000000000\n          0000D4054010536F75726365526563742E526967687405000000000000808F07\n          4011536F75726365526563742E426F74746F6D0500000000000000F405400001\n          055363616C650500000000000000C0FF3F0F536F75726365526563742E4C6566\n          740500000000000000CB07400E536F75726365526563742E546F700500000000\n          0000009F064010536F75726365526563742E52696768740500000000000000D7\n          074011536F75726365526563742E426F74746F6D0500000000000000B7064000\n          01055363616C6505000000000000008000400F536F75726365526563742E4C65\n          667405000000000000808708400E536F75726365526563742E546F7005000000\n          00000000D4064010536F75726365526563742E52696768740500000000000080\n          8F084011536F75726365526563742E426F74746F6D0500000000000000F40640\n          0001055363616C650500000000000000C000400F536F75726365526563742E4C\n          6566740500000000000040CB08400E536F75726365526563742E546F70050000\n          00000000009F074010536F75726365526563742E526967687405000000000000\n          40D7084011536F75726365526563742E426F74746F6D0500000000000000B707\n          4000000A536F757263654C696E6B0E010F536F75726365526563742E4C656674\n          05000000000000808707400E536F75726365526563742E546F70050000000000\n          0000D4054010536F75726365526563742E526967687405000000000000808F07\n          4011536F75726365526563742E426F74746F6D0500000000000000F405400001\n          055363616C650500000000000000C0FF3F0F536F75726365526563742E4C6566\n          740500000000000000CB07400E536F75726365526563742E546F700500000000\n          0000009F064010536F75726365526563742E52696768740500000000000000D7\n          074011536F75726365526563742E426F74746F6D0500000000000000B7064000\n          01055363616C6505000000000000008000400F536F75726365526563742E4C65\n          667405000000000000808708400E536F75726365526563742E546F7005000000\n          00000000D4064010536F75726365526563742E52696768740500000000000080\n          8F084011536F75726365526563742E426F74746F6D0500000000000000F40640\n          0001055363616C650500000000000000C000400F536F75726365526563742E4C\n          6566740500000000000040CB08400E536F75726365526563742E546F70050000\n          00000000009F074010536F75726365526563742E526967687405000000000000\n          40D7084011536F75726365526563742E426F74746F6D0500000000000000B707\n          40000013546F756368416E696D6174696F6E2E4C696E6B0E0000000016544163\n          746976655374796C65546578744F626A65637400095374796C654E616D650604\n          7465787405416C69676E0706436C69656E740C4D617267696E732E4C65667405\n          00000000000000C000400B4D617267696E732E546F70050000000000000080FF\n          3F0D4D617267696E732E52696768740500000000000000C000400E4D61726769\n          6E732E426F74746F6D050000000000000080FF3F0A53697A652E576964746805\n          00000000000000B907400B53697A652E4865696768740500000000000000F002\n          401453697A652E506C6174666F726D44656661756C7408165465787453657474\n          696E67732E466F6E742E53697A65050000000000000090034016546578745365\n          7474696E67732E466F6E74436F6C6F7207097839364646464646461554657874\n          53657474696E67732E576F72645772617008165465787453657474696E67732E\n          486F727A416C69676E07074C656164696E670D536861646F7756697369626C65\n          080D41637469766554726967676572070853656C65637465640B416374697665\n          436F6C6F720708636C6157686974650000005450463007544C61796F75740009\n          5374796C654E616D6506177472616E73706172656E746C697374626F78737479\n          6C6505416C69676E070643656E7465720C436C69704368696C6472656E090A53\n          697A652E576964746805000000000000208E07400B53697A652E486569676874\n          0500000000000080D206401453697A652E506C6174666F726D44656661756C74\n          080756697369626C6508085461624F726465720249000C5442727573684F626A\n          65637400095374796C654E616D650618416C7465726E6174696E67526F774261\n          636B67726F756E640B42727573682E436F6C6F72070978464646334633463300\n          0007544C61796F757400095374796C654E616D65060A6261636B67726F756E64\n          05416C69676E0708436F6E74656E74730A53697A652E57696474680500000000\n          0000208E07400B53697A652E4865696768740500000000000080D20640145369\n          7A652E506C6174666F726D44656661756C7408085461624F7264657202000007\n          544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967\n          6E0706436C69656E740C436C69704368696C6472656E090A53697A652E576964\n          746805000000000000208A07400B53697A652E48656967687405000000000000\n          80CA06401453697A652E506C6174666F726D44656661756C7408085461624F72\n          646572020000000A545363726F6C6C42617200095374796C654E616D65060A76\n          7363726F6C6C62617205416C69676E070552696768740B536D616C6C4368616E\n          676505000000000000000000000B4F7269656E746174696F6E07085665727469\n          63616C0A506F736974696F6E2E5805000000000000208A07400A53697A652E57\n          6964746805000000000000008002400B53697A652E4865696768740500000000\n          000080CA06401453697A652E506C6174666F726D44656661756C740808546162\n          4F72646572020100000A545363726F6C6C42617200095374796C654E616D6506\n          0A687363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C43\n          68616E676505000000000000000000000B4F7269656E746174696F6E070A486F\n          72697A6F6E74616C0A506F736974696F6E2E590500000000000080CA06400A53\n          697A652E576964746805000000000000208E07400B53697A652E486569676874\n          05000000000000008002401453697A652E506C6174666F726D44656661756C74\n          08085461624F726465720202000007544C61796F75740005416C69676E070643\n          6C69656E740A53697A652E576964746805000000000000208A07400B53697A65\n          2E4865696768740500000000000080CA06401453697A652E506C6174666F726D\n          44656661756C7408085461624F726465720203000F54536D616C6C5363726F6C\n          6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C626172\n          05416C69676E070552696768740B536D616C6C4368616E676505000000000000\n          000000000B4F7269656E746174696F6E0708566572746963616C0C4D61726769\n          6E732E4C65667405000000000000008000400A53697A652E5769647468050000\n          00000000008002400B53697A652E486569676874050000000000000080024014\n          53697A652E506C6174666F726D44656661756C74080756697369626C65080000\n          0F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D\n          616C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C\n          4368616E676505000000000000000000000B4F7269656E746174696F6E070A48\n          6F72697A6F6E74616C0B4D617267696E732E546F700500000000000000800040\n          0A53697A652E576964746805000000000000009606400B53697A652E48656967\n          687405000000000000008002401453697A652E506C6174666F726D4465666175\n          6C74080756697369626C650800000007544C61796F757400095374796C654E61\n          6D65060668656164657205416C69676E0703546F700A53697A652E5769647468\n          0500000000000000C804400B53697A652E4865696768740500000000000000C8\n          04401453697A652E506C6174666F726D44656661756C74080756697369626C65\n          08085461624F726465720204000007544C61796F757400095374796C654E616D\n          650606666F6F74657205416C69676E0706426F74746F6D0A53697A652E576964\n          74680500000000000000C804400B53697A652E48656967687405000000000000\n          00C804401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508085461624F72646572020500000A5452656374616E676C650009537479\n          6C654E616D65060973656C656374696F6E0946696C6C2E4B696E6407044E6F6E\n          650748697454657374080A53697A652E57696474680500000000000000C80440\n          0B53697A652E4865696768740500000000000000C804401453697A652E506C61\n          74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978333246\n          464646464607585261646975730500000000000000C001400759526164697573\n          0500000000000000C00140000000005450463007544C61796F75740009537479\n          6C654E616D650614627574746F6E7374796C655F636F6E74696E756505416C69\n          676E070643656E7465720C50616464696E672E4C6566740500000000000000C0\n          02400B50616464696E672E546F7005000000000000008002400D50616464696E\n          672E52696768740500000000000000C002400E50616464696E672E426F74746F\n          6D05000000000000008002400A53697A652E57696474680500000000000000F4\n          06400B53697A652E48656967687405000000000000009804401453697A652E50\n          6C6174666F726D44656661756C74080756697369626C6508085461624F726465\n          72020B000A5452656374616E676C6500095374796C654E616D65060F52656374\n          616E676C65315374796C6505416C69676E0708436F6E74656E74730A46696C6C\n          2E436F6C6F7207097846463130413337460748697454657374080A53697A652E\n          57696474680500000000000000F406400B53697A652E48656967687405000000\n          000000009804401453697A652E506C6174666F726D44656661756C74080B5374\n          726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C0\n          014007595261646975730500000000000000C00140000F54436F6C6F72416E69\n          6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F\n          6E315374796C65084475726174696F6E0500000000000AD7A3F83F0C50726F70\n          657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507\n          097846463130413337460953746F7056616C7565070978464630384241384507\n          54726967676572061049734D6F7573654F7665723D747275650E547269676765\n          72496E7665727365061149734D6F7573654F7665723D66616C73650000001654\n          427574746F6E5374796C65546578744F626A65637400095374796C654E616D65\n          06047465787405416C69676E0706436C69656E74064C6F636B6564090A53697A\n          652E57696474680500000000000000CA06400B53697A652E4865696768740500\n          000000000000B003401453697A652E506C6174666F726D44656661756C740816\n          5465787453657474696E67732E466F6E742E53697A650500000000000000E002\n          40165465787453657474696E67732E466F6E74436F6C6F720708636C61576869\n          7465155465787453657474696E67732E5472696D6D696E670709436861726163\n          746572155465787453657474696E67732E576F72645772617008165465787453\n          657474696E67732E486F727A416C69676E07074C656164696E670D536861646F\n          7756697369626C650808486F74436F6C6F720708636C6157686974650C466F63\n          75736564436F6C6F720708636C6157686974650B4E6F726D616C436F6C6F7207\n          08636C6157686974650C50726573736564436F6C6F720708636C615768697465\n          000005545061746800095374796C654E616D65060A50617468315374796C6505\n          416C69676E07044C65667409446174612E506174680AD8010000270000000000\n          0000D34D2E415A642340020000003A582A41DFCA03400200000016BB20419307\n          EE3F02000000B8D418412EDA064002000000CDBE1541CA090D4002000000143E\n          1341AC0C1740020000002DB211415964234001000000B4C806408B6C84410200\n          000068EFED3F116088410200000059C503405D2E8D4102000000876123407D28\n          8F4102000000BBB43140DA0D904102000000B3324240FC3E9041020000009899\n          51402DB28F41010000006666044195438441020000000F450B41124883410200\n          000004011041002480410200000000001041D122794101000000000010410000\n          30410200000000001041D729274102000000D829174100002041020000000000\n          2041000020410200000028D62841000020410200000000003041D72927410200\n          000000003041000030410100000000003041D1227941020000001CFF2F412424\n          8041020000002CBB34412C48834102000000DF993B41A043844101000000F0CC\n          85412BB08F4102000000500C8A4189E7904102000000397A8E4175728E410200\n          000097B18F4114338A4102000000A23E90418646884102000000EE0D9041FE36\n          86410200000019298F41966C84410100000032522E41B064234003000000D34D\n          2E415A64234003000000D34D2E415A6423400A46696C6C2E436F6C6F72070978\n          46464439443945330748697454657374080D4D617267696E732E526967687405\n          00000000000000C001400A506F736974696F6E2E580500000000000000C00240\n          0A506F736974696F6E2E5905000000000000008002400D526F746174696F6E41\n          6E676C650500000000000000B405400A53697A652E5769647468050000000000\n          0000C002400B53697A652E4865696768740500000000000000B003401453697A\n          652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704\n          4E6F6E6508577261704D6F646507034669740000005450463007544C61796F75\n          7400095374796C654E616D65060B627574746F6E7374796C6505416C69676E07\n          0643656E7465720C50616464696E672E4C6566740500000000000000C002400B\n          50616464696E672E546F7005000000000000008002400D50616464696E672E52\n          696768740500000000000000C002400E50616464696E672E426F74746F6D0500\n          0000000000008002400A53697A652E57696474680500000000000000F406400B\n          53697A652E48656967687405000000000000009804401453697A652E506C6174\n          666F726D44656661756C74080756697369626C6508085461624F72646572020D\n          000A5452656374616E676C6500095374796C654E616D65060F52656374616E67\n          6C65315374796C6505416C69676E0708436F6E74656E74730A46696C6C2E436F\n          6C6F7207097846463334333534310748697454657374080A53697A652E576964\n          74680500000000000000F406400B53697A652E48656967687405000000000000\n          009804401453697A652E506C6174666F726D44656661756C74080C5374726F6B\n          652E436F6C6F7207097846463536353836390758526164697573050000000000\n          0000C0014007595261646975730500000000000000C00140000F54436F6C6F72\n          416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61\n          74696F6E315374796C65084475726174696F6E0500000000000AD7A3F83F0C50\n          726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C\n          756507097846463334333534310953746F7056616C7565070978464634313430\n          34450754726967676572061049734D6F7573654F7665723D747275650E547269\n          67676572496E7665727365061149734D6F7573654F7665723D66616C73650000\n          001654427574746F6E5374796C65546578744F626A65637400095374796C654E\n          616D6506047465787405416C69676E0706436C69656E74064C6F636B6564090A\n          53697A652E57696474680500000000000000DC06400B53697A652E4865696768\n          740500000000000000B003401453697A652E506C6174666F726D44656661756C\n          7408165465787453657474696E67732E466F6E742E53697A6505000000000000\n          00E00240165465787453657474696E67732E466F6E74436F6C6F720708636C61\n          5768697465155465787453657474696E67732E5472696D6D696E670709436861\n          726163746572155465787453657474696E67732E576F72645772617008165465\n          787453657474696E67732E486F727A416C69676E07074C656164696E670D5368\n          61646F7756697369626C650808486F74436F6C6F720708636C6157686974650C\n          466F6375736564436F6C6F720708636C6157686974650B4E6F726D616C436F6C\n          6F720708636C6157686974650C50726573736564436F6C6F720708636C615768\n          69746500000654476C79706800095374796C654E616D650605676C7970680D4D\n          617267696E732E52696768740500000000000000C0014005416C69676E07044C\n          6566740A506F736974696F6E2E580500000000000000C002400A506F73697469\n          6F6E2E5905000000000000008002400A53697A652E5769647468050000000000\n          00008003400B53697A652E4865696768740500000000000000B003401453697A\n          652E506C6174666F726D44656661756C74080000005450463007544C61796F75\n          7400095374796C654E616D650619627574746F6E7374796C655F696D706F7274\n          5F6578706F727405416C69676E070643656E7465720C50616464696E672E4C65\n          66740500000000000000C002400B50616464696E672E546F7005000000000000\n          008002400D50616464696E672E52696768740500000000000000C002400E5061\n          6464696E672E426F74746F6D05000000000000008002400A53697A652E576964\n          74680500000000000000F406400B53697A652E48656967687405000000000000\n          009804401453697A652E506C6174666F726D44656661756C7408075669736962\n          6C6508085461624F72646572020C000A5452656374616E676C6500095374796C\n          654E616D65060F52656374616E676C65315374796C6505416C69676E0708436F\n          6E74656E74730A46696C6C2E436F6C6F72070978464633343335343107486974\n          54657374080A53697A652E57696474680500000000000000F406400B53697A65\n          2E48656967687405000000000000009804401453697A652E506C6174666F726D\n          44656661756C74080C5374726F6B652E436F6C6F720709784646353635383639\n          07585261646975730500000000000000C0014007595261646975730500000000\n          000000C00140000F54436F6C6F72416E696D6174696F6E00095374796C654E61\n          6D650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F\n          6E0500000000000AD7A3F83F0C50726F70657274794E616D65060A46696C6C2E\n          436F6C6F720A537461727456616C756507097846463334333534310953746F70\n          56616C756507097846463431343034450754726967676572061049734D6F7573\n          654F7665723D747275650E54726967676572496E7665727365061149734D6F75\n          73654F7665723D66616C73650000001654427574746F6E5374796C6554657874\n          4F626A65637400095374796C654E616D6506047465787405416C69676E070643\n          6C69656E74064C6F636B6564090A53697A652E57696474680500000000000000\n          C606400B53697A652E4865696768740500000000000000B003401453697A652E\n          506C6174666F726D44656661756C7408165465787453657474696E67732E466F\n          6E742E53697A650500000000000000E00240165465787453657474696E67732E\n          466F6E74436F6C6F720708636C615768697465155465787453657474696E6773\n          2E5472696D6D696E670709436861726163746572155465787453657474696E67\n          732E576F72645772617008165465787453657474696E67732E486F727A416C69\n          676E07074C656164696E670D536861646F7756697369626C650808486F74436F\n          6C6F720708636C6157686974650C466F6375736564436F6C6F720708636C6157\n          686974650B4E6F726D616C436F6C6F720708636C6157686974650C5072657373\n          6564436F6C6F720708636C61576869746500000654476C79706800095374796C\n          654E616D650605676C7970680D4D617267696E732E5269676874050000000000\n          0000C0014005416C69676E07044C6566740A506F736974696F6E2E5805000000\n          00000000C002400A506F736974696F6E2E5905000000000000008002400A5369\n          7A652E576964746805000000000000008003400B53697A652E48656967687405\n          00000000000000B003401453697A652E506C6174666F726D44656661756C7408\n          000005545061746800095374796C654E616D65060A50617468315374796C6505\n          416C69676E07044C65667409446174612E506174680AAC0000000E0000000000\n          000000006041CCFFCF41010000000000A040E6FF0B420100000000006041E6FF\n          2F42000000000000A04080080C42010000000000B44180080C42000000000000\n          0842000090410100000000002C420000D8410100000000000842000010420000\n          000000002C423411D841010000000000CC413411D84100000000000090400000\n          C04101000000000090400000F0400100000000002E420000F040010000000000\n          2E42000070410946696C6C2E4B696E6407044E6F6E650748697454657374080D\n          4D617267696E732E52696768740500000000000000C001400A506F736974696F\n          6E2E580500000000000000C002400A506F736974696F6E2E5905000000000000\n          008002400D526F746174696F6E416E676C650500000000000000B405400A5369\n          7A652E576964746805000000000000008003400B53697A652E48656967687405\n          00000000000000B003401453697A652E506C6174666F726D44656661756C7408\n          0C5374726F6B652E436F6C6F720709784646443944394533105374726F6B652E\n          546869636B6E6573730500000000003333B3FF3F08577261704D6F6465070346\n          69740000005450463007544C61796F757400095374796C654E616D6506137261\n          64696F627574746F6E7374796C655F6D6405416C69676E070643656E7465720A\n          53697A652E57696474680500000000000000F005400B53697A652E4865696768\n          740500000000000000A003401453697A652E506C6174666F726D44656661756C\n          74080756697369626C6508085461624F72646572022F0007544C61796F757400\n          05416C69676E07044C6566740A53697A652E57696474680500000000000000A0\n          03400B53697A652E4865696768740500000000000000A003401453697A652E50\n          6C6174666F726D44656661756C7408000754436972636C6500095374796C654E\n          616D65060A6261636B67726F756E6405416C69676E070643656E746572094669\n          6C6C2E4B696E6407044E6F6E650748697454657374080C50616464696E672E4C\n          6566740500000000000000A001400B50616464696E672E546F70050000000000\n          0000A001400D50616464696E672E52696768740500000000000000A001400E50\n          616464696E672E426F74746F6D0500000000000000A001400A53697A652E5769\n          6474680500000000000000A003400B53697A652E486569676874050000000000\n          0000A003401453697A652E506C6174666F726D44656661756C74080C5374726F\n          6B652E436F6C6F720709784646333433353431105374726F6B652E546869636B\n          6E6573730500000000000000800040000754436972636C6500095374796C654E\n          616D650605636865636B05416C69676E0706436C69656E740A46696C6C2E436F\n          6C6F720709784646414341434245074869745465737408074F70616369747905\n          000000000000000000000A53697A652E57696474680500000000000000A00240\n          0B53697A652E4865696768740500000000000000A002401453697A652E506C61\n          74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500\n          0F54466C6F6174416E696D6174696F6E00095374796C654E616D6506076F7061\n          63697479084475726174696F6E050000000000CDCCCCFC3F0C50726F70657274\n          794E616D6506074F7061636974790A537461727456616C756505000000000000\n          000000000953746F7056616C7565050000000000000080FF3F07547269676765\n          72060E4973436865636B65643D747275650E54726967676572496E7665727365\n          060F4973436865636B65643D66616C73650000000F54436F6C6F72416E696D61\n          74696F6E00095374796C654E616D6506067374726F6B65084475726174696F6E\n          050000000000CDCCCCFC3F0C50726F70657274794E616D65060C5374726F6B65\n          2E436F6C6F720A537461727456616C756507097846463334333534310953746F\n          7056616C756507097846464143414342450754726967676572060E4973436865\n          636B65643D747275650E54726967676572496E7665727365060F497343686563\n          6B65643D66616C7365000000001654427574746F6E5374796C65546578744F62\n          6A65637400095374796C654E616D6506047465787405416C69676E0706436C69\n          656E74064C6F636B6564090C4D617267696E732E4C6566740500000000000000\n          A002400A53697A652E57696474680500000000000000B405400B53697A652E48\n          65696768740500000000000000A003401453697A652E506C6174666F726D4465\n          6661756C7408185465787453657474696E67732E466F6E742E46616D696C7906\n          06526F626F746F165465787453657474696E67732E466F6E74436F6C6F720708\n          636C6157686974650D536861646F7756697369626C650808486F74436F6C6F72\n          0708636C6157686974650C466F6375736564436F6C6F720708636C6157686974\n          650B4E6F726D616C436F6C6F720708636C6157686974650C5072657373656443\n          6F6C6F720708636C6157686974650000005450463007544C61796F7574000953\n          74796C654E616D650615627574746F6E7374796C655F636C6561726D696E6905\n          416C69676E070643656E7465720A53697A652E57696474680500000000000000\n          8004400B53697A652E48656967687405000000000000008004401453697A652E\n          506C6174666F726D44656661756C74080756697369626C6508085461624F7264\n          65720208000A5452656374616E676C6500095374796C654E616D65060F526563\n          74616E676C65315374796C6505416C69676E0708436F6E74656E74730A46696C\n          6C2E436F6C6F7207097830303230323132330748697454657374080A53697A65\n          2E576964746805000000000000008004400B53697A652E486569676874050000\n          00000000008004401453697A652E506C6174666F726D44656661756C74080B53\n          74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000\n          C0014007595261646975730500000000000000C00140000F54436F6C6F72416E\n          696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469\n          6F6E315374796C65084475726174696F6E0500000000006F1283F53F0C50726F\n          70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565\n          07097830303230323132330953746F7056616C75650709784646323032313233\n          0754726967676572061049734D6F7573654F7665723D747275650E5472696767\n          6572496E7665727365061149734D6F7573654F7665723D66616C736500000006\n          54476C79706800095374796C654E616D65060A676C7970687374796C650C4D61\n          7267696E732E4C65667405000000000000008000400B4D617267696E732E546F\n          7005000000000000008000400D4D617267696E732E5269676874050000000000\n          00008000400E4D617267696E732E426F74746F6D050000000000000080004005\n          416C69676E070643656E7465720A53697A652E57696474680500000000000000\n          C003400B53697A652E4865696768740500000000000000C003401453697A652E\n          506C6174666F726D44656661756C74080A496D616765496E6465780202000E54\n          46696C6C52474245666665637400095374796C654E616D65061346696C6C5247\n          42456666656374315374796C6505436F6C6F7207097846464439443945330000\n          0000545046300A5452656374616E676C6500095374796C654E616D65060F6261\n          636B67726F756E647374796C6505416C69676E070643656E7465720A46696C6C\n          2E436F6C6F7207097846463230323132330A53697A652E576964746805000000\n          00000000C804400B53697A652E4865696768740500000000000000C804401453\n          697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64\n          07044E6F6E650756697369626C65080000}\n      end\n      item\n        Platform = 'iOS'\n        ResourcesBin = {\n          464D585F5354594C4520322E3501060F6D656D6F7374796C655F636C65617203\n          8807060E6D656D6F7374796C655F636F646503E30806106D656D6F7374796C65\n          5F6E6F726D616C03300A06176C65667473656C656374696F6E706F696E747374\n          796C6503C5010618726967687473656C656374696F6E706F696E747374796C65\n          039B01005450463007544C61796F757400095374796C654E616D65060F6D656D\n          6F7374796C655F636C65617205416C69676E070643656E7465720A53697A652E\n          57696474680500000000000000F406400B53697A652E48656967687405000000\n          000000009908401453697A652E506C6174666F726D44656661756C7408075669\n          7369626C6508085461624F726465720228000C5442727573684F626A65637400\n          095374796C654E616D65060A666F726567726F756E640B42727573682E436F6C\n          6F720708636C61426C61636B00000C5442727573684F626A6563740009537479\n          6C654E616D65060973656C656374696F6E0B42727573682E436F6C6F72070978\n          363431463230323700000B54466F6E744F626A65637400095374796C654E616D\n          650604666F6E74000007544C61796F757400095374796C654E616D650607636F\n          6E74656E7405416C69676E0706436C69656E740C4D617267696E732E4C656674\n          0500000000000000A001400D4D617267696E732E526967687405000000000000\n          00A001400A53697A652E57696474680500000000000000E206400B53697A652E\n          48656967687405000000000000009708401453697A652E506C6174666F726D44\n          656661756C7408085461624F72646572020000000A545363726F6C6C42617200\n          095374796C654E616D65060A767363726F6C6C62617205416C69676E07055269\n          67687406437572736F72070763724172726F770B536D616C6C4368616E676505\n          000000000000000000000B4F7269656E746174696F6E0708566572746963616C\n          0A506F736974696F6E2E580500000000000000EC06400A53697A652E57696474\n          6805000000000000008002400B53697A652E4865696768740500000000000000\n          9708401453697A652E506C6174666F726D44656661756C7408085461624F7264\n          6572020100000A545363726F6C6C42617200095374796C654E616D65060A6873\n          63726F6C6C62617205416C69676E0706426F74746F6D06437572736F72070763\n          724172726F770B536D616C6C4368616E676505000000000000000000000B4F72\n          69656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E59\n          05000000000000009708400A53697A652E57696474680500000000000000F406\n          400B53697A652E48656967687405000000000000008002401453697A652E506C\n          6174666F726D44656661756C7408085461624F726465720202000007544C6179\n          6F75740005416C69676E0706436C69656E740A53697A652E5769647468050000\n          0000000000EC06400B53697A652E486569676874050000000000000097084014\n          53697A652E506C6174666F726D44656661756C7408085461624F726465720203\n          000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F7673\n          6D616C6C7363726F6C6C62617205416C69676E0705526967687406437572736F\n          72070763724172726F770B536D616C6C4368616E676505000000000000000000\n          000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E\n          4C65667405000000000000008000400A53697A652E5769647468050000000000\n          00008002400B53697A652E48656967687405000000000000008002401453697A\n          652E506C6174666F726D44656661756C74080756697369626C650800000F5453\n          6D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C\n          7363726F6C6C62617205416C69676E0706426F74746F6D06437572736F720707\n          63724172726F770B536D616C6C4368616E676505000000000000000000000B4F\n          7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E54\n          6F7005000000000000008000400A53697A652E57696474680500000000000000\n          9606400B53697A652E48656967687405000000000000008002401453697A652E\n          506C6174666F726D44656661756C74080756697369626C65080000000F545365\n          6C656374696F6E506F696E7400095374796C654E616D6506126C65667473656C\n          656374696F6E706F696E74084772697053697A650500000000000000C000400C\n          4772697043656E7465722E580500000000000000E002400C4772697043656E74\n          65722E590500000000000000B003C00A53697A652E5769647468050000000000\n          0000C003400B53697A652E4865696768740500000000000000C004401453697A\n          652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700617\n          6C65667473656C656374696F6E706F696E747374796C6519546F756368546172\n          676574457870616E73696F6E2E4C6566740500000000000000E003401A546F75\n          6368546172676574457870616E73696F6E2E52696768740500000000000000E0\n          03C000000F5453656C656374696F6E506F696E7400095374796C654E616D6506\n          13726967687473656C656374696F6E706F696E74084772697053697A65050000\n          0000000000C000400C4772697043656E7465722E590500000000000000B004C0\n          0A53697A652E57696474680500000000000000C003400B53697A652E48656967\n          68740500000000000000C004401453697A652E506C6174666F726D4465666175\n          6C74080B5374796C654C6F6F6B75700618726967687473656C656374696F6E70\n          6F696E747374796C650000005450463007544C61796F757400095374796C654E\n          616D65060E6D656D6F7374796C655F636F646505416C69676E070643656E7465\n          720A53697A652E57696474680500000000000000C806400B53697A652E486569\n          6768740500000000000000C806401453697A652E506C6174666F726D44656661\n          756C74080756697369626C6508085461624F72646572022B000A545265637461\n          6E676C6500095374796C654E616D65060F52656374616E676C65315374796C65\n          05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709783332\n          3030303030300748697454657374080A53697A652E5769647468050000000000\n          0000C806400B53697A652E4865696768740500000000000000C806401453697A\n          652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704\n          4E6F6E6507585261646975730500000000000000C00140075952616469757305\n          00000000000000C0014000000C5442727573684F626A65637400095374796C65\n          4E616D65060A666F726567726F756E640B42727573682E436F6C6F720708636C\n          61426C61636B00000C5442727573684F626A65637400095374796C654E616D65\n          060973656C656374696F6E0B42727573682E436F6C6F72070978363434453445\n          353300000B54466F6E744F626A65637400095374796C654E616D650604666F6E\n          74000007544C61796F757400095374796C654E616D650607636F6E74656E7405\n          416C69676E0706436C69656E740C4D617267696E732E4C656674050000000000\n          0000A001400B4D617267696E732E546F700500000000000000A001400D4D6172\n          67696E732E52696768740500000000000000A001400E4D617267696E732E426F\n          74746F6D0500000000000000A001400A53697A652E5769647468050000000000\n          0000B606400B53697A652E4865696768740500000000000000B606401453697A\n          652E506C6174666F726D44656661756C7408085461624F72646572020000000A\n          545363726F6C6C42617200095374796C654E616D65060A767363726F6C6C6261\n          7205416C69676E0705526967687406437572736F72070763724172726F770B53\n          6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F\n          6E0708566572746963616C0A506F736974696F6E2E580500000000000000C006\n          400A53697A652E576964746805000000000000008002400B53697A652E486569\n          6768740500000000000000C006401453697A652E506C6174666F726D44656661\n          756C7408085461624F72646572020100000A545363726F6C6C42617200095374\n          796C654E616D65060A687363726F6C6C62617205416C69676E0706426F74746F\n          6D06437572736F72070763724172726F770B536D616C6C4368616E6765050000\n          00000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C\n          0A506F736974696F6E2E590500000000000000C006400A53697A652E57696474\n          680500000000000000C806400B53697A652E4865696768740500000000000000\n          8002401453697A652E506C6174666F726D44656661756C7408085461624F7264\n          65720202000007544C61796F75740005416C69676E0706436C69656E740A5369\n          7A652E57696474680500000000000000C006400B53697A652E48656967687405\n          00000000000000C006401453697A652E506C6174666F726D44656661756C7408\n          085461624F726465720203000F54536D616C6C5363726F6C6C42617200095374\n          796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E0705\n          526967687406437572736F72070763724172726F770B536D616C6C4368616E67\n          6505000000000000000000000B4F7269656E746174696F6E0708566572746963\n          616C0C4D617267696E732E4C65667405000000000000008000400A53697A652E\n          576964746805000000000000008002400B53697A652E48656967687405000000\n          000000008002401453697A652E506C6174666F726D44656661756C7408075669\n          7369626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E\n          616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F7474\n          6F6D06437572736F72070763724172726F770B536D616C6C4368616E67650500\n          0000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E7461\n          6C0B4D617267696E732E546F7005000000000000008000400A53697A652E5769\n          64746805000000000000009606400B53697A652E486569676874050000000000\n          00008002401453697A652E506C6174666F726D44656661756C74080756697369\n          626C65080000000F5453656C656374696F6E506F696E7400095374796C654E61\n          6D6506126C65667473656C656374696F6E706F696E74084772697053697A6505\n          00000000000000C000400C4772697043656E7465722E580500000000000000E0\n          02400C4772697043656E7465722E590500000000000000B003C00A506F736974\n          696F6E2E580500000000000000B005400A506F736974696F6E2E590500000000\n          000000B005400A53697A652E57696474680500000000000000C003400B53697A\n          652E4865696768740500000000000000C004401453697A652E506C6174666F72\n          6D44656661756C74080B5374796C654C6F6F6B757006176C65667473656C6563\n          74696F6E706F696E747374796C6519546F756368546172676574457870616E73\n          696F6E2E4C6566740500000000000000E003401A546F75636854617267657445\n          7870616E73696F6E2E52696768740500000000000000E003C000000F5453656C\n          656374696F6E506F696E7400095374796C654E616D650613726967687473656C\n          656374696F6E706F696E74084772697053697A650500000000000000C000400C\n          4772697043656E7465722E590500000000000000B004C00A506F736974696F6E\n          2E580500000000000000B005400A506F736974696F6E2E590500000000000000\n          B005400A53697A652E57696474680500000000000000C003400B53697A652E48\n          65696768740500000000000000C004401453697A652E506C6174666F726D4465\n          6661756C74080B5374796C654C6F6F6B75700618726967687473656C65637469\n          6F6E706F696E747374796C650000005450463007544C61796F75740009537479\n          6C654E616D6506106D656D6F7374796C655F6E6F726D616C05416C69676E0706\n          43656E7465720C50616464696E672E4C65667405000000000000008001400B50\n          616464696E672E546F7005000000000000008001400D50616464696E672E5269\n          67687405000000000000008001400E50616464696E672E426F74746F6D050000\n          00000000008001400A53697A652E57696474680500000000000000F406400B53\n          697A652E48656967687405000000000000009908401453697A652E506C617466\n          6F726D44656661756C74080756697369626C6508085461624F72646572022100\n          0A5452656374616E676C6500095374796C654E616D650602626705416C69676E\n          0708436F6E74656E74730A46696C6C2E436F6C6F720709783343464646464646\n          0748697454657374080A53697A652E57696474680500000000000000F406400B\n          53697A652E48656967687405000000000000009908401453697A652E506C6174\n          666F726D44656661756C74080C5374726F6B652E436F6C6F7207097835414646\n          4646464607585261646975730500000000000000C00040075952616469757305\n          00000000000000C00040000F54436F6C6F72416E696D6174696F6E0009537479\n          6C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508447572\n          6174696F6E050000000000CDCCCCFC3F0C50726F70657274794E616D65060C53\n          74726F6B652E436F6C6F720A537461727456616C756507097835414646464646\n          460953746F7056616C756507097843384646464646460754726967676572060E\n          4973466F63757365643D747275650E54726967676572496E7665727365060F49\n          73466F63757365643D66616C73650000000C5442727573684F626A6563740009\n          5374796C654E616D65060A666F726567726F756E6400000C5442727573684F62\n          6A65637400095374796C654E616D65060973656C656374696F6E0B4272757368\n          2E436F6C6F72070978374632413936464600000B54466F6E744F626A65637400\n          095374796C654E616D650604666F6E7409466F6E742E53697A65050000000000\n          0000E00240000007544C61796F757400095374796C654E616D650607636F6E74\n          656E7405416C69676E0706436C69656E740C4D617267696E732E4C6566740500\n          0000000000008001400B4D617267696E732E546F700500000000000000800140\n          0D4D617267696E732E526967687405000000000000008001400E4D617267696E\n          732E426F74746F6D05000000000000008001400A53697A652E57696474680500\n          000000000000DC06400B53697A652E4865696768740500000000000000930840\n          1453697A652E506C6174666F726D44656661756C7408085461624F7264657202\n          0000000A545363726F6C6C42617200095374796C654E616D65060A767363726F\n          6C6C62617205416C69676E0705526967687406437572736F7207076372417272\n          6F770B536D616C6C4368616E676505000000000000000000000B4F7269656E74\n          6174696F6E0708566572746963616C0A506F736974696F6E2E58050000000000\n          0000E806400A506F736974696F6E2E5905000000000000008001400A53697A65\n          2E576964746805000000000000008002400B53697A652E486569676874050000\n          00000000009508401453697A652E506C6174666F726D44656661756C74080854\n          61624F72646572020100000A545363726F6C6C42617200095374796C654E616D\n          65060A687363726F6C6C62617205416C69676E0706426F74746F6D0643757273\n          6F72070763724172726F770B536D616C6C4368616E6765050000000000000000\n          00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974\n          696F6E2E5805000000000000008001400A506F736974696F6E2E590500000000\n          0000009608400A53697A652E57696474680500000000000000EC06400B53697A\n          652E48656967687405000000000000008002401453697A652E506C6174666F72\n          6D44656661756C7408085461624F726465720202000007544C61796F75740005\n          416C69676E0706436C69656E740A53697A652E57696474680500000000000000\n          E406400B53697A652E48656967687405000000000000009508401453697A652E\n          506C6174666F726D44656661756C7408085461624F726465720203000F54536D\n          616C6C5363726F6C6C42617200095374796C654E616D65060F76736D616C6C73\n          63726F6C6C62617205416C69676E0705526967687406437572736F7207076372\n          4172726F770B536D616C6C4368616E676505000000000000000000000B4F7269\n          656E746174696F6E0708566572746963616C0C4D617267696E732E4C65667405\n          000000000000008000400A53697A652E57696474680500000000000000800240\n          0B53697A652E48656967687405000000000000008002401453697A652E506C61\n          74666F726D44656661756C74080756697369626C650800000F54536D616C6C53\n          63726F6C6C42617200095374796C654E616D65060F68736D616C6C7363726F6C\n          6C62617205416C69676E0706426F74746F6D06437572736F7207076372417272\n          6F770B536D616C6C4368616E676505000000000000000000000B4F7269656E74\n          6174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F70050000\n          00000000008000400A53697A652E576964746805000000000000009606400B53\n          697A652E48656967687405000000000000008002401453697A652E506C617466\n          6F726D44656661756C74080756697369626C65080000000F5453656C65637469\n          6F6E506F696E7400095374796C654E616D6506126C65667473656C656374696F\n          6E706F696E74084772697053697A650500000000000000C000400C4772697043\n          656E7465722E580500000000000000E002400C4772697043656E7465722E5905\n          00000000000000B003C00A506F736974696F6E2E580500000000000000DC0540\n          0A506F736974696F6E2E5905000000000000009307400A53697A652E57696474\n          680500000000000000C003400B53697A652E4865696768740500000000000000\n          C004401453697A652E506C6174666F726D44656661756C74080B5374796C654C\n          6F6F6B757006176C65667473656C656374696F6E706F696E747374796C651954\n          6F756368546172676574457870616E73696F6E2E4C6566740500000000000000\n          E003401A546F756368546172676574457870616E73696F6E2E52696768740500\n          000000000000E003C000000F5453656C656374696F6E506F696E740009537479\n          6C654E616D650613726967687473656C656374696F6E706F696E740847726970\n          53697A650500000000000000C000400C4772697043656E7465722E5905000000\n          00000000B004C00A506F736974696F6E2E580500000000000000DC05400A506F\n          736974696F6E2E5905000000000000009307400A53697A652E57696474680500\n          000000000000C003400B53697A652E4865696768740500000000000000C00440\n          1453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B\n          75700618726967687473656C656374696F6E706F696E747374796C6500000054\n          50463007544C61796F757400095374796C654E616D6506176C65667473656C65\n          6374696F6E706F696E747374796C6505416C69676E070643656E7465720A5369\n          7A652E57696474680500000000000000C003400B53697A652E48656967687405\n          00000000000000C004401453697A652E506C6174666F726D44656661756C7408\n          0756697369626C6508085461624F7264657202400A4669786564576964746802\n          180B46697865644865696768740230000A5452656374616E676C650009537479\n          6C654E616D65060A6261636B67726F756E6407436F726E6572730B07546F704C\n          6566740A426F74746F6D4C6566740B426F74746F6D5269676874000A46696C6C\n          2E436F6C6F7207097846464143414342450748697454657374080A506F736974\n          696F6E2E580500000000000000A803C00A506F736974696F6E2E590500000000\n          0000008404400A53697A652E57696474680500000000000000A003400B53697A\n          652E4865696768740500000000000000A003401453697A652E506C6174666F72\n          6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164\n          6975730500000000000000A0024007595261646975730500000000000000A002\n          400000005450463007544C61796F757400095374796C654E616D650618726967\n          687473656C656374696F6E706F696E747374796C6505416C69676E070643656E\n          7465720A53697A652E57696474680500000000000000C003400B53697A652E48\n          65696768740500000000000000C004401453697A652E506C6174666F726D4465\n          6661756C74080756697369626C6508085461624F7264657202440A4669786564\n          576964746802180B46697865644865696768740230000A5452656374616E676C\n          6500095374796C654E616D65060A6261636B67726F756E6407436F726E657273\n          0B08546F7052696768740A426F74746F6D4C6566740B426F74746F6D52696768\n          74000A46696C6C2E436F6C6F7207097846464143414342450748697454657374\n          080A53697A652E57696474680500000000000000A003400B53697A652E486569\n          6768740500000000000000A003401453697A652E506C6174666F726D44656661\n          756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500\n          000000000000A0024007595261646975730500000000000000A00240000000}\n      end\n      item\n        Platform = 'Android'\n        ResourcesBin = {\n          464D585F5354594C4520322E350106176C65667473656C656374696F6E706F69\n          6E747374796C6503C501060F6D656D6F7374796C655F636C656172038807060E\n          6D656D6F7374796C655F636F646503E30806106D656D6F7374796C655F6E6F72\n          6D616C03300A0618726967687473656C656374696F6E706F696E747374796C65\n          039B01005450463007544C61796F757400095374796C654E616D6506176C6566\n          7473656C656374696F6E706F696E747374796C6505416C69676E070643656E74\n          65720A53697A652E57696474680500000000000000C003400B53697A652E4865\n          696768740500000000000000C004401453697A652E506C6174666F726D446566\n          61756C74080756697369626C6508085461624F7264657202370A466978656457\n          6964746802180B46697865644865696768740230000A5452656374616E676C65\n          00095374796C654E616D65060A6261636B67726F756E6407436F726E6572730B\n          07546F704C6566740A426F74746F6D4C6566740B426F74746F6D526967687400\n          0A46696C6C2E436F6C6F7207097846464143414342450748697454657374080A\n          506F736974696F6E2E580500000000000000A803C00A506F736974696F6E2E59\n          05000000000000008404400A53697A652E57696474680500000000000000A003\n          400B53697A652E4865696768740500000000000000A003401453697A652E506C\n          6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65\n          07585261646975730500000000000000A0024007595261646975730500000000\n          000000A002400000005450463007544C61796F757400095374796C654E616D65\n          060F6D656D6F7374796C655F636C65617205416C69676E070643656E7465720A\n          53697A652E57696474680500000000000000F406400B53697A652E4865696768\n          7405000000000000009908401453697A652E506C6174666F726D44656661756C\n          74080756697369626C6508085461624F726465720228000C5442727573684F62\n          6A65637400095374796C654E616D65060A666F726567726F756E640B42727573\n          682E436F6C6F720708636C61426C61636B00000C5442727573684F626A656374\n          00095374796C654E616D65060973656C656374696F6E0B42727573682E436F6C\n          6F72070978363431463230323700000B54466F6E744F626A6563740009537479\n          6C654E616D650604666F6E74000007544C61796F757400095374796C654E616D\n          650607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E73\n          2E4C6566740500000000000000A001400D4D617267696E732E52696768740500\n          000000000000A001400A53697A652E57696474680500000000000000E206400B\n          53697A652E48656967687405000000000000009708401453697A652E506C6174\n          666F726D44656661756C7408085461624F72646572020000000A545363726F6C\n          6C42617200095374796C654E616D65060A767363726F6C6C62617205416C6967\n          6E0705526967687406437572736F72070763724172726F770B536D616C6C4368\n          616E676505000000000000000000000B4F7269656E746174696F6E0708566572\n          746963616C0A506F736974696F6E2E580500000000000000EC06400A53697A65\n          2E576964746805000000000000008002400B53697A652E486569676874050000\n          00000000009708401453697A652E506C6174666F726D44656661756C74080854\n          61624F72646572020100000A545363726F6C6C42617200095374796C654E616D\n          65060A687363726F6C6C62617205416C69676E0706426F74746F6D0643757273\n          6F72070763724172726F770B536D616C6C4368616E6765050000000000000000\n          00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974\n          696F6E2E5905000000000000009708400A53697A652E57696474680500000000\n          000000F406400B53697A652E4865696768740500000000000000800240145369\n          7A652E506C6174666F726D44656661756C7408085461624F7264657202020000\n          07544C61796F75740005416C69676E0706436C69656E740A53697A652E576964\n          74680500000000000000EC06400B53697A652E48656967687405000000000000\n          009708401453697A652E506C6174666F726D44656661756C7408085461624F72\n          6465720203000F54536D616C6C5363726F6C6C42617200095374796C654E616D\n          65060F76736D616C6C7363726F6C6C62617205416C69676E0705526967687406\n          437572736F72070763724172726F770B536D616C6C4368616E67650500000000\n          0000000000000B4F7269656E746174696F6E0708566572746963616C0C4D6172\n          67696E732E4C65667405000000000000008000400A53697A652E576964746805\n          000000000000008002400B53697A652E48656967687405000000000000008002\n          401453697A652E506C6174666F726D44656661756C74080756697369626C6508\n          00000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F68\n          736D616C6C7363726F6C6C62617205416C69676E0706426F74746F6D06437572\n          736F72070763724172726F770B536D616C6C4368616E67650500000000000000\n          0000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267\n          696E732E546F7005000000000000008000400A53697A652E5769647468050000\n          00000000009606400B53697A652E486569676874050000000000000080024014\n          53697A652E506C6174666F726D44656661756C74080756697369626C65080000\n          000F5453656C656374696F6E506F696E7400095374796C654E616D6506126C65\n          667473656C656374696F6E706F696E74084772697053697A6505000000000000\n          00C000400C4772697043656E7465722E580500000000000000E002400C477269\n          7043656E7465722E590500000000000000B003C00A53697A652E576964746805\n          00000000000000C003400B53697A652E4865696768740500000000000000C004\n          401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F\n          6B757006176C65667473656C656374696F6E706F696E747374796C6519546F75\n          6368546172676574457870616E73696F6E2E4C6566740500000000000000E003\n          401A546F756368546172676574457870616E73696F6E2E526967687405000000\n          00000000E003C000000F5453656C656374696F6E506F696E7400095374796C65\n          4E616D650613726967687473656C656374696F6E706F696E7408477269705369\n          7A650500000000000000C000400C4772697043656E7465722E59050000000000\n          0000B004C00A53697A652E57696474680500000000000000C003400B53697A65\n          2E4865696768740500000000000000C004401453697A652E506C6174666F726D\n          44656661756C74080B5374796C654C6F6F6B75700618726967687473656C6563\n          74696F6E706F696E747374796C650000005450463007544C61796F7574000953\n          74796C654E616D65060E6D656D6F7374796C655F636F646505416C69676E0706\n          43656E7465720A53697A652E57696474680500000000000000C806400B53697A\n          652E4865696768740500000000000000C806401453697A652E506C6174666F72\n          6D44656661756C74080756697369626C6508085461624F72646572022B000A54\n          52656374616E676C6500095374796C654E616D65060F52656374616E676C6531\n          5374796C6505416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72\n          07097833323030303030300748697454657374080A53697A652E576964746805\n          00000000000000C806400B53697A652E4865696768740500000000000000C806\n          401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B\n          696E6407044E6F6E6507585261646975730500000000000000C0014007595261\n          646975730500000000000000C0014000000C5442727573684F626A6563740009\n          5374796C654E616D65060A666F726567726F756E640B42727573682E436F6C6F\n          720708636C61426C61636B00000C5442727573684F626A65637400095374796C\n          654E616D65060973656C656374696F6E0B42727573682E436F6C6F7207097836\n          3434453445353300000B54466F6E744F626A65637400095374796C654E616D65\n          0604666F6E74000007544C61796F757400095374796C654E616D650607636F6E\n          74656E7405416C69676E0706436C69656E740C4D617267696E732E4C65667405\n          00000000000000A001400B4D617267696E732E546F700500000000000000A001\n          400D4D617267696E732E52696768740500000000000000A001400E4D61726769\n          6E732E426F74746F6D0500000000000000A001400A53697A652E576964746805\n          00000000000000B606400B53697A652E4865696768740500000000000000B606\n          401453697A652E506C6174666F726D44656661756C7408085461624F72646572\n          020000000A545363726F6C6C42617200095374796C654E616D65060A76736372\n          6F6C6C62617205416C69676E0705526967687406437572736F72070763724172\n          726F770B536D616C6C4368616E676505000000000000000000000B4F7269656E\n          746174696F6E0708566572746963616C0A506F736974696F6E2E580500000000\n          000000C006400A53697A652E576964746805000000000000008002400B53697A\n          652E4865696768740500000000000000C006401453697A652E506C6174666F72\n          6D44656661756C7408085461624F72646572020100000A545363726F6C6C4261\n          7200095374796C654E616D65060A687363726F6C6C62617205416C69676E0706\n          426F74746F6D06437572736F72070763724172726F770B536D616C6C4368616E\n          676505000000000000000000000B4F7269656E746174696F6E070A486F72697A\n          6F6E74616C0A506F736974696F6E2E590500000000000000C006400A53697A65\n          2E57696474680500000000000000C806400B53697A652E486569676874050000\n          00000000008002401453697A652E506C6174666F726D44656661756C74080854\n          61624F726465720202000007544C61796F75740005416C69676E0706436C6965\n          6E740A53697A652E57696474680500000000000000C006400B53697A652E4865\n          696768740500000000000000C006401453697A652E506C6174666F726D446566\n          61756C7408085461624F726465720203000F54536D616C6C5363726F6C6C4261\n          7200095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C\n          69676E0705526967687406437572736F72070763724172726F770B536D616C6C\n          4368616E676505000000000000000000000B4F7269656E746174696F6E070856\n          6572746963616C0C4D617267696E732E4C65667405000000000000008000400A\n          53697A652E576964746805000000000000008002400B53697A652E4865696768\n          7405000000000000008002401453697A652E506C6174666F726D44656661756C\n          74080756697369626C650800000F54536D616C6C5363726F6C6C426172000953\n          74796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E07\n          06426F74746F6D06437572736F72070763724172726F770B536D616C6C436861\n          6E676505000000000000000000000B4F7269656E746174696F6E070A486F7269\n          7A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A5369\n          7A652E576964746805000000000000009606400B53697A652E48656967687405\n          000000000000008002401453697A652E506C6174666F726D44656661756C7408\n          0756697369626C65080000000F5453656C656374696F6E506F696E7400095374\n          796C654E616D6506126C65667473656C656374696F6E706F696E740847726970\n          53697A650500000000000000C000400C4772697043656E7465722E5805000000\n          00000000E002400C4772697043656E7465722E590500000000000000B003C00A\n          506F736974696F6E2E580500000000000000B005400A506F736974696F6E2E59\n          0500000000000000B005400A53697A652E57696474680500000000000000C003\n          400B53697A652E4865696768740500000000000000C004401453697A652E506C\n          6174666F726D44656661756C74080B5374796C654C6F6F6B757006176C656674\n          73656C656374696F6E706F696E747374796C6519546F75636854617267657445\n          7870616E73696F6E2E4C6566740500000000000000E003401A546F7563685461\n          72676574457870616E73696F6E2E52696768740500000000000000E003C00000\n          0F5453656C656374696F6E506F696E7400095374796C654E616D650613726967\n          687473656C656374696F6E706F696E74084772697053697A6505000000000000\n          00C000400C4772697043656E7465722E590500000000000000B004C00A506F73\n          6974696F6E2E580500000000000000B005400A506F736974696F6E2E59050000\n          0000000000B005400A53697A652E57696474680500000000000000C003400B53\n          697A652E4865696768740500000000000000C004401453697A652E506C617466\n          6F726D44656661756C74080B5374796C654C6F6F6B7570061872696768747365\n          6C656374696F6E706F696E747374796C650000005450463007544C61796F7574\n          00095374796C654E616D6506106D656D6F7374796C655F6E6F726D616C05416C\n          69676E070643656E7465720C50616464696E672E4C6566740500000000000000\n          8001400B50616464696E672E546F7005000000000000008001400D5061646469\n          6E672E526967687405000000000000008001400E50616464696E672E426F7474\n          6F6D05000000000000008001400A53697A652E57696474680500000000000000\n          F406400B53697A652E48656967687405000000000000009908401453697A652E\n          506C6174666F726D44656661756C74080756697369626C6508085461624F7264\n          65720221000A5452656374616E676C6500095374796C654E616D650602626705\n          416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978334346\n          46464646460748697454657374080A53697A652E576964746805000000000000\n          00F406400B53697A652E48656967687405000000000000009908401453697A65\n          2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709\n          78354146464646464607585261646975730500000000000000C0004007595261\n          646975730500000000000000C00040000F54436F6C6F72416E696D6174696F6E\n          00095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C\n          65084475726174696F6E050000000000CDCCCCFC3F0C50726F70657274794E61\n          6D65060C5374726F6B652E436F6C6F720A537461727456616C75650709783541\n          4646464646460953746F7056616C756507097843384646464646460754726967\n          676572060E4973466F63757365643D747275650E54726967676572496E766572\n          7365060F4973466F63757365643D66616C73650000000C5442727573684F626A\n          65637400095374796C654E616D65060A666F726567726F756E6400000C544272\n          7573684F626A65637400095374796C654E616D65060973656C656374696F6E0B\n          42727573682E436F6C6F72070978374632413936464600000B54466F6E744F62\n          6A65637400095374796C654E616D650604666F6E7409466F6E742E53697A6505\n          00000000000000E00240000007544C61796F757400095374796C654E616D6506\n          07636F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E4C\n          65667405000000000000008001400B4D617267696E732E546F70050000000000\n          00008001400D4D617267696E732E526967687405000000000000008001400E4D\n          617267696E732E426F74746F6D05000000000000008001400A53697A652E5769\n          6474680500000000000000DC06400B53697A652E486569676874050000000000\n          00009308401453697A652E506C6174666F726D44656661756C7408085461624F\n          72646572020000000A545363726F6C6C42617200095374796C654E616D65060A\n          767363726F6C6C62617205416C69676E0705526967687406437572736F720707\n          63724172726F770B536D616C6C4368616E676505000000000000000000000B4F\n          7269656E746174696F6E0708566572746963616C0A506F736974696F6E2E5805\n          00000000000000E806400A506F736974696F6E2E590500000000000000800140\n          0A53697A652E576964746805000000000000008002400B53697A652E48656967\n          687405000000000000009508401453697A652E506C6174666F726D4465666175\n          6C7408085461624F72646572020100000A545363726F6C6C4261720009537479\n          6C654E616D65060A687363726F6C6C62617205416C69676E0706426F74746F6D\n          06437572736F72070763724172726F770B536D616C6C4368616E676505000000\n          000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A\n          506F736974696F6E2E5805000000000000008001400A506F736974696F6E2E59\n          05000000000000009608400A53697A652E57696474680500000000000000EC06\n          400B53697A652E48656967687405000000000000008002401453697A652E506C\n          6174666F726D44656661756C7408085461624F726465720202000007544C6179\n          6F75740005416C69676E0706436C69656E740A53697A652E5769647468050000\n          0000000000E406400B53697A652E486569676874050000000000000095084014\n          53697A652E506C6174666F726D44656661756C7408085461624F726465720203\n          000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F7673\n          6D616C6C7363726F6C6C62617205416C69676E0705526967687406437572736F\n          72070763724172726F770B536D616C6C4368616E676505000000000000000000\n          000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E\n          4C65667405000000000000008000400A53697A652E5769647468050000000000\n          00008002400B53697A652E48656967687405000000000000008002401453697A\n          652E506C6174666F726D44656661756C74080756697369626C650800000F5453\n          6D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C\n          7363726F6C6C62617205416C69676E0706426F74746F6D06437572736F720707\n          63724172726F770B536D616C6C4368616E676505000000000000000000000B4F\n          7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E54\n          6F7005000000000000008000400A53697A652E57696474680500000000000000\n          9606400B53697A652E48656967687405000000000000008002401453697A652E\n          506C6174666F726D44656661756C74080756697369626C65080000000F545365\n          6C656374696F6E506F696E7400095374796C654E616D6506126C65667473656C\n          656374696F6E706F696E74084772697053697A650500000000000000C000400C\n          4772697043656E7465722E580500000000000000E002400C4772697043656E74\n          65722E590500000000000000B003C00A506F736974696F6E2E58050000000000\n          0000DC05400A506F736974696F6E2E5905000000000000009307400A53697A65\n          2E57696474680500000000000000C003400B53697A652E486569676874050000\n          0000000000C004401453697A652E506C6174666F726D44656661756C74080B53\n          74796C654C6F6F6B757006176C65667473656C656374696F6E706F696E747374\n          796C6519546F756368546172676574457870616E73696F6E2E4C656674050000\n          0000000000E003401A546F756368546172676574457870616E73696F6E2E5269\n          6768740500000000000000E003C000000F5453656C656374696F6E506F696E74\n          00095374796C654E616D650613726967687473656C656374696F6E706F696E74\n          084772697053697A650500000000000000C000400C4772697043656E7465722E\n          590500000000000000B004C00A506F736974696F6E2E580500000000000000DC\n          05400A506F736974696F6E2E5905000000000000009307400A53697A652E5769\n          6474680500000000000000C003400B53697A652E486569676874050000000000\n          0000C004401453697A652E506C6174666F726D44656661756C74080B5374796C\n          654C6F6F6B75700618726967687473656C656374696F6E706F696E747374796C\n          650000005450463007544C61796F757400095374796C654E616D650618726967\n          687473656C656374696F6E706F696E747374796C6505416C69676E070643656E\n          7465720A53697A652E57696474680500000000000000C003400B53697A652E48\n          65696768740500000000000000C004401453697A652E506C6174666F726D4465\n          6661756C74080756697369626C6508085461624F7264657202440A4669786564\n          576964746802180B46697865644865696768740230000A5452656374616E676C\n          6500095374796C654E616D65060A6261636B67726F756E6407436F726E657273\n          0B08546F7052696768740A426F74746F6D4C6566740B426F74746F6D52696768\n          74000A46696C6C2E436F6C6F7207097846464143414342450748697454657374\n          080A53697A652E57696474680500000000000000A003400B53697A652E486569\n          6768740500000000000000A003401453697A652E506C6174666F726D44656661\n          756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500\n          000000000000A0024007595261646975730500000000000000A00240000000}\n      end>\n    Left = 64\n    Top = 386\n  end\n  object LayoutMenuContent: TLayout\n    Align = Contents\n    Size.Width = 1053.000000000000000000\n    Size.Height = 686.000000000000000000\n    Size.PlatformDefault = False\n    Visible = False\n    TabOrder = 3\n    object RectangleMenuBG: TRectangle\n      Align = Contents\n      Fill.Color = xBF565869\n      Size.Width = 1053.000000000000000000\n      Size.Height = 686.000000000000000000\n      Size.PlatformDefault = False\n      OnClick = ButtonCloseMenuClick\n    end\n    object LayoutMenuContainer: TLayout\n      Align = Left\n      Size.Width = 320.000000000000000000\n      Size.Height = 686.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n    end\n  end\n  object RectangleMenu: TRectangle\n    Align = Left\n    Fill.Color = xFF202123\n    Padding.Left = 8.000000000000000000\n    Padding.Top = 8.000000000000000000\n    Padding.Right = 8.000000000000000000\n    Padding.Bottom = 8.000000000000000000\n    Size.Width = 270.000000000000000000\n    Size.Height = 686.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Kind = None\n    object LayoutMenu: TLayout\n      Align = Client\n      Size.Width = 251.000000000000000000\n      Size.Height = 670.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 0\n      object ButtonNewChat: TButton\n        Align = Top\n        Cursor = crHandPoint\n        StyledSettings = [Family, Style, FontColor]\n        Images = Manager.SVGIconImageList\n        ImageIndex = 0\n        Margins.Bottom = 8.000000000000000000\n        Size.Width = 251.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_newchat'\n        TabOrder = 0\n        Text = 'New chat'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.HorzAlign = Leading\n        OnClick = ButtonNewChatClick\n      end\n      object ListBoxChatList: TListBox\n        Align = Client\n        Margins.Top = 4.000000000000000000\n        Size.Width = 251.000000000000000000\n        Size.Height = 402.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'listboxstyle_clear'\n        TabOrder = 1\n        TabStop = False\n        CanFocus = False\n        DisableFocusEffect = True\n        ItemIndex = 0\n        ItemHeight = 44.000000000000000000\n        Images = Manager.SVGIconImageList\n        DefaultItemStyles.ItemStyle = 'listboxitemstyle_chat'\n        DefaultItemStyles.GroupHeaderStyle = ''\n        DefaultItemStyles.GroupFooterStyle = ''\n        Viewport.Width = 251.000000000000000000\n        Viewport.Height = 402.000000000000000000\n        object ListBoxItem1: TListBoxItem\n          HitTest = True\n          IsSelected = True\n          ImageIndex = 1\n          Margins.Bottom = 8.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 44.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'listboxitemstyle_chat'\n          TabOrder = 0\n          Text = 'New chat'\n        end\n        object ListBoxItem3: TListBoxItem\n          HitTest = True\n          ImageIndex = 1\n          Margins.Bottom = 8.000000000000000000\n          Position.Y = 52.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 44.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'listboxitemstyle_chat'\n          TabOrder = 1\n          Text = 'Make HTTP Request in JavaScript'\n        end\n      end\n      object LayoutMenuButtons: TLayout\n        Align = Bottom\n        ClipChildren = True\n        Position.Y = 460.000000000000000000\n        Size.Width = 251.000000000000000000\n        Size.Height = 210.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 2\n        object ButtonAbout: TButton\n          Align = Top\n          Cursor = crHandPoint\n          Images = Manager.SVGIconImageList\n          ImageIndex = 13\n          Margins.Top = 4.000000000000000000\n          Position.Y = 165.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 44.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 4\n          Text = 'About'\n          TextSettings.HorzAlign = Leading\n          OnClick = ButtonAboutClick\n        end\n        object ButtonClear: TButton\n          Align = Top\n          Cursor = crHandPoint\n          Images = Manager.SVGIconImageList\n          ImageIndex = 8\n          Margins.Top = 4.000000000000000000\n          Position.Y = 21.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 44.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 2\n          Text = 'Clear conversations'\n          TextSettings.HorzAlign = Leading\n          OnClick = ButtonClearClick\n          object Layout2: TLayout\n            Align = Right\n            Margins.Top = 6.000000000000000000\n            Margins.Right = 6.000000000000000000\n            Margins.Bottom = 6.000000000000000000\n            Position.X = 181.000000000000000000\n            Position.Y = 6.000000000000000000\n            Size.Width = 64.000000000000000000\n            Size.Height = 32.000000000000000000\n            Size.PlatformDefault = False\n            TabOrder = 1\n            object ButtonClearConfirm: TButton\n              Align = Right\n              Cursor = crHandPoint\n              Hint = 'Confirm'\n              Images = Manager.SVGIconImageList\n              ImageIndex = 10\n              Size.Width = 32.000000000000000000\n              Size.Height = 32.000000000000000000\n              Size.PlatformDefault = False\n              StyleLookup = 'buttonstyle_confirm'\n              TabOrder = 1\n              OnClick = ButtonClearConfirmClick\n            end\n            object ButtonClearCancel: TButton\n              Align = Right\n              Cursor = crHandPoint\n              Hint = 'Cancel'\n              Images = Manager.SVGIconImageList\n              ImageIndex = 11\n              Position.X = 32.000000000000000000\n              Size.Width = 32.000000000000000000\n              Size.Height = 32.000000000000000000\n              Size.PlatformDefault = False\n              StyleLookup = 'buttonstyle_confirm'\n              TabOrder = 0\n              OnClick = ButtonClearCancelClick\n            end\n          end\n        end\n        object ButtonFAQ: TButton\n          Align = Top\n          Cursor = crHandPoint\n          Images = Manager.SVGIconImageList\n          ImageIndex = 9\n          Margins.Top = 4.000000000000000000\n          Position.Y = 117.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 44.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 5\n          Text = 'Updates & FAQ'\n          TextSettings.HorzAlign = Leading\n          OnClick = ButtonFAQClick\n        end\n        object ButtonSettings: TButton\n          Align = Top\n          Cursor = crHandPoint\n          Images = Manager.SVGIconImageList\n          ImageIndex = 12\n          Margins.Top = 4.000000000000000000\n          Position.Y = 69.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 44.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 3\n          Text = 'Settings'\n          TextSettings.HorzAlign = Leading\n          OnClick = ButtonSettingsClick\n        end\n        object Line1: TLine\n          Align = Top\n          LineType = Top\n          Size.Width = 251.000000000000000000\n          Size.Height = 1.000000000000000000\n          Size.PlatformDefault = False\n          Stroke.Color = x33FFFFFF\n        end\n        object ButtonMenuButonsSwitch: TButton\n          Align = Top\n          Images = Manager.SVGIconImageList\n          ImageIndex = 16\n          Position.Y = 1.000000000000000000\n          Size.Width = 251.000000000000000000\n          Size.Height = 16.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menubuttons'\n          TabOrder = 7\n          Text = 'buttonstyle_menubuttons'\n          OnClick = ButtonMenuButonsSwitchClick\n        end\n      end\n    end\n    object LayoutCloseMenu: TLayout\n      Align = Right\n      Margins.Left = 8.000000000000000000\n      Margins.Right = -55.000000000000000000\n      Position.X = 267.000000000000000000\n      Position.Y = 8.000000000000000000\n      Size.Width = 50.000000000000000000\n      Size.Height = 670.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      object ButtonCloseMenu: TButton\n        Align = Top\n        Cursor = crHandPoint\n        ImageIndex = 3\n        Size.Width = 50.000000000000000000\n        Size.Height = 45.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_primary'\n        TabOrder = 0\n        OnClick = ButtonCloseMenuClick\n      end\n    end\n  end\n  object LayoutOverlay: TLayout\n    Align = Contents\n    Size.Width = 1053.000000000000000000\n    Size.Height = 686.000000000000000000\n    Size.PlatformDefault = False\n    Visible = False\n    TabOrder = 7\n  end\n  object TimerFPS: TTimer\n    Interval = 10\n    OnTimer = TimerFPSTimer\n    Left = 136\n    Top = 384\n  end\n  object GestureManager: TGestureManager\n    Sensitivity = 80.000000000000000000\n    Left = 64\n    Top = 328\n    GestureData = <\n      item\n        Control = Owner\n        Collection = <\n          item\n            GestureID = sgiRightLeft\n          end>\n      end>\n  end\n  object FDConnection: TFDConnection\n    Left = 136\n    Top = 330\n  end\nend\n"
  },
  {
    "path": "ChatGPT.Main.pas",
    "content": "﻿unit ChatGPT.Main;\n\ninterface\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, OpenAI,\n  FMX.Objects, FMX.Layouts, FMX.ListBox, FMX.Controls.Presentation, FMX.StdCtrls,\n  System.ImageList, FMX.ImgList, FMX.SVGIconImageList, ChatGPT.FrameChat,\n  FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, FMX.Effects, FMX.Filter.Effects,\n  FMX.Edit, ChatGPT.Classes, System.JSON, FMX.ComboEdit, FMX.Menus, System.Skia,\n  System.Generics.Collections, System.Actions, FMX.ActnList, FMX.StdActns,\n  FMX.MediaLibrary.Actions, OpenAI.Chat.Functions, FMX.Gestures, FMX.Ani,\n  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,\n  FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,\n  FireDAC.Phys, FireDAC.FMXUI.Wait, Data.DB, FireDAC.Comp.Client;\n\ntype\n  TListBoxItemChat = class(TListBoxItem)\n  public\n    JSON: TJSONObject;\n    ChatId: string;\n    procedure Paint; override;\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n  end;\n\n  TFormMain = class(TForm)\n    LayoutChats: TLayout;\n    Rectangle1: TRectangle;\n    StyleBook: TStyleBook;\n    LayoutHead: TLayout;\n    ButtonMenu: TButton;\n    ButtonNewChatCompact: TButton;\n    LabelChatName: TLabel;\n    LayoutMenuContent: TLayout;\n    RectangleMenu: TRectangle;\n    LayoutMenu: TLayout;\n    ButtonNewChat: TButton;\n    ListBoxChatList: TListBox;\n    ListBoxItem1: TListBoxItem;\n    ListBoxItem3: TListBoxItem;\n    RectangleMenuBG: TRectangle;\n    ButtonCloseMenu: TButton;\n    LayoutMenuContainer: TLayout;\n    LayoutCloseMenu: TLayout;\n    Line1: TLine;\n    ButtonClear: TButton;\n    ButtonFAQ: TButton;\n    LayoutChatsBox: TLayout;\n    Layout2: TLayout;\n    ButtonClearConfirm: TButton;\n    ButtonClearCancel: TButton;\n    LayoutOverlay: TLayout;\n    ButtonSettings: TButton;\n    Line2: TLine;\n    ButtonAbout: TButton;\n    LayoutMenuButtons: TLayout;\n    ButtonMenuButonsSwitch: TButton;\n    TimerFPS: TTimer;\n    GestureManager: TGestureManager;\n    FDConnection: TFDConnection;\n    procedure ButtonNewChatClick(Sender: TObject);\n    procedure FormResize(Sender: TObject);\n    procedure ButtonMenuClick(Sender: TObject);\n    procedure ButtonCloseMenuClick(Sender: TObject);\n    procedure ButtonNewChatCompactClick(Sender: TObject);\n    procedure FormConstrainedResize(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Single);\n    procedure FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect);\n    procedure FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect);\n    procedure ButtonClearClick(Sender: TObject);\n    procedure ButtonClearConfirmClick(Sender: TObject);\n    procedure ButtonClearCancelClick(Sender: TObject);\n    procedure ButtonFAQClick(Sender: TObject);\n    procedure ButtonSettingsClick(Sender: TObject);\n    procedure ButtonAboutClick(Sender: TObject);\n    procedure ButtonMenuButonsSwitchClick(Sender: TObject);\n    procedure FormCreate(Sender: TObject);\n    procedure FormSaveState(Sender: TObject);\n    procedure TimerFPSTimer(Sender: TObject);\n    procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);\n    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\n  private\n    class var\n      FChatIdCount: Integer;\n  private\n    FOpenAI: TOpenAIComponent;\n    FMode: TWindowMode;\n    FToken: string;\n    FTemperature: Single;\n    FChatsFileName: string;\n    FSettingsFileName: string;\n    FSelectedChatId: string;\n    FPresencePenalty: Single;\n    FMaxTokens: Integer;\n    FMaxTokensQuery: Integer;\n    FFrequencyPenalty: Single;\n    FOrganization: string;\n    FBaseUrl: string;\n    FModel: string;\n    FTopP: Single;\n    FGPTFuncList: TList<IChatFunction>;\n    FUseFunctions: Boolean;\n    FAutoExecFuncs: Boolean;\n    FTimeout: Integer;\n    procedure SetMode(const Value: TWindowMode);\n    procedure UpdateMode;\n    procedure SelectChat(const ChatId: string);\n    procedure DeleteChat(const ChatId: string);\n    procedure FOnChatItemClick(Sender: TObject);\n    {$HINTS OFF}\n    procedure FOnChatItemTap(Sender: TObject; const Point: TPointF);\n    {$HINTS ON}\n    function CreateChat(JSON: TJSONObject = nil): string;\n    procedure CloseMenu;\n    procedure Clear;\n    procedure ShowClearConfirm;\n    procedure HideClearConfirm;\n    procedure FOnChatEditClick(Sender: TObject);\n    procedure FOnChatDeleteClick(Sender: TObject);\n    procedure OpenSettings;\n    procedure LoadSettings;\n    procedure SaveSettings;\n    procedure SetToken(const Value: string);\n    procedure SetTemperature(const Value: Single);\n    function GetSettingsFileName: string;\n    function GetChatsFileName: string;\n    procedure SetFrequencyPenalty(const Value: Single);\n    procedure SetMaxTokens(const Value: Integer);\n    procedure SetMaxTokensQuery(const Value: Integer);\n    procedure SetPresencePenalty(const Value: Single);\n    procedure SetOrganization(const Value: string);\n    procedure SetBaseUrl(const Value: string);\n    procedure SetModel(const Value: string);\n    function GetChatFrame(const ChatId: string): TFrameChat;\n    procedure SetTopP(const Value: Single);\n    procedure Defaults;\n    procedure FOnNeedFuncList(Sender: TObject; out Items: TArray<IChatFunction>);\n    procedure CreateGPTFunctions;\n    procedure SetUseFunctions(const Value: Boolean);\n    procedure SetAutoExecFuncs(const Value: Boolean);\n    procedure SetTimeout(const Value: Integer);\n    procedure RenameChat(const ChatId, Text: string);\n    procedure FOnChatTitleChanged(Sender: TObject);\n  protected\n    procedure CreateHandle; override;\n  public\n    procedure LoadChats;\n    procedure SaveChats;\n    class function NextChatId: Integer; static;\n    property UseFunctions: Boolean read FUseFunctions write SetUseFunctions;\n    property AutoExecFuncs: Boolean read FAutoExecFuncs write SetAutoExecFuncs;\n    property OpenAI: TOpenAIComponent read FOpenAI;\n    property Mode: TWindowMode read FMode write SetMode;\n    property Token: string read FToken write SetToken;\n    property Temperature: Single read FTemperature write SetTemperature;\n    property Timeout: Integer read FTimeout write SetTimeout;\n    property Organization: string read FOrganization write SetOrganization;\n    property BaseUrl: string read FBaseUrl write SetBaseUrl;\n    property MaxTokens: Integer read FMaxTokens write SetMaxTokens;\n    property MaxTokensQuery: Integer read FMaxTokensQuery write SetMaxTokensQuery;\n    property PresencePenalty: Single read FPresencePenalty write SetPresencePenalty;\n    property FrequencyPenalty: Single read FFrequencyPenalty write SetFrequencyPenalty;\n    property TopP: Single read FTopP write SetTopP;\n    property Model: string read FModel write SetModel;\n    property GPTFuncList: TList<IChatFunction> read FGPTFuncList;\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n  end;\n\nconst\n  URL_FAQ = 'https://help.openai.com/en/collections/3742473-chatgpt';\n  DEFAULT_TIMEOUT = 120000;\n\nconst\n  VersionName = '1.1.30';\n\nvar\n  FormMain: TFormMain;\n\nconst\n  AniInterpolation = TInterpolationType.Quadratic;\n\nimplementation\n\nuses\n  FMX.Text, System.Math, System.Rtti, FMX.Utils, FMX.DialogService,\n  System.Threading, System.Net.URLClient, System.IOUtils, ChatGPT.Settings,\n  ChatGPT.Overlay, FMX.Styles, HGM.FMX.Ani, HGM.FMX.Image, OpenAI.API,\n  ChatGPT.Manager,\n  {$IFDEF MSWINDOWS}\n  DarkModeApi.FMX, FMX.Platform.Win,\n  {$ENDIF}\n  ChatGPT.About, ChatGPT.Functions, System.Math.Vectors;\n\n{$R *.fmx}\n\n{ TFormMain }\n\nclass function TFormMain.NextChatId: Integer;\nbegin\n  Inc(FChatIdCount);\n  Result := FChatIdCount;\nend;\n\nprocedure TFormMain.ShowClearConfirm;\nbegin\n  ButtonClear.Text := 'Confirm clear';\n  ButtonClearConfirm.Visible := True;\n  ButtonClearCancel.Visible := True;\nend;\n\nprocedure TFormMain.TimerFPSTimer(Sender: TObject);\nbegin\n  Invalidate;\nend;\n\nprocedure TFormMain.HideClearConfirm;\nbegin\n  ButtonClear.Text := 'Clear conversations';\n  ButtonClearConfirm.Visible := False;\n  ButtonClearCancel.Visible := False;\nend;\n\nprocedure TFormMain.ButtonAboutClick(Sender: TObject);\nbegin\n  LayoutOverlay.BringToFront;\n  TFrameAbout.Execute(LayoutOverlay,\n    procedure(Frame: TFrameAbout)\n    begin\n      Frame.Mode := Mode;\n    end,\n    procedure(Frame: TFrameAbout; Success: Boolean)\n    begin\n      //\n    end);\nend;\n\nprocedure TFormMain.ButtonClearCancelClick(Sender: TObject);\nbegin\n  HideClearConfirm;\nend;\n\nprocedure TFormMain.ButtonClearClick(Sender: TObject);\nbegin\n  ShowClearConfirm;\nend;\n\nprocedure TFormMain.ButtonClearConfirmClick(Sender: TObject);\nbegin\n  Clear;\n  SelectChat(CreateChat);\nend;\n\nprocedure TFormMain.ButtonCloseMenuClick(Sender: TObject);\nbegin\n  CloseMenu;\nend;\n\nprocedure TFormMain.ButtonFAQClick(Sender: TObject);\nbegin\n  OpenUrl(URL_FAQ);\nend;\n\nprocedure TFormMain.ButtonMenuButonsSwitchClick(Sender: TObject);\nbegin\n  if LayoutMenuButtons.Height < 210 then\n  begin\n    TAnimator.AnimateFloat(LayoutMenuButtons, 'Height', 210, 0.1);\n    ButtonMenuButonsSwitch.RotationAngle := 0;\n  end\n  else\n  begin\n    TAnimator.AnimateFloat(LayoutMenuButtons, 'Height', 17, 0.1);\n    ButtonMenuButonsSwitch.RotationAngle := 180;\n  end;\nend;\n\nprocedure TFormMain.ButtonMenuClick(Sender: TObject);\nbegin\n  RectangleMenuBG.Opacity := 0;\n  LayoutMenuContainer.Opacity := 0;\n  LayoutMenuContainer.Margins.Left := -(LayoutMenuContainer.Width - 45);\n  ButtonCloseMenu.Opacity := 0;\n  LayoutMenuContent.Visible := True;\n  TAnimator.AnimateFloat(RectangleMenuBG, 'Opacity', 1, 0.2, TAnimationType.InOut, AniInterpolation);\n  TAnimator.AnimateFloat(ButtonCloseMenu, 'Opacity', 1, 0.2, TAnimationType.InOut, AniInterpolation);\n  TAnimator.AnimateFloat(LayoutMenuContainer, 'Opacity', 1, 0.2, TAnimationType.InOut, AniInterpolation);\n  TAnimator.AnimateFloat(LayoutMenuContainer, 'Margins.Left', 0, 0.2, TAnimationType.InOut, AniInterpolation);\nend;\n\nprocedure TFormMain.CloseMenu;\nbegin\n  TAnimator.AnimateFloat(RectangleMenuBG, 'Opacity', 0, 0.2, TAnimationType.InOut, AniInterpolation);\n  TAnimator.AnimateFloat(ButtonCloseMenu, 'Opacity', 0, 0.2, TAnimationType.InOut, AniInterpolation);\n  TAnimator.AnimateFloat(LayoutMenuContainer, 'Opacity', 0, 0.2, TAnimationType.InOut, AniInterpolation);\n  TAnimator.AnimateFloatWithFinish(LayoutMenuContainer, 'Margins.Left', -(LayoutMenuContainer.Width - 45),\n    procedure\n    begin\n      LayoutMenuContent.Visible := False;\n    end, 0.2, TAnimationType.InOut, AniInterpolation);\nend;\n\nfunction TFormMain.CreateChat(JSON: TJSONObject): string;\nbegin\n  var IsNew: Boolean := not Assigned(JSON);\n  var ItemList := TListBoxItemChat.Create(ListBoxChatList);\n  if IsNew then\n  begin\n    ItemList.JSON := nil;\n    ItemList.ChatId := TGUID.NewGuid.ToString;\n    ItemList.Text := 'New chat ' + NextChatId.ToString;\n  end\n  else\n  begin\n    ItemList.JSON := JSON.Clone as TJSONObject;\n    ItemList.Text := JSON.GetValue('title', '').Replace(#13, ' ').Replace(#10, ' ').Replace('&', '');\n    ItemList.ChatId := JSON.GetValue('chat_id', TGUID.NewGuid.ToString);\n  end;\n  ItemList.TabStop := False;\n  ItemList.HitTest := True;\n  {$IFDEF MOBILE}\n  ItemList.OnTap := FOnChatItemTap;\n  {$ELSE}\n  ItemList.OnClick := FOnChatItemClick;\n  {$ENDIF}\n  ItemList.Margins.Bottom := 8;\n  ItemList.TextSettings.WordWrap := False;\n  ItemList.ImageIndex := 1;\n  ItemList.DisableDisappear := True;\n  ItemList.StylesData['edit.OnClick'] := TValue.From<TNotifyEvent>(FOnChatEditClick);\n  ItemList.StylesData['delete.OnClick'] := TValue.From<TNotifyEvent>(FOnChatDeleteClick);\n  if IsNew then\n    ListBoxChatList.InsertObject(0, ItemList)\n  else\n    ListBoxChatList.AddObject(ItemList);\n  ItemList.ApplyStyleLookup;\n\n  Result := ItemList.ChatId;\nend;\n\nprocedure TFormMain.CreateHandle;\nbegin\n  inherited;\n  {$IFDEF MSWINDOWS}\n  SetWindowColorModeAsSystem;\n  {$ENDIF}\nend;\n\nprocedure TFormMain.DeleteChat(const ChatId: string);\nbegin\n  for var Control in LayoutChatsBox.Controls do\n    if Control is TFrameChat then\n    begin\n      var Frame := TFrameChat(Control);\n      if Frame.ChatId = ChatId then\n      begin\n        Frame.Release;\n        Break;\n      end;\n    end;\n  var DeletedIndex: Integer := -1;\n  for var i := 0 to Pred(ListBoxChatList.Count) do\n    if ListBoxChatList.ListItems[i] is TListBoxItemChat then\n      if TListBoxItemChat(ListBoxChatList.ListItems[i]).ChatId = ChatId then\n      begin\n        DeletedIndex := i;\n        ListBoxChatList.ListItems[i].Release;\n        Break;\n      end;\n  if ListBoxChatList.Count <= 0 then\n    SelectChat(CreateChat)\n  else\n  begin\n    DeletedIndex := Max(0, Min(DeletedIndex - 1, ListBoxChatList.Count - 1));\n    SelectChat((ListBoxChatList.ListItems[DeletedIndex] as TListBoxItemChat).ChatId);\n  end;\nend;\n\nprocedure TFormMain.RenameChat(const ChatId, Text: string);\nbegin\n  for var Control in LayoutChatsBox.Controls do\n    if Control is TFrameChat then\n    begin\n      var Frame := TFrameChat(Control);\n      if Frame.ChatId = ChatId then\n      begin\n        Frame.Title := Text;\n        Break;\n      end;\n    end;\nend;\n\ndestructor TFormMain.Destroy;\nbegin\n  FGPTFuncList.Free;\n  inherited;\nend;\n\nprocedure TFormMain.ButtonNewChatClick(Sender: TObject);\nbegin\n  SelectChat(CreateChat);\n  if Mode = TWindowMode.Compact then\n    CloseMenu;\nend;\n\nprocedure TFormMain.ButtonNewChatCompactClick(Sender: TObject);\nbegin\n  SelectChat(CreateChat);\nend;\n\nprocedure TFormMain.ButtonSettingsClick(Sender: TObject);\nbegin\n  OpenSettings;\nend;\n\nprocedure TFormMain.FOnChatEditClick(Sender: TObject);\nvar\n  Button: TButton absolute Sender;\n  ListItem: TListBoxItemChat;\n  ChatId: string;\nbegin\n  if TFMXObjectHelper.FindNearestParentOfClass<TListBoxItemChat>(Button, ListItem) then\n  begin\n    ChatId := ListItem.ChatId;\n    TDialogService.InputQuery('New Chat name', ['Name'], [ListItem.Text],\n      procedure(const AResult: TModalResult; const AValues: array of string)\n      begin\n        if AResult = mrOk then\n          RenameChat(ChatId, AValues[0]);\n      end);\n  end;\nend;\n\nprocedure TFormMain.FOnChatDeleteClick(Sender: TObject);\nvar\n  Button: TButton absolute Sender;\n  ListItem: TListBoxItemChat;\n  ChatId: string;\nbegin\n  if TFMXObjectHelper.FindNearestParentOfClass<TListBoxItemChat>(Button, ListItem) then\n  begin\n    ChatId := ListItem.ChatId;\n    TDialogService.MessageDialog('Delete \"' + ListItem.Text + '\"?',\n      TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo],\n      TMsgDlgBtn.mbNo, 0,\n      procedure(const AResult: TModalResult)\n      begin\n        if AResult = mrYes then\n          DeleteChat(ChatId);\n      end);\n  end;\nend;\n\nprocedure TFormMain.FOnChatItemClick(Sender: TObject);\nvar\n  Item: TListBoxItemChat absolute Sender;\nbegin\n  if not (Item is TListBoxItemChat) then\n    Exit;\n  SelectChat(Item.ChatId);\n  if Mode = TWindowMode.Compact then\n    CloseMenu;\nend;\n\nprocedure TFormMain.FOnChatItemTap(Sender: TObject; const Point: TPointF);\nbegin\n  FOnChatItemClick(Sender);\nend;\n\nprocedure TFormMain.FOnNeedFuncList(Sender: TObject; out Items: TArray<IChatFunction>);\nbegin\n  Items := FGPTFuncList.ToArray;\nend;\n\nfunction TFormMain.GetSettingsFileName: string;\nbegin\n  if FSettingsFileName.IsEmpty then\n    FSettingsFileName := TPath.Combine(Manager.AppFolder, 'settings.json');\n  Result := FSettingsFileName;\nend;\n\nfunction TFormMain.GetChatsFileName: string;\nbegin\n  if FChatsFileName.IsEmpty then\n    FChatsFileName := TPath.Combine(Manager.AppFolder, 'chats.json');\n  Result := FChatsFileName;\nend;\n\nprocedure TFormMain.Defaults;\nbegin\n  TimeOut := DEFAULT_TIMEOUT;\n  Token := '';\n  Temperature := 1;\n  FrequencyPenalty := 0;\n  PresencePenalty := 0;\n  TopP := 1;\n  Model := '';\n  MaxTokens := 0;\n  MaxTokensQuery := 0;\n  FSelectedChatId := '';\nend;\n\nprocedure TFormMain.LoadSettings;\nbegin\n  try\n    if not TFile.Exists(GetSettingsFileName) then\n      Exit;\n    var JsonText: string := '';\n    try\n      JsonText := TFile.ReadAllText(GetSettingsFileName, TEncoding.UTF8);\n    except\n      Exit;\n    end;\n    if JsonText.IsEmpty then\n      Exit;\n    var JSON := TJSONObject.ParseJSONValue(JsonText);\n    if Assigned(JSON) then\n    try\n      Token := JSON.GetValue('api_key', '');\n      Temperature := JSON.GetValue<Single>('temperature', 1);\n      FrequencyPenalty := JSON.GetValue<Single>('frequency_penalty', 0.0);\n      PresencePenalty := JSON.GetValue<Single>('presence_penalty', 0.0);\n      TopP := JSON.GetValue<Single>('top_p', 1);\n      Model := JSON.GetValue('model', '');\n      MaxTokens := JSON.GetValue<Integer>('max_tokens', 0);\n      MaxTokensQuery := JSON.GetValue<Integer>('max_tokens_query', 0);\n      FSelectedChatId := JSON.GetValue('selected_chat', '');\n      OpenAI.BaseUrl := JSON.GetValue('base_url', OpenAI.BaseUrl);\n      UseFunctions := JSON.GetValue<Boolean>('use_functions', False);\n      AutoExecFuncs := JSON.GetValue<Boolean>('auto_exec_funcs', False);\n      Manager.SendByEnter := JSON.GetValue<Boolean>('send_by_enter', True);\n\n      if JSON.GetValue('on_top', False) then\n        FormStyle := TFormStyle.StayOnTop\n      else\n        FormStyle := TFormStyle.Normal;\n\n      OpenAI.API.ProxySettings := TProxySettings.Create(\n        JSON.GetValue('proxy_host', ''),\n        JSON.GetValue<Integer>('proxy_port', 0),\n        JSON.GetValue('proxy_username', ''),\n        JSON.GetValue('proxy_password', ''));\n      TBitmap.Client.ProxySettings := OpenAI.API.ProxySettings;\n\n      var Headers: TNetHeaders;\n      var JHeaders: TJSONArray;\n      if JSON.TryGetValue<TJSONArray>('custom_headers', JHeaders) then\n        for var JHead in JHeaders do\n          if JHead is TJSONObject then\n          begin\n            var HName: string;\n            var HValue: string;\n            if JHead.TryGetValue('name', HName) and JHead.TryGetValue('value', HValue) then\n              Headers := Headers + [TNetHeader.Create(HName, HValue)];\n          end;\n\n      Width := Max(Trunc(Constraints.MinWidth), JSON.GetValue<Integer>('width', Width));\n      Height := Max(Trunc(Constraints.MinHeight), JSON.GetValue<Integer>('height', Height));\n      Left := JSON.GetValue<Integer>('left', Left);\n      Top := JSON.GetValue<Integer>('top', Top);\n\n      if JSON.GetValue('menubuttons', True) then\n      begin\n        LayoutMenuButtons.Height := 210;\n        ButtonMenuButonsSwitch.RotationAngle := 0;\n      end\n      else\n      begin\n        LayoutMenuButtons.Height := 17;\n        ButtonMenuButonsSwitch.RotationAngle := 180;\n      end;\n\n      OpenAI.API.CustomHeaders := Headers;\n    finally\n      JSON.Free;\n    end;\n  finally\n    if Token.IsEmpty then\n      OpenSettings;\n  end;\nend;\n\nprocedure TFormMain.SaveSettings;\nbegin\n  var JSON := TJSONObject.Create;\n  try\n    JSON.AddPair('api_key', Token);\n    JSON.AddPair('temperature', TJSONNumber.Create(Temperature));\n    JSON.AddPair('selected_chat', FSelectedChatId);\n\n    JSON.AddPair('frequency_penalty', TJSONNumber.Create(FrequencyPenalty));\n    JSON.AddPair('presence_penalty', TJSONNumber.Create(PresencePenalty));\n    JSON.AddPair('top_p', TJSONNumber.Create(TopP));\n    JSON.AddPair('max_tokens', TJSONNumber.Create(MaxTokens));\n    JSON.AddPair('max_tokens_query', TJSONNumber.Create(MaxTokensQuery));\n    JSON.AddPair('model', Model);\n\n    JSON.AddPair('on_top', FormStyle = TFormStyle.StayOnTop);\n    JSON.AddPair('use_functions', UseFunctions);\n    JSON.AddPair('auto_exec_funcs', AutoExecFuncs);\n    JSON.AddPair('send_by_enter', Manager.SendByEnter);\n\n    JSON.AddPair('proxy_host', OpenAI.API.ProxySettings.Host);\n    JSON.AddPair('proxy_port', OpenAI.API.ProxySettings.Port);\n    JSON.AddPair('proxy_username', OpenAI.API.ProxySettings.UserName);\n    JSON.AddPair('proxy_password', OpenAI.API.ProxySettings.Password);\n\n    JSON.AddPair('base_url', OpenAI.BaseUrl);\n\n    JSON.AddPair('width', Width);\n    JSON.AddPair('height', Height);\n    JSON.AddPair('left', Left);\n    JSON.AddPair('top', Top);\n\n    JSON.AddPair('menubuttons', LayoutMenuButtons.Height >= 210);\n\n    if Length(OpenAI.API.CustomHeaders) > 0 then\n    begin\n      var JHeaders := TJSONArray.Create;\n      JSON.AddPair('custom_headers', JHeaders);\n      for var Header in OpenAI.API.CustomHeaders do\n      begin\n        var JHead := TJSONObject.Create;\n        JHead.AddPair('name', Header.Name);\n        JHead.AddPair('value', Header.Value);\n        JHeaders.Add(JHead);\n      end;\n    end;\n\n    TFile.WriteAllText(GetSettingsFileName, JSON.ToJSON, TEncoding.UTF8);\n  except\n    //\n  end;\n  JSON.Free;\nend;\n\nprocedure TFormMain.LoadChats;\nbegin\n  try\n    if not TFile.Exists(GetChatsFileName) then\n      Exit;\n    var JsonText: string := '';\n    try\n      JsonText := TFile.ReadAllText(GetChatsFileName, TEncoding.UTF8);\n    except\n      Exit;\n    end;\n    if JsonText.IsEmpty then\n      Exit;\n    var JSON := TJSONObject.ParseJSONValue(JsonText);\n    if Assigned(JSON) then\n    try\n      var JSONChats: TJSONArray;\n      if JSON.TryGetValue('items', JSONChats) then\n      begin\n        for var JChat in JSONChats do\n          if JChat is TJSONObject then\n            CreateChat(TJSONObject(JChat));\n      end;\n      SelectChat(FSelectedChatId);\n    finally\n      JSON.Free;\n    end;\n  finally\n    if LayoutChatsBox.ControlsCount <= 0 then\n      SelectChat(CreateChat)\n    else if (ListBoxChatList.Count > 0) and (ListBoxChatList.Selected = nil) then\n      SelectChat((ListBoxChatList.ListItems[0] as TListBoxItemChat).ChatId);\n  end;\nend;\n\nprocedure TFormMain.SaveChats;\nbegin\n  var JSON := TJSONObject.Create;\n  try\n    var JSONChats := TJSONArray.Create;\n    JSON.AddPair('items', JSONChats);\n    for var i := 0 to ListBoxChatList.Count - 1 do\n      if ListBoxChatList.ListItems[i] is TListBoxItemChat then\n      begin\n        var Frame := GetChatFrame(TListBoxItemChat(ListBoxChatList.ListItems[i]).ChatId);\n        if Assigned(Frame) then\n          JSONChats.Add(Frame.SaveAsJson)\n        else\n          JSONChats.Add(TListBoxItemChat(ListBoxChatList.ListItems[i]).JSON.Clone as TJSONObject);\n      end;\n    TFile.WriteAllText(GetChatsFileName, JSON.ToJSON, TEncoding.UTF8);\n  except\n    on E: Exception do\n      ShowMessage(E.Message);\n  end;\n  JSON.Free;\nend;\n\nfunction TFormMain.GetChatFrame(const ChatId: string): TFrameChat;\nbegin\n  for var Control in LayoutChatsBox.Controls do\n    if Control is TFrameChat then\n    begin\n      var Frame := TFrameChat(Control);\n      if Frame.ChatId = ChatId then\n        Exit(Frame);\n    end;\n  Result := nil;\nend;\n\nprocedure TFormMain.SelectChat(const ChatId: string);\nbegin\n  FSelectedChatId := ChatId;\n\n  var ItemList: TListBoxItemChat := nil;\n  for var i := 0 to Pred(ListBoxChatList.Count) do\n    if (ListBoxChatList.ListItems[i] as TListBoxItemChat).ChatId = ChatId then\n    begin\n      ListBoxChatList.ListItems[i].IsSelected := True;\n      LabelChatName.Text := ListBoxChatList.ListItems[i].Text;\n      ItemList := TListBoxItemChat(ListBoxChatList.ListItems[i]);\n      Break;\n    end;\n  if not Assigned(ItemList) then\n    Exit;\n\n  var SelFrame: TFrameChat := nil;\n  for var Control in LayoutChatsBox.Controls do\n    if Control is TFrameChat then\n    begin\n      var Frame := TFrameChat(Control);\n      Frame.Visible := Frame.ChatId = ChatId;\n      if Frame.Visible then\n        SelFrame := Frame;\n    end;\n\n  if not Assigned(SelFrame) then\n  begin\n    SelFrame := TFrameChat.Create(LayoutChatsBox);\n    SelFrame.Parent := LayoutChatsBox;\n    SelFrame.Align := TAlignLayout.Client;\n    SelFrame.API := OpenAI;\n    SelFrame.Mode := Mode;\n    SelFrame.OnNeedFuncList := FOnNeedFuncList;\n    SelFrame.OnTitleChanged := FOnChatTitleChanged;\n    if Assigned(ItemList.JSON) then\n      SelFrame.LoadFromJson(ItemList.JSON)\n    else\n    begin\n      SelFrame.ChatId := ItemList.ChatId;\n      SelFrame.Title := ItemList.Text;\n      SelFrame.Temperature := Temperature;\n      SelFrame.TopP := TopP;\n      SelFrame.PresencePenalty := PresencePenalty;\n      SelFrame.FrequencyPenalty := FrequencyPenalty;\n      SelFrame.Model := Model;\n      SelFrame.MaxTokens := MaxTokens;\n      SelFrame.MaxTokensQuery := MaxTokensQuery;\n      SelFrame.UseFunctions := UseFunctions;\n      SelFrame.AutoExecFuncs := AutoExecFuncs;\n    end;\n    SelFrame.MenuItem := ItemList;\n    SelFrame.Visible := True;\n  end;\n  SelFrame.Init;\nend;\n\nprocedure TFormMain.FOnChatTitleChanged(Sender: TObject);\nvar\n  Frame: TFrameChat absolute Sender;\nbegin\n  for var i := 0 to Pred(ListBoxChatList.Count) do\n    if ListBoxChatList.ListItems[i] is TListBoxItemChat then\n      if TListBoxItemChat(ListBoxChatList.ListItems[i]).ChatId = Frame.ChatId then\n      begin\n        ListBoxChatList.ListItems[i].Text := Frame.Title;\n        Break;\n      end;\n  if FSelectedChatId = Frame.ChatId then\n    LabelChatName.Text := Frame.Title;\nend;\n\nprocedure TFormMain.CreateGPTFunctions;\nbegin\n  // FGPTFuncList.Add(TChatFunctionWeather.Create);\n  FGPTFuncList.AddRange(LoadExternalFunctions);\nend;\n\nconstructor TFormMain.Create(AOwner: TComponent);\nbegin\n  inherited;\n  FMode := TWindowMode.Full;\n  //TAnimation.AniFrameRate := 300;\n  ListBoxChatList.AniCalculations.Animation := True;\n  //ListBoxChatList.AniCalculations.Interval := 1;\n  ListBoxChatList.AniCalculations.Averaging := True;\n  ListBoxChatList.DisableDisappear := True;\n  {$IFDEF NEW_MEMO}\n  var Style := StyleBook.Style;\n  if Assigned(Style) then\n  begin\n    var ObjStyle := Style.FindStyleResource('memostyle_clear');\n    if Assigned(ObjStyle) then\n    begin\n      var Sel := ObjStyle.FindStyleResource('selection');\n      if Assigned(Sel) and (Sel is TBrushObject) then\n        TBrushObject(Sel).Brush.Color := $FF1F2027;\n    end;\n    ObjStyle := Style.FindStyleResource('memostyle_code');\n    if Assigned(ObjStyle) then\n    begin\n      var Sel := ObjStyle.FindStyleResource('selection');\n      if Assigned(Sel) and (Sel is TBrushObject) then\n        TBrushObject(Sel).Brush.Color := $FF4E4E53;\n    end;\n    TStyleManager.UpdateScenes;\n  end;\n  {$ENDIF}\n  LayoutOverlay.Visible := True;\n  LayoutOverlay.BringToFront;\n  ListBoxChatList.AniCalculations.Animation := True;\n  FGPTFuncList := TList<IChatFunction>.Create;\n  FOpenAI := TOpenAIComponent.Create(Self);\n  //FOpenAI.DisableBearerPrefix := True;\n  FOpenAI.API.ConnectionTimeout := 30000;\n\n  Manager.OverlayContainer := LayoutOverlay;\n  Manager.GPTFuncList := FGPTFuncList;\n\n  CreateGPTFunctions;\n  Defaults;\n  Clear;\n  UpdateMode;\nend;\n\nprocedure TFormMain.Clear;\nbegin\n  HideClearConfirm;\n  ListBoxChatList.Clear;\n  LayoutChatsBox.BeginUpdate;\n  try\n    while LayoutChatsBox.ControlsCount > 0 do\n      LayoutChatsBox.Controls[0].Free;\n  finally\n    LayoutChatsBox.EndUpdate;\n  end;\nend;\n\nprocedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);\nbegin\n  {$IFDEF MOBILE}\n  if Overlays.Count > 0 then\n  begin\n    var Active := Overlays.Last;\n    Active.Cancel;\n    CanClose := False;\n  end;\n  {$ENDIF}\nend;\n\nprocedure TFormMain.FormConstrainedResize(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Single);\nbegin\n  FormResize(Sender);\nend;\n\nprocedure TFormMain.FormCreate(Sender: TObject);\nbegin\n  LoadSettings;\n  LoadChats;\nend;\n\nprocedure TFormMain.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);\nbegin\n  if (EventInfo.GestureID = sgiRightLeft) then\n  begin\n    Handled := True;\n    ButtonMenuClick(nil);\n  end;\nend;\n\nprocedure TFormMain.OpenSettings;\nbegin\n  LayoutOverlay.BringToFront;\n  TFrameSettings.Execute(LayoutOverlay,\n    procedure(Frame: TFrameSettings)\n    begin\n      Frame.Mode := FMode;\n      Frame.EditToken.Text := Token;\n      Frame.EditOrg.Text := Organization;\n      Frame.TrackBarTemp.Value := Temperature * 10;\n      Frame.TrackBarPP.Value := PresencePenalty * 10;\n      Frame.TrackBarFP.Value := FrequencyPenalty * 10;\n      if MaxTokens <> 0 then\n        Frame.EditMaxTokens.Text := MaxTokens.ToString\n      else\n        Frame.EditMaxTokens.Text := '';\n      if MaxTokensQuery <> 0 then\n        Frame.EditQueryMaxToken.Text := MaxTokensQuery.ToString\n      else\n        Frame.EditQueryMaxToken.Text := '';\n      if (Timeout <> 0) and (Timeout <> DEFAULT_TIMEOUT) then\n        Frame.EditTimeout.Text := Timeout.ToString\n      else\n        Frame.EditTimeout.Text := '';\n      Frame.ComboEditModel.Text := Model;\n      Frame.TrackBarTopP.Value := TopP * 10;\n      Frame.SwitchOnTop.IsChecked := FormStyle = TFormStyle.StayOnTop;\n      Frame.EditProxyServer.Text := OpenAI.API.ProxySettings.Host;\n      Frame.EditProxyPort.Text := OpenAI.API.ProxySettings.Port.ToString;\n      Frame.EditProxyUsername.Text := OpenAI.API.ProxySettings.UserName;\n      Frame.EditProxyPassword.Text := OpenAI.API.ProxySettings.Password;\n      Frame.LabelVersion.Text := 'Version: ' + VersionName;\n      Frame.EditBaseUrl.Text := OpenAI.BaseUrl;\n      Frame.SwitchUseFunctions.IsChecked := UseFunctions;\n      Frame.SwitchAutoExecFuncs.IsChecked := AutoExecFuncs;\n      Frame.SwitchSendEnter.IsChecked := Manager.SendByEnter;\n      for var Head in OpenAI.API.CustomHeaders do\n        Frame.MemoCustomHeaders.Lines.AddPair(Head.Name, Head.Value);\n    end,\n    procedure(Frame: TFrameSettings; Success: Boolean)\n    begin\n      if not Success then\n        Exit;\n      Token := Frame.EditToken.Text;\n      Organization := Frame.EditOrg.Text;\n      Temperature := Frame.TrackBarTemp.Value / 10;\n      PresencePenalty := Frame.TrackBarPP.Value / 10;\n      FrequencyPenalty := Frame.TrackBarFP.Value / 10;\n      TopP := Frame.TrackBarTopP.Value / 10;\n      MaxTokens := StrToIntDef(Frame.EditMaxTokens.Text, 0);\n      MaxTokensQuery := StrToIntDef(Frame.EditQueryMaxToken.Text, 0);\n      Timeout := StrToIntDef(Frame.EditTimeout.Text, DEFAULT_TIMEOUT);\n      Model := Frame.ComboEditModel.Text;\n      if Frame.SwitchOnTop.IsChecked then\n        FormStyle := TFormStyle.StayOnTop\n      else\n        FormStyle := TFormStyle.Normal;\n      OpenAI.API.ProxySettings := TProxySettings.Create(\n        Frame.EditProxyServer.Text,\n        StrToIntDef(Frame.EditProxyPort.Text, 0),\n        Frame.EditProxyUsername.Text,\n        Frame.EditProxyPassword.Text);\n      TBitmap.Client.ProxySettings := OpenAI.API.ProxySettings;\n      OpenAI.BaseUrl := Frame.EditBaseUrl.Text;\n      UseFunctions := Frame.SwitchUseFunctions.IsChecked;\n      AutoExecFuncs := Frame.SwitchAutoExecFuncs.IsChecked;\n      Manager.SendByEnter := Frame.SwitchSendEnter.IsChecked;\n\n      var FHeaders: TNetHeaders;\n      try\n        for var Line in Frame.MemoCustomHeaders.Lines do\n        begin\n          var Pair := Line.Split([':']);\n          if Length(Pair) = 2 then\n          begin\n            SetLength(FHeaders, Length(FHeaders) + 1);\n            FHeaders[High(FHeaders)] := TNetHeader.Create(Pair[0], Pair[1]);\n          end;\n        end;\n      except\n        //\n      end;\n      OpenAI.API.CustomHeaders := FHeaders;\n\n      if OpenAI.BaseUrl.IsEmpty then\n        OpenAI.BaseUrl := TOpenAIAPI.URL_BASE;\n      {$IFDEF MSWINDOWS}\n      SetWindowColorModeAsSystem;\n      {$ENDIF}\n      SaveSettings;\n    end);\nend;\n\nprocedure TFormMain.FormResize(Sender: TObject);\nbegin\n  LayoutMenuContainer.Width := Min(320, ClientWidth - 45);\n  if ClientWidth < 768 then\n    Mode := TWindowMode.Compact\n  else\n    Mode := TWindowMode.Full;\nend;\n\nprocedure TFormMain.FormSaveState(Sender: TObject);\nbegin\n  SaveChats;\n  SaveSettings;\nend;\n\nprocedure TFormMain.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect);\nbegin\n  TAnimator.AnimateFloat(Self, 'Padding.Bottom', 0);\n  TAnimator.AnimateFloat(LayoutOverlay, 'Margins.Bottom', 0);\n  // Padding.Bottom := 0;\n  // LayoutOverlay.Margins.Bottom := 0;\nend;\n\nprocedure TFormMain.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect);\nbegin\n  TAnimator.AnimateFloat(Self, 'Padding.Bottom', Bounds.Height);\n  TAnimator.AnimateFloat(LayoutOverlay, 'Margins.Bottom', Bounds.Height);\n  // LayoutOverlay.Margins.Bottom := Bounds.Height;\n  // Padding.Bottom := Bounds.Height;\nend;\n\nprocedure TFormMain.UpdateMode;\nbegin\n  for var Control in LayoutChatsBox.Controls do\n    if Control is TFrameChat then\n    begin\n      var Frame := TFrameChat(Control);\n      Frame.Mode := FMode;\n    end;\n  for var Control in LayoutOverlay.Controls do\n    if Control is TFrameOveraly then\n    begin\n      var Frame := TFrameOveraly(Control);\n      Frame.Mode := FMode;\n    end;\n  case FMode of\n    TWindowMode.Compact:\n      begin\n        RectangleMenu.Align := TAlignLayout.Client;\n        RectangleMenu.Parent := LayoutMenuContainer;\n        LayoutHead.Visible := True;\n        ButtonCloseMenu.Visible := True;\n      end;\n    TWindowMode.Full:\n      begin\n        RectangleMenu.Align := TAlignLayout.Left;\n        RectangleMenu.Width := 260;\n        RectangleMenu.Parent := Self;\n        LayoutHead.Visible := False;\n        ButtonCloseMenu.Visible := False;\n        LayoutMenuContent.Visible := False;\n        RectangleMenu.SendToBack;\n      end;\n  end;\nend;\n\nprocedure TFormMain.SetAutoExecFuncs(const Value: Boolean);\nbegin\n  FAutoExecFuncs := Value;\nend;\n\nprocedure TFormMain.SetBaseUrl(const Value: string);\nbegin\n  FBaseUrl := Value;\n  OpenAI.BaseUrl := FBaseUrl;\nend;\n\nprocedure TFormMain.SetFrequencyPenalty(const Value: Single);\nbegin\n  FFrequencyPenalty := Value;\nend;\n\nprocedure TFormMain.SetMaxTokens(const Value: Integer);\nbegin\n  FMaxTokens := Value;\nend;\n\nprocedure TFormMain.SetMaxTokensQuery(const Value: Integer);\nbegin\n  FMaxTokensQuery := Value;\nend;\n\nprocedure TFormMain.SetMode(const Value: TWindowMode);\nbegin\n  if FMode = Value then\n    Exit;\n  FMode := Value;\n  UpdateMode;\nend;\n\nprocedure TFormMain.SetModel(const Value: string);\nbegin\n  FModel := Value;\nend;\n\nprocedure TFormMain.SetOrganization(const Value: string);\nbegin\n  FOrganization := Value;\n  OpenAI.Organization := FOrganization;\nend;\n\nprocedure TFormMain.SetPresencePenalty(const Value: Single);\nbegin\n  FPresencePenalty := Value;\nend;\n\nprocedure TFormMain.SetTemperature(const Value: Single);\nbegin\n  FTemperature := Value;\nend;\n\nprocedure TFormMain.SetTimeout(const Value: Integer);\nbegin\n  FTimeout := Value;\n  if Value <= 0 then\n    FTimeout := DEFAULT_TIMEOUT;\n  FOpenAI.API.ResponseTimeout := FTimeout;\n  FOpenAI.API.SendTimeout := FTimeout;\nend;\n\nprocedure TFormMain.SetToken(const Value: string);\nbegin\n  FToken := Value;\n  FOpenAI.Token := FToken;\nend;\n\nprocedure TFormMain.SetTopP(const Value: Single);\nbegin\n  FTopP := Value;\nend;\n\nprocedure TFormMain.SetUseFunctions(const Value: Boolean);\nbegin\n  FUseFunctions := Value;\nend;\n\n{ TListBoxItemChat }\n\nconstructor TListBoxItemChat.Create(AOwner: TComponent);\nbegin\n  inherited;\n  JSON := nil;\nend;\n\ndestructor TListBoxItemChat.Destroy;\nbegin\n  if Assigned(JSON) then\n    JSON.Free;\n  inherited;\nend;\n\nprocedure TListBoxItemChat.Paint;\nbegin\n  var Canv: ISkCanvas;\n  if Supports(Canvas, ISkCanvas, Canv) then\n    Canv.Skew(1, 0.2);\n  Canvas.SetMatrix(TMatrix.CreateScaling(1, 2));\n  inherited;\n  Canvas.SetMatrix(TMatrix.CreateScaling(1, 2));\nend;\n\ninitialization\n  {$IFDEF DEBUG}\n  ReportMemoryLeaksOnShutdown := True;\n  {$ENDIF}\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Manager.dfm",
    "content": "object Manager: TManager\n  Height = 480\n  Width = 640\n  object SVGIconImageList: TSVGIconImageList\n    Source = <\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 0'\n        SVGText = \n          '<?xml version=\"1.0\" ?><!DOCTYPE svg  PUBLIC '#39'-//W3C//DTD SVG 1.1' +\n          '//EN'#39'  '#39'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'#39'><svg e' +\n          'nable-background=\"new 0 0 80 80\" height=\"80px\" id=\"Icons\" versio' +\n          'n=\"1.1\" viewBox=\"0 0 80 80\" width=\"80px\" xml:space=\"preserve\" xm' +\n          'lns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/' +\n          '1999/xlink\"><polygon points=\"61,37 43,37 43,19 37,19 37,37 19,37' +\n          ' 19,43 37,43 37,61 43,61 43,43 61,43 \"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 16\n          end>\n        IconName = 'Item 1'\n        SVGText = \n          '<svg height=\"48\" viewBox=\"0 0 48 48\" width=\"48\" xmlns=\"http://ww' +\n          'w.w3.org/2000/svg\"><path d=\"M0 0h48v48H0V0z\" fill=\"none\"/><path ' +\n          'd=\"M40 4H8C5.79 4 4 5.79 4 8v36l8-8h28c2.21 0 4-1.79 4-4V8c0-2.2' +\n          '1-1.79-4-4-4zm0 28H12l-4 4V8h32v24z\"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 2'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg height=\"48\" viewBox=\"0 0 48 48\" width' +\n          '=\"48\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h48v48h-48' +\n          'z\" fill=\"none\"/><path d=\"M6 36h36v-4h-36v4zm0-10h36v-4h-36v4zm0-' +\n          '14v4h36v-4h-36z\"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 3'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg viewBox=\"0 0 32 32\" xmlns=\"http://www' +\n          '.w3.org/2000/svg\"><defs><style>.cls-1{fill:none;stroke:#000;stro' +\n          'ke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style' +\n          '></defs><title/><g id=\"cross\"><line class=\"cls-1\" x1=\"7\" x2=\"25\"' +\n          ' y1=\"7\" y2=\"25\"/><line class=\"cls-1\" x1=\"7\" x2=\"25\" y1=\"25\" y2=\"' +\n          '7\"/></g></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 4'\n        SVGText = \n          '<?xml version=\"1.0\" ?><!DOCTYPE svg  PUBLIC '#39'-//W3C//DTD SVG 1.1' +\n          '//EN'#39'  '#39'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'#39'><svg e' +\n          'nable-background=\"new 0 0 512 512\" height=\"512px\" id=\"Layer_1\" v' +\n          'ersion=\"1.1\" viewBox=\"0 0 512 512\" width=\"512px\" xml:space=\"pres' +\n          'erve\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www' +\n          '.w3.org/1999/xlink\"><g><g><path d=\"M256,144c-61.75,0-112,50.25-1' +\n          '12,112s50.25,112,112,112s112-50.25,112-112S317.75,144,256,144z M' +\n          '256,336    c-44.188,0-80-35.812-80-80c0-44.188,35.812-80,80-80c4' +\n          '4.188,0,80,35.812,80,80C336,300.188,300.188,336,256,336z M256,11' +\n          '2    c8.833,0,16-7.167,16-16V64c0-8.833-7.167-16-16-16s-16,7.167' +\n          '-16,16v32C240,104.833,247.167,112,256,112z M256,400    c-8.833,0' +\n          '-16,7.167-16,16v32c0,8.833,7.167,16,16,16s16-7.167,16-16v-32C272' +\n          ',407.167,264.833,400,256,400z M380.438,154.167    l22.625-22.625' +\n          'c6.25-6.25,6.25-16.375,0-22.625s-16.375-6.25-22.625,0l-22.625,22' +\n          '.625c-6.25,6.25-6.25,16.375,0,22.625    S374.188,160.417,380.438' +\n          ',154.167z M131.562,357.834l-22.625,22.625c-6.25,6.249-6.25,16.37' +\n          '4,0,22.624s16.375,6.25,22.625,0    l22.625-22.624c6.25-6.271,6.2' +\n          '5-16.376,0-22.625C147.938,351.583,137.812,351.562,131.562,357.83' +\n          '4z M112,256    c0-8.833-7.167-16-16-16H64c-8.833,0-16,7.167-16,1' +\n          '6s7.167,16,16,16h32C104.833,272,112,264.833,112,256z M448,240h-3' +\n          '2    c-8.833,0-16,7.167-16,16s7.167,16,16,16h32c8.833,0,16-7.167' +\n          ',16-16S456.833,240,448,240z M131.541,154.167    c6.251,6.25,16.3' +\n          '76,6.25,22.625,0c6.251-6.25,6.251-16.375,0-22.625l-22.625-22.625' +\n          'c-6.25-6.25-16.374-6.25-22.625,0    c-6.25,6.25-6.25,16.375,0,22' +\n          '.625L131.541,154.167z M380.459,357.812c-6.271-6.25-16.376-6.25-2' +\n          '2.625,0    c-6.251,6.25-6.271,16.375,0,22.625l22.625,22.625c6.24' +\n          '9,6.25,16.374,6.25,22.624,0s6.25-16.375,0-22.625L380.459,357.812' +\n          'z\" fill=\"#1D1D1B\"/></g></g></svg>'\n        FixedColor = claWhite\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 7'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg fill=\"none\" height=\"15\" viewBox=\"0 0 ' +\n          '15 15\" width=\"15\" xmlns=\"http://www.w3.org/2000/svg\"><path clip-' +\n          'rule=\"evenodd\" d=\"M8.69666 0.040354C8.90859 0.131038 9.03105 0.3' +\n          '54856 8.99315 0.582235L8.09019 6.00001H12.4999C12.6893 6.00001 1' +\n          '2.8625 6.10701 12.9472 6.2764C13.0318 6.44579 13.0136 6.6485 12.' +\n          '8999 6.8L6.89997 14.8C6.76166 14.9844 6.5152 15.0503 6.30327 14.' +\n          '9596C6.09134 14.869 5.96888 14.6451 6.00678 14.4178L6.90974 8.99' +\n          '999H2.49999C2.31061 8.99999 2.13747 8.89299 2.05278 8.7236C1.968' +\n          '08 8.55421 1.98636 8.3515 2.09999 8.2L8.09996 0.200037C8.23827 0' +\n          '.0156255 8.48473 -0.0503301 8.69666 0.040354ZM3.49999 8H7.49996C' +\n          '7.64694 8 7.78647 8.06466 7.88147 8.17681C7.97647 8.28895 8.0173' +\n          '2 8.43722 7.99316 8.58219L7.33026 12.5596L11.4999 7H7.49996C7.35' +\n          '299 7 7.21346 6.93534 7.11846 6.82319C7.02346 6.71105 6.98261 6.' +\n          '56278 7.00677 6.41781L7.66967 2.44042L3.49999 8Z\" fill=\"currentC' +\n          'olor\" fill-rule=\"evenodd\"/></svg>'\n        FixedColor = claWhite\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 8'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg viewBox=\"0 0 32 32\" xmlns=\"http://www' +\n          '.w3.org/2000/svg\"><defs><style>.cls-1{fill:#101820;}</style></de' +\n          'fs><title/><g data-name=\"Layer 58\" id=\"Layer_58\"><path class=\"cl' +\n          's-1\" d=\"M16,26a2,2,0,1,1,2-2A2,2,0,0,1,16,26Zm0-2Z\"/><path class' +\n          '=\"cls-1\" d=\"M16,20a1,1,0,0,1-1-1V11a1,1,0,0,1,2,0v8A1,1,0,0,1,16' +\n          ',20Z\"/><path class=\"cls-1\" d=\"M27.78,30H4.22a3.19,3.19,0,0,1-2.7' +\n          '7-1.57,3.13,3.13,0,0,1-.06-3.13L13.17,3.67a3.23,3.23,0,0,1,5.66,' +\n          '0L30.61,25.3a3.13,3.13,0,0,1-.06,3.13A3.19,3.19,0,0,1,27.78,30ZM' +\n          '16,4a1.18,1.18,0,0,0-1.07.63L3.15,26.25a1.12,1.12,0,0,0,0,1.16,1' +\n          '.19,1.19,0,0,0,1,.59H27.78a1.19,1.19,0,0,0,1-.59,1.12,1.12,0,0,0' +\n          ',0-1.16L17.07,4.63A1.18,1.18,0,0,0,16,4Z\"/></g></svg>'\n        FixedColor = claWhite\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Width = 19\n            Height = 15\n          end>\n        IconName = 'Item 9'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg viewBox=\"0 0 640 512\" xmlns=\"http://w' +\n          'ww.w3.org/2000/svg\"><path d=\"M524.531,69.836a1.5,1.5,0,0,0-.764-' +\n          '.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.9' +\n          '1,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,' +\n          '0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A48' +\n          '3.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39' +\n          '.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,' +\n          '1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.' +\n          '676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,3' +\n          '21.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c' +\n          '3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c9' +\n          '6.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2' +\n          '.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,3' +\n          '01.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.0' +\n          '55,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048' +\n          ',486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.72' +\n          '9,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972' +\n          ',0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.66' +\n          '5,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,22' +\n          '2.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388' +\n          '.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470' +\n          '.715,310.993,447.538,337.58,417.871,337.58Z\"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 16\n          end>\n        IconName = 'Item 10'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg viewBox=\"0 0 256 256\" xmlns=\"http://w' +\n          'ww.w3.org/2000/svg\"><rect fill=\"none\" height=\"256\" width=\"256\"/>' +\n          '<line fill=\"none\" stroke=\"#000\" stroke-linecap=\"round\" stroke-li' +\n          'nejoin=\"round\" stroke-width=\"16\" x1=\"216\" x2=\"40\" y1=\"56\" y2=\"56' +\n          '\"/><line fill=\"none\" stroke=\"#000\" stroke-linecap=\"round\" stroke' +\n          '-linejoin=\"round\" stroke-width=\"16\" x1=\"104\" x2=\"104\" y1=\"104\" y' +\n          '2=\"168\"/><line fill=\"none\" stroke=\"#000\" stroke-linecap=\"round\" ' +\n          'stroke-linejoin=\"round\" stroke-width=\"16\" x1=\"152\" x2=\"152\" y1=\"' +\n          '104\" y2=\"168\"/><path d=\"M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8' +\n          '-8V56\" fill=\"none\" stroke=\"#000\" stroke-linecap=\"round\" stroke-l' +\n          'inejoin=\"round\" stroke-width=\"16\"/><path d=\"M168,56V40a16,16,0,0' +\n          ',0-16-16H104A16,16,0,0,0,88,40V56\" fill=\"none\" stroke=\"#000\" str' +\n          'oke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><' +\n          '/svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 16\n          end>\n        IconName = 'Item 11'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg height=\"24\" viewBox=\"0 0 24 24\" width' +\n          '=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19,14 L19,19 ' +\n          'C19,20.1045695 18.1045695,21 17,21 L5,21 C3.8954305,21 3,20.1045' +\n          '695 3,19 L3,7 C3,5.8954305 3.8954305,5 5,5 L10,5 L10,7 L5,7 L5,1' +\n          '9 L17,19 L17,14 L19,14 Z M18.9971001,6.41421356 L11.7042068,13.7' +\n          '071068 L10.2899933,12.2928932 L17.5828865,5 L12.9971001,5 L12.99' +\n          '71001,3 L20.9971001,3 L20.9971001,11 L18.9971001,11 L18.9971001,' +\n          '6.41421356 Z\" fill-rule=\"evenodd\"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 12'\n        SVGText = \n          '<?xml version=\"1.0\" ?><!DOCTYPE svg  PUBLIC '#39'-//W3C//DTD SVG 1.1' +\n          '//EN'#39'  '#39'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'#39'><svg e' +\n          'nable-background=\"new 0 0 80 80\" height=\"80px\" id=\"Icons\" versio' +\n          'n=\"1.1\" viewBox=\"0 0 80 80\" width=\"80px\" xml:space=\"preserve\" xm' +\n          'lns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/' +\n          '1999/xlink\"><g><polygon points=\"54.849,26.565 36.464,44.95 25.15' +\n          '1,33.636 20.908,37.879 36.464,53.435 59.092,30.808  \"/></g></svg' +\n          '>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 13'\n        SVGText = \n          '<?xml version=\"1.0\" ?><!DOCTYPE svg  PUBLIC '#39'-//W3C//DTD SVG 1.1' +\n          ' Tiny//EN'#39'  '#39'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.d' +\n          'td'#39'><svg baseProfile=\"tiny\" height=\"32px\" version=\"1.1\" viewBox=' +\n          '\"0 0 32 32\" width=\"32px\" xml:space=\"preserve\" xmlns=\"http://www.' +\n          'w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g i' +\n          'd=\"Guides__x26__Forms\"/><g id=\"Icons\"><polygon points=\"21.657,8.' +\n          '929 16,14.586 10.343,8.929 8.929,10.343 14.586,16 8.929,21.657 1' +\n          '0.343,23.071 16,17.414 21.657,23.071    23.071,21.657 17.414,16 ' +\n          '23.071,10.343  \"/></g></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 16\n          end>\n        IconName = 'Item 14'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg height=\"48\" viewBox=\"0 0 48 48\" width' +\n          '=\"48\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h48v48h-48' +\n          'z\" fill=\"none\"/><path d=\"M38.86 25.95c.08-.64.14-1.29.14-1.95s-.' +\n          '06-1.31-.14-1.95l4.23-3.31c.38-.3.49-.84.24-1.28l-4-6.93c-.25-.4' +\n          '3-.77-.61-1.22-.43l-4.98 2.01c-1.03-.79-2.16-1.46-3.38-1.97l-.75' +\n          '-5.3c-.09-.47-.5-.84-1-.84h-8c-.5 0-.91.37-.99.84l-.75 5.3c-1.22' +\n          '.51-2.35 1.17-3.38 1.97l-4.98-2.01c-.45-.17-.97 0-1.22.43l-4 6.9' +\n          '3c-.25.43-.14.97.24 1.28l4.22 3.31c-.08.64-.14 1.29-.14 1.95s.06' +\n          ' 1.31.14 1.95l-4.22 3.31c-.38.3-.49.84-.24 1.28l4 6.93c.25.43.77' +\n          '.61 1.22.43l4.98-2.01c1.03.79 2.16 1.46 3.38 1.97l.75 5.3c.08.47' +\n          '.49.84.99.84h8c.5 0 .91-.37.99-.84l.75-5.3c1.22-.51 2.35-1.17 3.' +\n          '38-1.97l4.98 2.01c.45.17.97 0 1.22-.43l4-6.93c.25-.43.14-.97-.24' +\n          '-1.28l-4.22-3.31zm-14.86 5.05c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.' +\n          '13 7 7-3.13 7-7 7z\"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 16\n          end>\n        IconName = 'Item 15'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg viewBox=\"0 0 96 96\" xmlns=\"http://www' +\n          '.w3.org/2000/svg\"><title/><g><path d=\"M66,84H54V42a5.9966,5.9966' +\n          ',0,0,0-6-6H36a6,6,0,0,0,0,12h6V84H30a6,6,0,0,0,0,12H66a6,6,0,0,0' +\n          ',0-12Z\"/><path d=\"M48,24A12,12,0,1,0,36,12,12.0119,12.0119,0,0,0' +\n          ',48,24Z\"/></g></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 16'\n        SVGText = \n          '<?xml version=\"1.0\" ?><!DOCTYPE svg  PUBLIC '#39'-//W3C//DTD SVG 1.1' +\n          '//EN'#39'  '#39'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'#39'><svg e' +\n          'nable-background=\"new 0 0 64 64\" height=\"64px\" id=\"Layer_1\" vers' +\n          'ion=\"1.1\" viewBox=\"0 0 64 64\" width=\"64px\" xml:space=\"preserve\" ' +\n          'xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.or' +\n          'g/1999/xlink\"><path d=\"M48,39.26c-2.377,0-4.515,1-6.033,2.596L24' +\n          '.23,33.172c0.061-0.408,0.103-0.821,0.103-1.246c0-0.414-0.04-0.81' +\n          '8-0.098-1.215  l17.711-8.589c1.519,1.609,3.667,2.619,6.054,2.619' +\n          'c4.602,0,8.333-3.731,8.333-8.333c0-4.603-3.731-8.333-8.333-8.333' +\n          '  s-8.333,3.73-8.333,8.333c0,0.414,0.04,0.817,0.098,1.215l-17.71' +\n          '1,8.589c-1.519-1.609-3.666-2.619-6.054-2.619  c-4.603,0-8.333,3.' +\n          '731-8.333,8.333c0,4.603,3.73,8.333,8.333,8.333c2.377,0,4.515-1,6' +\n          '.033-2.596l17.737,8.684  c-0.061,0.407-0.103,0.821-0.103,1.246c0' +\n          ',4.603,3.731,8.333,8.333,8.333s8.333-3.73,8.333-8.333C56.333,42.' +\n          '99,52.602,39.26,48,39.26  z\"/></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 24\n          end>\n        IconName = 'Item 17'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg style=\"enable-background:new 0 0 24 2' +\n          '4;\" version=\"1.1\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" xmlns' +\n          '=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/199' +\n          '9/xlink\"><g id=\"info\"/><g id=\"icons\"><g id=\"save\"><path d=\"M11.2' +\n          ',16.6c0.4,0.5,1.2,0.5,1.6,0l6-6.3C19.3,9.8,18.8,9,18,9h-4c0,0,0.' +\n          '2-4.6,0-7c-0.1-1.1-0.9-2-2-2c-1.1,0-1.9,0.9-2,2    c-0.2,2.3,0,7' +\n          ',0,7H6c-0.8,0-1.3,0.8-0.8,1.4L11.2,16.6z\"/><path d=\"M19,19H5c-1.' +\n          '1,0-2,0.9-2,2v0c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1v0C21,19.9,20.' +\n          '1,19,19,19z\"/></g></g></svg>'\n        Opacity = 1.000000000000000000\n      end\n      item\n        MultiResBitmap = <\n          item\n            Size = 16\n          end>\n        IconName = 'Item 18'\n        SVGText = \n          '<?xml version=\"1.0\" ?><svg fill=\"none\" height=\"24\" stroke-width=' +\n          '\"1.5\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/20' +\n          '00/svg\"><path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-l' +\n          'inecap=\"round\" stroke-linejoin=\"round\"/></svg>'\n        Opacity = 1.000000000000000000\n      end>\n    Destination = <\n      item\n        Layers = <\n          item\n            Name = 'Item 0'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 1'\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 2'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 3'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 4'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 7'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 8'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 9'\n            SourceRect.Right = 19.000000000000000000\n            SourceRect.Bottom = 19.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 10'\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 11'\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 12'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 13'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 14'\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 15'\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 16'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 17'\n            SourceRect.Right = 24.000000000000000000\n            SourceRect.Bottom = 24.000000000000000000\n          end>\n      end\n      item\n        Layers = <\n          item\n            Name = 'Item 18'\n          end>\n      end>\n    Size = 24\n    Left = 160\n    Top = 18\n  end\n  object ActionListMain: TActionList\n    Left = 48\n    Top = 16\n    object ShowShareSheetAction: TShowShareSheetAction\n      Category = 'Media Library'\n      OnBeforeExecute = ShowShareSheetActionBeforeExecute\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.Manager.pas",
    "content": "﻿unit ChatGPT.Manager;\n\ninterface\n\nuses\n  System.SysUtils, System.Classes, System.Actions, FMX.Controls, FMX.ActnList,\n  FMX.StdActns, FMX.Graphics, FMX.MediaLibrary.Actions, System.ImageList,\n  System.Generics.Collections, FMX.ImgList, FMX.SVGIconImageList,\n  OpenAI.Chat.Functions;\n\ntype\n  TModelData = record\n    Name: string;\n    Context: Integer;\n    Tokens: Integer;\n    DataDate: string;\n    Legacy: Boolean;\n    class function Create(const Name: string; Context, Tokens: Integer; const DataDate: string; Legacy: Boolean = False): TModelData; static;\n  end;\n\n  TManager = class(TDataModule)\n    SVGIconImageList: TSVGIconImageList;\n    ActionListMain: TActionList;\n    ShowShareSheetAction: TShowShareSheetAction;\n    procedure ShowShareSheetActionBeforeExecute(Sender: TObject);\n  private\n    FShareBitmap: TBitmap;\n    FCanShare: Boolean;\n    FAppFolder: string;\n    FImagesCacheFolder: string;\n    FAudioCacheFolder: string;\n    FSendByEnter: Boolean;\n    FOverlayContainer: TControl;\n    FGPTFuncList: TList<IChatFunction>;\n    FActualModels: TArray<TModelData>;\n    function GetCanShare: Boolean;\n    procedure CreateAppFolder;\n    procedure SetSendByEnter(const Value: Boolean);\n    procedure SetOverlayContainer(const Value: TControl);\n    procedure SetGPTFuncList(const Value: TList<IChatFunction>);\n    procedure SetActualModels(const Value: TArray<TModelData>);\n    procedure FillActualModels;\n  public\n    procedure ShareBitmap(Bitmap: TBitmap);\n    property CanShare: Boolean read FCanShare;\n    property AudioCacheFolder: string read FAudioCacheFolder;\n    property ImagesCacheFolder: string read FImagesCacheFolder;\n    property AppFolder: string read FAppFolder;\n    property SendByEnter: Boolean read FSendByEnter write SetSendByEnter;\n    property OverlayContainer: TControl read FOverlayContainer write SetOverlayContainer;\n    property GPTFuncList: TList<IChatFunction> read FGPTFuncList write SetGPTFuncList;\n    property ActualModels: TArray<TModelData> read FActualModels write SetActualModels;\n    constructor Create(AOwner: TComponent); override;\n  end;\n\nconst\n  ActualModels: TArray<string> = [\n    'gpt-3.5-turbo-0613',\n    'gpt-3.5-turbo-0301',\n    'gpt-3.5-turbo-1106',\n    'gpt-3.5-turbo',\n    'gpt-3.5-turbo-16k',\n    'gpt-4-0613',\n    'gpt-4-0314',\n    'gpt-4',\n    'gpt-4-32k-0613',\n    'gpt-4-32k-0314',\n    'gpt-4-32k'];\n  Legacy = True;\n\nvar\n  Manager: TManager;\n\nimplementation\n\n{%CLASSGROUP 'FMX.Controls.TControl'}\n\nuses\n  FMX.platform, FMX.Dialogs, FMX.MediaLibrary, System.IOUtils, HGM.FMX.Image;\n\n{$R *.dfm}\n\nconstructor TManager.Create(AOwner: TComponent);\nbegin\n  inherited;\n  FCanShare := GetCanShare;\n\n  {$IFDEF IOS}\n  FAppFolder := TPath.Combine(TPath.GetDocumentsPath, 'ChatGPT');\n  {$ELSE}\n  FAppFolder := TPath.Combine(TPath.GetHomePath, 'ChatGPT');\n  {$ENDIF}\n\n  FImagesCacheFolder := TPath.Combine(FAppFolder, 'images');\n  FAudioCacheFolder := TPath.Combine(FAppFolder, 'audios');\n  TBitmap.CachePath := FImagesCacheFolder;\n  CreateAppFolder;\n  FillActualModels;\nend;\n\nprocedure TManager.FillActualModels;\nbegin\n  FActualModels := [\n    TModelData.Create('gpt-3.5-turbo-0613', 4096, 4096, 'Sep 2021', Legacy),\n    TModelData.Create('gpt-3.5-turbo-0301', 4096, 4096, 'Sep 2021', Legacy),\n    TModelData.Create('gpt-3.5-turbo-1106', 16385, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-3.5-turbo', 4096, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-3.5-turbo-16k', 16385, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-4-0613', 8192, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-4-0314', 8192, 4096, 'Sep 2021', Legacy),\n    TModelData.Create('gpt-4', 8192, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-4-32k-0613', 32768, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-4-32k-0314', 32768, 4096, 'Sep 2021', Legacy),\n    TModelData.Create('gpt-4-32k', 32768, 4096, 'Sep 2021'),\n    TModelData.Create('gpt-4-1106-preview', 128000, 4096, 'Apr 2023'),\n    TModelData.Create('gpt-4-vision-preview', 128000, 4096, 'Apr 2023')\n    ];\nend;\n\nprocedure TManager.CreateAppFolder;\nbegin\n  try\n    TDirectory.CreateDirectory(FAppFolder);\n    TDirectory.CreateDirectory(FImagesCacheFolder);\n    TDirectory.CreateDirectory(FAudioCacheFolder);\n  except\n    on E: Exception do\n      ShowMessage('Error: ' + E.Message);\n  end;\nend;\n\nprocedure TManager.SetActualModels(const Value: TArray<TModelData>);\nbegin\n  FActualModels := Value;\nend;\n\nprocedure TManager.SetGPTFuncList(const Value: TList<IChatFunction>);\nbegin\n  FGPTFuncList := Value;\nend;\n\nprocedure TManager.SetOverlayContainer(const Value: TControl);\nbegin\n  FOverlayContainer := Value;\nend;\n\nprocedure TManager.SetSendByEnter(const Value: Boolean);\nbegin\n  FSendByEnter := Value;\nend;\n\nprocedure TManager.ShareBitmap(Bitmap: TBitmap);\nbegin\n  FShareBitmap := Bitmap;\n  ShowShareSheetAction.Execute;\nend;\n\nprocedure TManager.ShowShareSheetActionBeforeExecute(Sender: TObject);\nbegin\n  ShowShareSheetAction.Bitmap.Assign(FShareBitmap);\nend;\n\nfunction TManager.GetCanShare: Boolean;\nbegin\n  var FSharingService: IFMXShareSheetActionsService;\n  Result := TPlatformServices.Current.SupportsPlatformService(IFMXShareSheetActionsService, FSharingService);\nend;\n\n{ TModelData }\n\nclass function TModelData.Create(const Name: string; Context, Tokens: Integer; const DataDate: string; Legacy: Boolean): TModelData;\nbegin\n  Result.Name := Name;\n  Result.Context := Context;\n  Result.Tokens := Tokens;\n  Result.DataDate := DataDate;\n  Result.Legacy := Legacy;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Overlay.fmx",
    "content": "object FrameOveraly: TFrameOveraly\n  Size.Width = 689.000000000000000000\n  Size.Height = 469.000000000000000000\n  Size.PlatformDefault = False\n  object RectangleBG: TRectangle\n    Align = Contents\n    Fill.Color = xBF565869\n    Locked = True\n    Size.Width = 689.000000000000000000\n    Size.Height = 469.000000000000000000\n    Size.PlatformDefault = False\n    Stroke.Kind = None\n  end\nend\n"
  },
  {
    "path": "ChatGPT.Overlay.pas",
    "content": "﻿unit ChatGPT.Overlay;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Classes, FMX.Objects, System.Generics.Collections;\n\ntype\n  TFrameOveraly = class(TFrame)\n    RectangleBG: TRectangle;\n  private\n    FMode: TWindowMode;\n  protected\n    procedure SetMode(const Value: TWindowMode); virtual;\n  public\n    property Mode: TWindowMode read FMode write SetMode;\n    procedure Cancel; virtual; abstract;\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n  end;\n\nvar\n  Overlays: TList<TFrameOveraly>;\n\nimplementation\n\n{$R *.fmx}\n\n{ TFrameOveraly }\n\nconstructor TFrameOveraly.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Overlays.Add(Self);\n  Name := '';\n  SetFocus;\nend;\n\ndestructor TFrameOveraly.Destroy;\nbegin\n  Overlays.Remove(Self);\n  inherited;\nend;\n\nprocedure TFrameOveraly.SetMode(const Value: TWindowMode);\nbegin\n  FMode := Value;\nend;\n\ninitialization\n  Overlays := TList<TFrameOveraly>.Create;\n\nfinalization\n  Overlays.Free;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.Settings.fmx",
    "content": "inherited FrameSettings: TFrameSettings\n  Size.Width = 906.000000000000000000\n  Size.Height = 804.000000000000000000\n  OnResize = FrameResize\n  OnResized = FrameResize\n  inherited RectangleBG: TRectangle\n    Size.Width = 906.000000000000000000\n    Size.Height = 804.000000000000000000\n    OnClick = RectangleBGClick\n  end\n  object LayoutClient: TLayout\n    Align = Center\n    Padding.Left = 10.000000000000000000\n    Padding.Top = 10.000000000000000000\n    Padding.Right = 10.000000000000000000\n    Padding.Bottom = 10.000000000000000000\n    Size.Width = 440.000000000000000000\n    Size.Height = 772.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleFrame: TRectangle\n      Align = Contents\n      Fill.Color = xFF202123\n      Locked = True\n      Size.Width = 440.000000000000000000\n      Size.Height = 772.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n    end\n    object VertScrollBoxContent: TVertScrollBox\n      Align = Client\n      Padding.Right = 10.000000000000000000\n      Padding.Bottom = 10.000000000000000000\n      Margins.Right = -10.000000000000000000\n      Size.Width = 430.000000000000000000\n      Size.Height = 706.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 1\n      Viewport.Width = 414.000000000000000000\n      Viewport.Height = 706.000000000000000000\n      object EditToken: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 8\n        Position.Y = 300.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'sk-rBYbw....'\n        object ClearEditButton2: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path1: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label1: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 10.000000000000000000\n        Position.Y = 10.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 25.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 20.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.HorzAlign = Center\n        TextSettings.WordWrap = False\n        Text = 'Settings'\n        TabOrder = 59\n      end\n      object Label3: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1412.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Temperature (default: 1.0)'\n        TabOrder = 33\n        TabStop = False\n      end\n      object Label4: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1464.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'The higher, the more creativity will be in the answers (less acc' +\n          'urate)'\n        TabOrder = 36\n        TabStop = False\n      end\n      object Label5: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 273.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Token (required)'\n        TabOrder = 7\n        TabStop = False\n      end\n      object Label6: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 838.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Default chat settings (for new chats)'\n        TabOrder = 19\n        TabStop = False\n      end\n      object Layout3: TLayout\n        Align = Top\n        Position.Y = 1434.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 35\n        TabStop = False\n        object TrackBarTemp: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 20.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 19.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          Value = 10.000000000000000000\n          OnTracking = TrackBarTempTracking\n        end\n        object LabelTemp: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '2.0'\n          TabOrder = 1\n          TabStop = False\n        end\n      end\n      object Layout4: TLayout\n        Align = Top\n        Margins.Top = 10.000000000000000000\n        Position.Y = 343.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 10\n        TabStop = False\n        object ButtonGetToken: TButton\n          Align = Left\n          ImageIndex = 9\n          Size.Width = 289.000000000000000000\n          Size.Height = 46.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 0\n          Text = 'Obtain API token from your Open AI'\n          TextSettings.HorzAlign = Leading\n          ParentShowHint = False\n          ShowHint = True\n          OnClick = ButtonGetTokenClick\n        end\n      end\n      object Label8: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 875.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Model (default: gpt-3.5-turbo)'\n        TabOrder = 20\n        TabStop = False\n      end\n      object ComboEditModel: TComboEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'combo_style'\n        TabOrder = 21\n        DropDownKind = Custom\n        ItemHeight = 36.000000000000000000\n        Items.Strings = (\n          'gpt-3.5-turbo'\n          'gpt-3.5-turbo-0613'\n          'gpt-3.5-turbo-16k'\n          'gpt-4'\n          'gpt-4-turbo'\n          'gpt-4-0613'\n          'gpt-4-32k')\n        ItemIndex = 0\n        Text = 'gpt-3.5-turbo'\n        Position.Y = 897.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        OnMouseWheel = ComboEditModelMouseWheel\n      end\n      object Label9: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1192.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Model max tokens (default: 4096)'\n        TabOrder = 25\n        TabStop = False\n      end\n      object EditMaxTokens: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 27\n        KeyboardType = DecimalNumberPad\n        FilterChar = '0123456789'\n        Position.Y = 1219.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'Example: 4096'\n        object ClearEditButton3: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path2: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Layout1: TLayout\n        Align = Top\n        Position.Y = 1526.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 38\n        TabStop = False\n        object TrackBarPP: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 20.000000000000000000\n          Min = -20.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 19.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          OnTracking = TrackBarPPTracking\n        end\n        object LabelPP: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '0.0'\n          TabOrder = 1\n          TabStop = False\n        end\n      end\n      object Label11: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1556.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 44.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'Number between -2.0 and 2.0. Positive values penalize new tokens' +\n          ' based on whether they appear in the text so far, increasing the' +\n          ' model'#39's likelihood to talk about new topics.'\n        TabOrder = 39\n        TabStop = False\n      end\n      object Label12: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1504.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Presence penalty (default: 0.0)'\n        TabOrder = 37\n        TabStop = False\n      end\n      object Label13: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1677.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 44.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'Number between -2.0 and 2.0. Positive values penalize new tokens' +\n          ' based on their existing frequency in the text so far, decreasin' +\n          'g the model'#39's likelihood to repeat the same line verbatim.'\n        TabOrder = 42\n        TabStop = False\n      end\n      object Layout5: TLayout\n        Align = Top\n        Position.Y = 1647.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 41\n        TabStop = False\n        object TrackBarFP: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 20.000000000000000000\n          Min = -20.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 19.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          OnTracking = TrackBarFPTracking\n        end\n        object LabelFP: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '0.0'\n          TabOrder = 1\n          TabStop = False\n        end\n      end\n      object Label15: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1625.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Frequency penalty (default: 0.0)'\n        TabOrder = 40\n        TabStop = False\n      end\n      object Label16: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1302.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Query max tokens (default: 1024)'\n        TabOrder = 30\n        TabStop = False\n      end\n      object EditQueryMaxToken: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 31\n        KeyboardType = DecimalNumberPad\n        FilterChar = '0123456789'\n        Position.Y = 1329.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'Example: 1024'\n        object ClearEditButton4: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path3: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label17: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1262.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = 'Limit of the selected model'\n        TabOrder = 29\n        TabStop = False\n      end\n      object Label18: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1372.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = 'Max number of tokens per request'\n        TabOrder = 32\n        TabStop = False\n      end\n      object Label19: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 940.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'GPT-4 is currently in a limited beta and only accessible to thos' +\n          'e who have been granted access'\n        TabOrder = 23\n        TabStop = False\n      end\n      object LabelAppearance: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 75.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Appearance'\n        TabOrder = 0\n        TabStop = False\n      end\n      object Label14: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 456.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Organization'\n        TabOrder = 11\n        TabStop = False\n      end\n      object EditOrg: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 12\n        Position.Y = 483.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        object ClearEditButton5: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path5: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label20: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 526.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 44.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'For users who belong to multiple organizations, you can specify ' +\n          'which organization is used for an API request. Usage from these ' +\n          'API requests will count against the specified organization'#39's sub' +\n          'scription quota.'\n        TabOrder = 15\n        TabStop = False\n      end\n      object EditBaseUrl: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 18\n        KeyboardType = URL\n        Position.Y = 612.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'https://api.openai.com/v1'\n        object ClearEditButton6: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path6: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label21: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 585.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Base url'\n        TabOrder = 17\n        TabStop = False\n      end\n      object Label22: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 236.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'General settings'\n        TabOrder = 6\n        TabStop = False\n      end\n      object LayoutOnTop: TLayout\n        Align = Top\n        Padding.Top = 4.000000000000000000\n        Padding.Bottom = 4.000000000000000000\n        Position.Y = 102.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 4\n        TabStop = False\n        object SwitchOnTop: TSwitch\n          Align = Right\n          IsChecked = False\n          Margins.Top = 2.000000000000000000\n          Margins.Bottom = 2.000000000000000000\n          Position.X = 359.000000000000000000\n          Position.Y = 6.000000000000000000\n          Size.Width = 45.000000000000000000\n          Size.Height = 18.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n        end\n        object Label23: TLabel\n          Align = Client\n          AutoSize = True\n          StyledSettings = [Style]\n          Size.Width = 359.000000000000000000\n          Size.Height = 22.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xB4FFFFFF\n          TextSettings.WordWrap = False\n          Text = 'Show window on top'\n          TabOrder = 0\n          TabStop = False\n        end\n      end\n      object Label10: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2087.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Proxy (default: System proxy)'\n        TabOrder = 49\n        TabStop = False\n      end\n      object Label24: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2124.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Server (required)'\n        TabOrder = 51\n        TabStop = False\n      end\n      object EditProxyServer: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 52\n        Position.Y = 2151.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = 'http or https://...'\n        object ClearEditButton7: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path7: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label25: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2194.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Port'\n        TabOrder = 53\n        TabStop = False\n      end\n      object EditProxyPort: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 54\n        KeyboardType = DecimalNumberPad\n        FilterChar = '0123456789'\n        Position.Y = 2221.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        object ClearEditButton8: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path8: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object EditProxyUsername: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 56\n        Position.Y = 2291.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        object ClearEditButton9: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path9: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label26: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2264.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Username'\n        TabOrder = 55\n        TabStop = False\n      end\n      object EditProxyPassword: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 58\n        Position.Y = 2361.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        object ClearEditButton10: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path10: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label27: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2334.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Password'\n        TabOrder = 57\n        TabStop = False\n      end\n      object Label28: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1798.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 73.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'An alternative to sampling with temperature, called nucleus samp' +\n          'ling, where the model considers the results of the tokens with t' +\n          'op_p probability mass. So 0.1 means only the tokens comprising t' +\n          'he top 10% probability mass are considered.'#13#10'We generally recomm' +\n          'end altering this or temperature but not both.'\n        TabOrder = 46\n        TabStop = False\n      end\n      object Layout6: TLayout\n        Align = Top\n        Position.Y = 1768.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 44\n        TabStop = False\n        object TrackBarTopP: TTrackBar\n          Align = Client\n          CanParentFocus = True\n          Frequency = 1.000000000000000000\n          Max = 10.000000000000000000\n          Orientation = Horizontal\n          Size.Width = 370.000000000000000000\n          Size.Height = 19.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 0\n          Value = 10.000000000000000000\n          OnTracking = TrackBarTopPTracking\n        end\n        object LabelTopP: TLabel\n          Align = Right\n          StyledSettings = [Style]\n          Margins.Left = 6.000000000000000000\n          Position.X = 376.000000000000000000\n          Size.Width = 28.000000000000000000\n          Size.Height = 20.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xBEFFFFFF\n          TextSettings.HorzAlign = Trailing\n          TextSettings.WordWrap = False\n          Text = '0.0'\n          TabOrder = 1\n          TabStop = False\n        end\n      end\n      object Label30: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1746.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Top P (default: 1.0)'\n        TabOrder = 43\n        TabStop = False\n      end\n      object Label29: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2454.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Info'\n        TabOrder = 47\n        TabStop = False\n      end\n      object LabelVersion: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 2491.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Version: '\n        TabOrder = 50\n        TabStop = False\n      end\n      object Label31: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 2404.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 15.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = 'Proxy is not used if Server is empty'\n        TabOrder = 45\n        TabStop = False\n      end\n      object Label32: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 10.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 655.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        TextSettings.WordWrap = False\n        Text = 'Custom headers'\n        TabOrder = 16\n        TabStop = False\n      end\n      object MemoCustomHeaders: TMemo\n        Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]\n        DataDetectorTypes = []\n        Align = Top\n        Margins.Top = 5.000000000000000000\n        Position.Y = 682.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 82.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'memostyle_normal'\n        TabOrder = 60\n        Viewport.Width = 388.000000000000000000\n        Viewport.Height = 66.000000000000000000\n      end\n      object Label33: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 774.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'You can add custom headers for third party APIs. '#13#10'Example: \"hea' +\n          'der-name: value\"'\n        TabOrder = 13\n        TabStop = False\n      end\n      object Layout7: TLayout\n        Align = Top\n        Padding.Top = 4.000000000000000000\n        Padding.Bottom = 4.000000000000000000\n        Margins.Top = 20.000000000000000000\n        Position.Y = 1003.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 2\n        TabStop = False\n        object SwitchUseFunctions: TSwitch\n          Align = Right\n          IsChecked = False\n          Margins.Top = 2.000000000000000000\n          Margins.Bottom = 2.000000000000000000\n          Position.X = 359.000000000000000000\n          Position.Y = 6.000000000000000000\n          Size.Width = 45.000000000000000000\n          Size.Height = 18.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n        end\n        object Label34: TLabel\n          Align = Client\n          AutoSize = True\n          StyledSettings = [Style]\n          Size.Width = 359.000000000000000000\n          Size.Height = 22.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xB4FFFFFF\n          TextSettings.WordWrap = False\n          Text = 'Use functions'\n          TabOrder = 0\n          TabStop = False\n        end\n      end\n      object Label35: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 1073.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'In an API call, you can describe functions to gpt-3.5-turbo-0613' +\n          ', gpt-3.5-turbo-16k and gpt-4-0613'\n        TabOrder = 22\n        TabStop = False\n      end\n      object Label36: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 419.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'Optional settings'\n        TabOrder = 5\n        TabStop = False\n      end\n      object Layout8: TLayout\n        Align = Top\n        Margins.Top = 10.000000000000000000\n        Position.Y = 1117.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 9\n        TabStop = False\n        object ButtonLoadedFunctions: TButton\n          Align = Left\n          Size.Width = 161.000000000000000000\n          Size.Height = 46.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_menu'\n          TabOrder = 0\n          Text = 'View loaded functions'\n          TextSettings.HorzAlign = Leading\n          ParentShowHint = False\n          ShowHint = True\n          OnClick = ButtonLoadedFunctionsClick\n        end\n      end\n      object Layout9: TLayout\n        Align = Top\n        Padding.Top = 4.000000000000000000\n        Padding.Bottom = 4.000000000000000000\n        Position.Y = 1033.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 1\n        TabStop = False\n        object SwitchAutoExecFuncs: TSwitch\n          Align = Right\n          IsChecked = False\n          Margins.Top = 2.000000000000000000\n          Margins.Bottom = 2.000000000000000000\n          Position.X = 359.000000000000000000\n          Position.Y = 6.000000000000000000\n          Size.Width = 45.000000000000000000\n          Size.Height = 18.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n        end\n        object Label37: TLabel\n          Align = Client\n          AutoSize = True\n          StyledSettings = [Style]\n          Size.Width = 359.000000000000000000\n          Size.Height = 22.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xB4FFFFFF\n          TextSettings.WordWrap = False\n          Text = 'Auto execution of functions'\n          TabOrder = 0\n          TabStop = False\n        end\n      end\n      object Layout10: TLayout\n        Align = Top\n        Position.Y = 2513.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 20.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 34\n      end\n      object Label2: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 2023.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'Time in milliseconds that determines how long the client will wa' +\n          'it for a response from the server'\n        TabOrder = 28\n        TabStop = False\n      end\n      object EditTimeout: TEdit\n        Touch.InteractiveGestures = [LongTap, DoubleTap]\n        Align = Top\n        StyleLookup = 'editstyle_clear'\n        TabOrder = 26\n        KeyboardType = DecimalNumberPad\n        FilterChar = '0123456789'\n        Position.Y = 1980.000000000000000000\n        Margins.Top = 5.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 33.000000000000000000\n        Size.PlatformDefault = False\n        TextPrompt = '120000ms'\n        object ClearEditButton1: TClearEditButton\n          Touch.InteractiveGestures = [LongTap]\n          CanFocus = False\n          Cursor = crArrow\n          Hint = 'Clear'\n          Size.Width = 28.000000000000000000\n          Size.Height = 29.000000000000000000\n          Size.PlatformDefault = False\n          StyleLookup = 'buttonstyle_clearmini'\n          TabOrder = 0\n          Text = 'buttonstyle_clearmini'\n          object Path4: TPath\n            Align = Center\n            Data.Path = {\n              0E00000000000000000060413333B33F010000009A9949410000000001000000\n              0000E0403333B340010000003333B33F0000000001000000000000003333B33F\n              010000003333B3400000E04001000000000000009A994941010000003333B33F\n              00006041010000000000E04066660641010000009A9949410000604101000000\n              000060419A99494101000000666606410000E04001000000000060413333B33F\n              03000000000060413333B33F}\n            Fill.Color = xFFACACBE\n            Locked = True\n            HitTest = False\n            Margins.Left = 2.000000000000000000\n            Size.Width = 13.000000000000000000\n            Size.Height = 13.000000000000000000\n            Size.PlatformDefault = False\n            Stroke.Kind = None\n            WrapMode = Fit\n          end\n        end\n      end\n      object Label7: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 20.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1953.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 17.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xB4FFFFFF\n        Text = 'Timout (ms, default: 120000ms - 2min)'\n        TabOrder = 24\n        TabStop = False\n      end\n      object Label38: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Top = 30.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.Y = 1906.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 22.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.Font.Size = 18.000000000000000000\n        TextSettings.FontColor = xFFE9E9E9\n        TextSettings.WordWrap = False\n        Text = 'HTTP'\n        TabOrder = 48\n        TabStop = False\n      end\n      object Layout11: TLayout\n        Align = Top\n        Padding.Top = 4.000000000000000000\n        Padding.Bottom = 4.000000000000000000\n        Position.Y = 132.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 30.000000000000000000\n        Size.PlatformDefault = False\n        TabOrder = 3\n        TabStop = False\n        object SwitchSendEnter: TSwitch\n          Align = Right\n          IsChecked = True\n          Margins.Top = 2.000000000000000000\n          Margins.Bottom = 2.000000000000000000\n          Position.X = 359.000000000000000000\n          Position.Y = 6.000000000000000000\n          Size.Width = 45.000000000000000000\n          Size.Height = 18.000000000000000000\n          Size.PlatformDefault = False\n          TabOrder = 1\n        end\n        object Label39: TLabel\n          Align = Client\n          AutoSize = True\n          StyledSettings = [Style]\n          Size.Width = 359.000000000000000000\n          Size.Height = 22.000000000000000000\n          Size.PlatformDefault = False\n          TextSettings.Font.Family = 'Roboto'\n          TextSettings.Font.Size = 14.000000000000000000\n          TextSettings.FontColor = xB4FFFFFF\n          TextSettings.WordWrap = False\n          Text = 'Sending by pressing Enter'\n          TabOrder = 0\n          TabStop = False\n        end\n      end\n      object Label40: TLabel\n        Align = Top\n        AutoSize = True\n        StyledSettings = [Style]\n        Margins.Left = 5.000000000000000000\n        Margins.Top = 10.000000000000000000\n        Margins.Right = 5.000000000000000000\n        Margins.Bottom = 5.000000000000000000\n        Position.X = 5.000000000000000000\n        Position.Y = 172.000000000000000000\n        Size.Width = 394.000000000000000000\n        Size.Height = 29.000000000000000000\n        Size.PlatformDefault = False\n        TextSettings.Font.Family = 'Roboto'\n        TextSettings.FontColor = x78FFFFFF\n        Text = \n          'Line break, in this case, will be possible by pressing Ctrl + En' +\n          'ter or Shift + Enter'\n        TabOrder = 14\n        TabStop = False\n      end\n      object ALLine1: TLine\n        Align = Top\n        LineType = Top\n        Margins.Top = 4.000000000000000000\n        Margins.Bottom = 3.000000000000000000\n        Position.Y = 978.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 2.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Color = xFF343539\n      end\n      object ALLine2: TLine\n        Align = Top\n        LineType = Top\n        Margins.Top = 4.000000000000000000\n        Margins.Bottom = 3.000000000000000000\n        Position.Y = 1167.000000000000000000\n        Size.Width = 404.000000000000000000\n        Size.Height = 2.000000000000000000\n        Size.PlatformDefault = False\n        Stroke.Color = xFF343539\n      end\n    end\n    object Layout2: TLayout\n      Align = Bottom\n      Position.X = 10.000000000000000000\n      Position.Y = 716.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 46.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 3\n      object ButtonCancel: TButton\n        Align = Right\n        Cancel = True\n        Position.X = 340.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 2\n        Text = 'CANCEL'\n        ParentShowHint = False\n        ShowHint = True\n        OnClick = ButtonCancelClick\n      end\n      object ButtonOk: TButton\n        Align = Right\n        Position.X = 260.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 3\n        Text = 'OK'\n        OnClick = ButtonOkClick\n      end\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.Settings.pas",
    "content": "﻿unit ChatGPT.Settings;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Overlay, FMX.Edit, FMX.Objects, FMX.Layouts, ChatGPT.Classes,\n  FMX.ComboEdit, FMX.ListBox, FMX.Controls.Presentation, FMX.ComboEdit.Style,\n  FMX.Memo.Types, FMX.ScrollBox, FMX.Memo;\n\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\ntype\n  TStyledComboEdit = class(FMX.ComboEdit.Style.TStyledComboEdit)\n    procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;\n  protected\n    function CreateListBox: TComboEditListBox; override;\n  end;\n\n  TTrackBar = class(FMX.StdCtrls.TTrackBar)\n    procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;\n  end;\n\n  TFrameSettings = class(TFrameOveraly)\n    LayoutClient: TLayout;\n    RectangleFrame: TRectangle;\n    Label1: TLabel;\n    Label3: TLabel;\n    Label4: TLabel;\n    Layout2: TLayout;\n    ButtonCancel: TButton;\n    ButtonOk: TButton;\n    Layout3: TLayout;\n    TrackBarTemp: TTrackBar;\n    LabelTemp: TLabel;\n    EditToken: TEdit;\n    ClearEditButton2: TClearEditButton;\n    Path1: TPath;\n    Label5: TLabel;\n    Label6: TLabel;\n    Layout4: TLayout;\n    ButtonGetToken: TButton;\n    VertScrollBoxContent: TVertScrollBox;\n    Label8: TLabel;\n    ComboEditModel: TComboEdit;\n    Label9: TLabel;\n    EditMaxTokens: TEdit;\n    ClearEditButton3: TClearEditButton;\n    Path2: TPath;\n    Layout1: TLayout;\n    TrackBarPP: TTrackBar;\n    LabelPP: TLabel;\n    Label11: TLabel;\n    Label12: TLabel;\n    Label13: TLabel;\n    Layout5: TLayout;\n    TrackBarFP: TTrackBar;\n    LabelFP: TLabel;\n    Label15: TLabel;\n    Label16: TLabel;\n    EditQueryMaxToken: TEdit;\n    ClearEditButton4: TClearEditButton;\n    Path3: TPath;\n    Label17: TLabel;\n    Label18: TLabel;\n    Label19: TLabel;\n    LabelAppearance: TLabel;\n    Label14: TLabel;\n    EditOrg: TEdit;\n    ClearEditButton5: TClearEditButton;\n    Path5: TPath;\n    Label20: TLabel;\n    EditBaseUrl: TEdit;\n    ClearEditButton6: TClearEditButton;\n    Path6: TPath;\n    Label21: TLabel;\n    Label22: TLabel;\n    LayoutOnTop: TLayout;\n    SwitchOnTop: TSwitch;\n    Label23: TLabel;\n    Label10: TLabel;\n    Label24: TLabel;\n    EditProxyServer: TEdit;\n    ClearEditButton7: TClearEditButton;\n    Path7: TPath;\n    Label25: TLabel;\n    EditProxyPort: TEdit;\n    ClearEditButton8: TClearEditButton;\n    Path8: TPath;\n    EditProxyUsername: TEdit;\n    ClearEditButton9: TClearEditButton;\n    Path9: TPath;\n    Label26: TLabel;\n    EditProxyPassword: TEdit;\n    ClearEditButton10: TClearEditButton;\n    Path10: TPath;\n    Label27: TLabel;\n    Label28: TLabel;\n    Layout6: TLayout;\n    TrackBarTopP: TTrackBar;\n    LabelTopP: TLabel;\n    Label30: TLabel;\n    Label29: TLabel;\n    LabelVersion: TLabel;\n    Label31: TLabel;\n    Label32: TLabel;\n    MemoCustomHeaders: TMemo;\n    Label33: TLabel;\n    Layout7: TLayout;\n    SwitchUseFunctions: TSwitch;\n    Label34: TLabel;\n    Label35: TLabel;\n    Label36: TLabel;\n    Layout8: TLayout;\n    ButtonLoadedFunctions: TButton;\n    Layout9: TLayout;\n    SwitchAutoExecFuncs: TSwitch;\n    Label37: TLabel;\n    Layout10: TLayout;\n    Label2: TLabel;\n    EditTimeout: TEdit;\n    ClearEditButton1: TClearEditButton;\n    Path4: TPath;\n    Label7: TLabel;\n    Label38: TLabel;\n    Layout11: TLayout;\n    SwitchSendEnter: TSwitch;\n    Label39: TLabel;\n    Label40: TLabel;\n    ALLine1: TLine;\n    ALLine2: TLine;\n    procedure TrackBarTempTracking(Sender: TObject);\n    procedure ButtonCancelClick(Sender: TObject);\n    procedure ButtonOkClick(Sender: TObject);\n    procedure ButtonGetTokenClick(Sender: TObject);\n    procedure FrameResize(Sender: TObject);\n    procedure RectangleBGClick(Sender: TObject);\n    procedure TrackBarPPTracking(Sender: TObject);\n    procedure TrackBarFPTracking(Sender: TObject);\n    procedure TrackBarTopPTracking(Sender: TObject);\n    procedure ButtonLoadedFunctionsClick(Sender: TObject);\n    procedure ComboEditModelMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\n  private\n    FProcCallback: TProc<TFrameSettings, Boolean>;\n    FLayoutClientWidth, FLayoutClientHeight: Single;\n  protected\n    procedure SetMode(const Value: TWindowMode); override;\n  public\n    constructor Create(AOwner: TComponent); override;\n    procedure Cancel; override;\n    class procedure Execute(AParent: TControl; ProcSet: TProc<TFrameSettings>; ProcExecuted: TProc<TFrameSettings, Boolean>);\n  end;\n\nvar\n  FrameSettings: TFrameSettings;\n\nimplementation\n\nuses\n  System.Math, FMX.Ani, FMX.Presentation.Style, FMX.Presentation.Factory,\n  HGM.FMX.Ani, ChatGPT.LoadedFunctions, ChatGPT.Manager;\n\n{$R *.fmx}\n\n{ TFrameSettings }\n\nprocedure TFrameSettings.ButtonCancelClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameSettings.ButtonGetTokenClick(Sender: TObject);\nbegin\n  OpenUrl('https://platform.openai.com/account/api-keys');\nend;\n\nprocedure TFrameSettings.ButtonLoadedFunctionsClick(Sender: TObject);\nbegin\n  TFrameLoadedFunctions.Execute(TControl(Parent));\nend;\n\nprocedure TFrameSettings.ButtonOkClick(Sender: TObject);\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, True);\n  Release;\nend;\n\nprocedure TFrameSettings.Cancel;\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, False);\n  Release;\nend;\n\nprocedure TFrameSettings.ComboEditModelMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  Handled := True;\n  VertScrollBoxContent.AniCalculations.MouseWheel(0, -WheelDelta);\nend;\n\nconstructor TFrameSettings.Create(AOwner: TComponent);\nbegin\n  inherited;\n  {$IFDEF MOBILE}\n  LabelAppearance.Visible := False;\n  LayoutOnTop.Visible := False;\n  {$ENDIF}\n  Name := '';\n  MemoCustomHeaders.Text := '';\n  MemoCustomHeaders.Lines.NameValueSeparator := ':';\n\n  ComboEditModel.Items.Clear;\n  var ActualModels: TArray<string> := [];\n  SetLength(ActualModels, Length(Manager.ActualModels));\n  for var i := 0 to High(Manager.ActualModels) do\n    ActualModels[i] := Manager.ActualModels[i].Name;\n  ComboEditModel.Items.AddStrings(ActualModels);\n\n  if ComboEditModel.Presentation is TStyledComboEdit then\n  begin\n    var Style := TStyledComboEdit(ComboEditModel.Presentation);\n    for var i := 0 to Style.ListBox.Count - 1 do\n    begin\n      Style.ListBox.ListItems[i].StyleLookup := 'listboxitemstyle_model';\n      Style.ListBox.ListItems[i].StylesData['context'] := Manager.ActualModels[i].Context.ToString;\n      Style.ListBox.ListItems[i].StylesData['tokens'] := Manager.ActualModels[i].Tokens.ToString;\n      Style.ListBox.ListItems[i].StylesData['datadate'] := Manager.ActualModels[i].DataDate;\n      Style.ListBox.ListItems[i].StylesData['legacy.Visible'] := Manager.ActualModels[i].Legacy;\n    end;\n  end;\n\n  FLayoutClientWidth := LayoutClient.Width;\n  FLayoutClientHeight := LayoutClient.Height;\n  VertScrollBoxContent.AniCalculations.Animation := True;\n  //VertScrollBoxContent.AniCalculations.Interval := 1;\n  VertScrollBoxContent.ViewportPosition := TPoint.Zero;\nend;\n\nclass procedure TFrameSettings.Execute(AParent: TControl; ProcSet: TProc<TFrameSettings>; ProcExecuted: TProc<TFrameSettings, Boolean>);\nbegin\n  var Frame := TFrameSettings.Create(AParent);\n  Frame.Parent := AParent;\n  Frame.FProcCallback := ProcExecuted;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.BringToFront;\n  if Assigned(ProcSet) then\n    ProcSet(Frame);\n  Frame.TrackBarTempTracking(nil);\n  Frame.TrackBarPPTracking(nil);\n  Frame.TrackBarFPTracking(nil);\n  Frame.TrackBarTopPTracking(nil);\n  Frame.ButtonCancel.SetFocus;\nend;\n\nprocedure TFrameSettings.FrameResize(Sender: TObject);\nbegin\n  LayoutClient.Width := Min(FLayoutClientWidth, Width);\n  LayoutClient.Height := Min(FLayoutClientHeight, Height);\nend;\n\nprocedure TFrameSettings.RectangleBGClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameSettings.SetMode(const Value: TWindowMode);\nbegin\n  inherited;\n  if Mode = TWindowMode.Compact then\n  begin\n    LayoutClient.Align := TAlignLayout.Client;\n    RectangleFrame.Corners := [];\n  end\n  else\n  begin\n    LayoutClient.Align := TAlignLayout.Center;\n    RectangleFrame.Corners := AllCorners;\n  end;\n  FrameResize(nil);\nend;\n\nprocedure TFrameSettings.TrackBarFPTracking(Sender: TObject);\nbegin\n  LabelFP.Text := FormatFloat('0.0', TrackBarFP.Value / 10);\nend;\n\nprocedure TFrameSettings.TrackBarPPTracking(Sender: TObject);\nbegin\n  LabelPP.Text := FormatFloat('0.0', TrackBarPP.Value / 10);\nend;\n\nprocedure TFrameSettings.TrackBarTempTracking(Sender: TObject);\nbegin\n  LabelTemp.Text := FormatFloat('0.0', TrackBarTemp.Value / 10);\nend;\n\nprocedure TFrameSettings.TrackBarTopPTracking(Sender: TObject);\nbegin\n  LabelTopP.Text := FormatFloat('0.0', TrackBarTopP.Value / 10);\nend;\n\n{ TStyledComboEdit }\n\nfunction TStyledComboEdit.CreateListBox: TComboEditListBox;\nbegin\n  Result := inherited;\n  Result.DefaultItemStyles.ItemStyle := 'listboxitemstyle_model';\n  Result.AniCalculations.Animation := True;\n  //Result.AniCalculations.Interval := 1;\nend;\n\nprocedure TStyledComboEdit.MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  Handled := False;\nend;\n\n{ TTrackBar }\n\nprocedure TTrackBar.MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);\nbegin\n  Handled := False;\nend;\n\ninitialization\n  //TPresentationProxyFactory.Current.Unregister(TComboEdit, TControlType.Styled, TStyledPresentationProxy<FMX.ComboEdit.Style.TStyledComboEdit>);\n  //TPresentationProxyFactory.Current.Register(TComboEdit, TControlType.Styled, TStyledPresentationProxy<TStyledComboEdit>);\n\n\n\nfinalization\n  //TPresentationProxyFactory.Current.Unregister(TComboEdit, TControlType.Styled, TStyledPresentationProxy<TStyledComboEdit>);\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.SoundRecorder.pas",
    "content": "﻿unit ChatGPT.SoundRecorder;\n\ninterface\n\nuses\n  System.Classes, System.SysUtils, FMX.Media;\n\ntype\n  TAudioRecord = class(TComponent)\n  private\n    FFileName: string;\n    FMicrophone: TAudioCaptureDevice;\n    FOnStartRecord: TNotifyEvent;\n    procedure MicrophonePermissionRequest(Sender: TObject; const&Message: string; const AccessGranted: Boolean);\n    procedure SetOnStartRecord(const Value: TNotifyEvent);\n    function GetIsAvailableDevice: Boolean;\n  public\n    function IsMicrophoneRecording: Boolean;\n    constructor Create(AOwner: TComponent); override;\n    procedure StartRecord(const FileName: string);\n    procedure StopRecord;\n    property Microphone: TAudioCaptureDevice read FMicrophone write FMicrophone;\n    property OnStartRecord: TNotifyEvent read FOnStartRecord write SetOnStartRecord;\n    property IsAvailableDevice: Boolean read GetIsAvailableDevice;\n  end;\n\nimplementation\n\n{ TAudioRecord }\n\nconstructor TAudioRecord.Create(AOwner: TComponent);\nbegin\n  inherited;\n  FMicrophone := nil;// TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;\n  if Assigned(FMicrophone) then\n    FMicrophone.OnPermissionRequest := MicrophonePermissionRequest;\nend;\n\nfunction TAudioRecord.GetIsAvailableDevice: Boolean;\nbegin\n  Result := Assigned(FMicrophone);\nend;\n\nfunction TAudioRecord.IsMicrophoneRecording: Boolean;\nbegin\n  if not Assigned(FMicrophone) then\n    Exit(False);\n  Result := FMicrophone.State = TCaptureDeviceState.Capturing;\nend;\n\nprocedure TAudioRecord.MicrophonePermissionRequest(Sender: TObject; const Message: string; const AccessGranted: Boolean);\nbegin\n  if not Assigned(FMicrophone) then\n    Exit;\n  if AccessGranted then\n  begin\n    FMicrophone.StartCapture;\n    if Assigned(FOnStartRecord) then\n      FOnStartRecord(Self);\n  end\n  else\n    raise Exception.Create('Cannot record audio without the relevant permission being granted: '#13#10 + Message);\nend;\n\nprocedure TAudioRecord.SetOnStartRecord(const Value: TNotifyEvent);\nbegin\n  FOnStartRecord := Value;\nend;\n\nprocedure TAudioRecord.StartRecord(const FileName: string);\nbegin\n  if not Assigned(FMicrophone) then\n    raise Exception.Create('No suitable device');\n  FFileName := FileName;\n  FMicrophone.FileName := FFileName;\n  FMicrophone.RequestPermission;\nend;\n\nprocedure TAudioRecord.StopRecord;\nbegin\n  if not Assigned(FMicrophone) then\n    raise Exception.Create('No suitable device');\n  if IsMicrophoneRecording then\n    FMicrophone.StopCapture;\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.TextEditor.fmx",
    "content": "inherited FrameTextEditor: TFrameTextEditor\n  Size.Width = 1035.000000000000000000\n  Size.Height = 811.000000000000000000\n  OnResize = FrameResize\n  OnResized = FrameResize\n  inherited RectangleBG: TRectangle\n    Size.Width = 1035.000000000000000000\n    Size.Height = 811.000000000000000000\n  end\n  object LayoutClient: TLayout\n    Align = Center\n    Padding.Left = 10.000000000000000000\n    Padding.Top = 10.000000000000000000\n    Padding.Right = 10.000000000000000000\n    Padding.Bottom = 10.000000000000000000\n    Size.Width = 440.000000000000000000\n    Size.Height = 566.000000000000000000\n    Size.PlatformDefault = False\n    TabOrder = 0\n    object RectangleFrame: TRectangle\n      Align = Contents\n      Fill.Color = xFF202123\n      Locked = True\n      Size.Width = 440.000000000000000000\n      Size.Height = 566.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n    end\n    object LayoutActions: TLayout\n      Align = Bottom\n      Position.X = 10.000000000000000000\n      Position.Y = 510.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 46.000000000000000000\n      Size.PlatformDefault = False\n      TabOrder = 2\n      object ButtonOk: TButton\n        Align = Right\n        Position.X = 260.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 2\n        Text = 'OK'\n        OnClick = ButtonOkClick\n      end\n      object ButtonCancel: TButton\n        Align = Right\n        Cancel = True\n        Position.X = 340.000000000000000000\n        Size.Width = 80.000000000000000000\n        Size.Height = 46.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'buttonstyle_menu'\n        TabOrder = 3\n        Text = 'CANCEL'\n        OnClick = ButtonCancelClick\n      end\n    end\n    object LabelCaption: TLabel\n      Align = Top\n      AutoSize = True\n      StyledSettings = [Style]\n      Margins.Top = 10.000000000000000000\n      Position.X = 10.000000000000000000\n      Position.Y = 20.000000000000000000\n      Size.Width = 420.000000000000000000\n      Size.Height = 20.000000000000000000\n      Size.PlatformDefault = False\n      TextSettings.Font.Family = 'Roboto'\n      TextSettings.Font.Size = 16.000000000000000000\n      TextSettings.FontColor = xFFE9E9E9\n      TextSettings.WordWrap = False\n      Text = 'Title'\n      TabOrder = 49\n    end\n    object Rectangle1: TRectangle\n      Align = Client\n      Fill.Color = x78000000\n      Margins.Left = 6.000000000000000000\n      Margins.Top = 6.000000000000000000\n      Margins.Right = 6.000000000000000000\n      Margins.Bottom = 6.000000000000000000\n      Size.Width = 408.000000000000000000\n      Size.Height = 458.000000000000000000\n      Size.PlatformDefault = False\n      Stroke.Kind = None\n      XRadius = 6.000000000000000000\n      YRadius = 6.000000000000000000\n      object MemoText: TMemo\n        Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]\n        DataDetectorTypes = []\n        StyledSettings = [Family, Style]\n        TextSettings.Font.Size = 14.000000000000000000\n        TextSettings.FontColor = xFFEDEDED\n        TextSettings.WordWrap = True\n        Align = Client\n        Size.Width = 408.000000000000000000\n        Size.Height = 458.000000000000000000\n        Size.PlatformDefault = False\n        StyleLookup = 'memostyle_clear'\n        TabOrder = 0\n        OnPresentationNameChoosing = MemoTextPresentationNameChoosing\n        Viewport.Width = 398.000000000000000000\n        Viewport.Height = 458.000000000000000000\n      end\n    end\n  end\nend\n"
  },
  {
    "path": "ChatGPT.TextEditor.pas",
    "content": "﻿unit ChatGPT.TextEditor;\n\ninterface\n\nuses\n  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,\n  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,\n  ChatGPT.Overlay, FMX.Objects, FMX.Controls.Presentation, FMX.Layouts,\n  FMX.ListBox, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo;\n\ntype\n  TFrameTextEditor = class(TFrameOveraly)\n    LayoutClient: TLayout;\n    RectangleFrame: TRectangle;\n    LayoutActions: TLayout;\n    ButtonOk: TButton;\n    LabelCaption: TLabel;\n    Rectangle1: TRectangle;\n    MemoText: TMemo;\n    ButtonCancel: TButton;\n    procedure FrameResize(Sender: TObject);\n    procedure ButtonOkClick(Sender: TObject);\n    procedure ButtonCancelClick(Sender: TObject);\n    procedure MemoTextPresentationNameChoosing(Sender: TObject;\n      var PresenterName: string);\n  private\n    FProcCallback: TProc<TFrameTextEditor, Boolean>;\n    FLayoutClientWidth, FLayoutClientHeight: Single;\n  public\n    constructor Create(AOwner: TComponent); override;\n    procedure Cancel; override;\n    class procedure Execute(AParent: TControl; ProcSet: TProc<TFrameTextEditor>; ProcExecuted: TProc<TFrameTextEditor, Boolean>);\n  end;\n\nvar\n  FrameTextEditor: TFrameTextEditor;\n\nimplementation\n\nuses\n  System.Math;\n\n{$R *.fmx}\n\nprocedure TFrameTextEditor.ButtonCancelClick(Sender: TObject);\nbegin\n  Cancel;\nend;\n\nprocedure TFrameTextEditor.ButtonOkClick(Sender: TObject);\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, True);\n  Release;\nend;\n\nprocedure TFrameTextEditor.Cancel;\nbegin\n  if Assigned(FProcCallback) then\n    FProcCallback(Self, False);\n  Release;\nend;\n\nconstructor TFrameTextEditor.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Name := '';\n  FLayoutClientWidth := LayoutClient.Width;\n  FLayoutClientHeight := LayoutClient.Height;\nend;\n\nclass procedure TFrameTextEditor.Execute(AParent: TControl; ProcSet: TProc<TFrameTextEditor>; ProcExecuted: TProc<TFrameTextEditor, Boolean>);\nbegin\n  var Frame := TFrameTextEditor.Create(AParent);\n  Frame.Parent := AParent;\n  Frame.FProcCallback := ProcExecuted;\n  Frame.Align := TAlignLayout.Contents;\n  Frame.BringToFront;\n  if Assigned(ProcSet) then\n    ProcSet(Frame);\n  Frame.MemoText.SetFocus;\nend;\n\nprocedure TFrameTextEditor.FrameResize(Sender: TObject);\nbegin\n  LayoutClient.Width := Min(FLayoutClientWidth, Width);\n  LayoutClient.Height := Min(FLayoutClientHeight, Height);\nend;\n\nprocedure TFrameTextEditor.MemoTextPresentationNameChoosing(Sender: TObject;\n  var PresenterName: string);\nbegin\n  inherited;\n  PresenterName := 'RichEditStyled';\nend;\n\nend.\n\n"
  },
  {
    "path": "ChatGPT.deployproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <Import Condition=\"Exists('$(BDS)\\bin\\CodeGear.Deployment.targets')\" Project=\"$(BDS)\\bin\\CodeGear.Deployment.targets\"/>\n    <ProjectExtensions>\n        <ProjectFileVersion>12</ProjectFileVersion>\n    </ProjectExtensions>\n    <PropertyGroup>\n        <DeviceId Condition=\"'$(Platform)'=='Android'\">127.0.0.1:58526</DeviceId>\n        <DeviceId Condition=\"'$(Platform)'=='Android64'\">127.0.0.1:58526</DeviceId>\n        <DeviceId Condition=\"'$(Platform)'=='iOSDevice64'\"/>\n        <DeviceId Condition=\"'$(Platform)'=='iOSSimARM64'\"/>\n    </PropertyGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='OSX64'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Win32'\">\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Win32\\sk4d.dll\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Win32\\sk4d.dll\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\1024.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\Assets\\</RemoteDir>\n            <RemoteName>Logo150x150.png</RemoteName>\n            <DeployClass>UWP_DelphiLogo150</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\play_store_512.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\Assets\\</RemoteDir>\n            <RemoteName>Logo44x44.png</RemoteName>\n            <DeployClass>UWP_DelphiLogo44</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Win32\\Debug\\ChatGPT.exe\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>ChatGPT.exe</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\sk4d.dll\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\sk4d.dll\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='Android64'\">\n        <DeployFile Include=\"Android64\\Release\\strings.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>strings.xml</RemoteName>\n            <DeployClass>Android_Strings</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\splash_image_def.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDef</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Android64\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\library\\lib\\arm64-v8a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Android64\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\library\\lib\\arm64-v8a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-night-anydpi-v21\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashDark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-night-anydpi-v21\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashDark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\styles-v31.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values-v31\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV31</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-normal\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage470</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-normal\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage470</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\mips\\libnative-activity.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\mips\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeMipsFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\libChatGPT.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\arm64-v8a\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\armeabi-v7a\\libnative-activity.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeArmeabiv7aFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\styles-v21.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values-v21\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\styles.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStyles</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon24</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon24</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\ic_launcher.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v26\\</RemoteDir>\n            <RemoteName>ic_launcher.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIcon</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v24\\</RemoteDir>\n            <RemoteName>ic_notification.xml</RemoteName>\n            <DeployClass>Android_VectorizedNotificationIcon</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v24\\</RemoteDir>\n            <RemoteName>ic_notification.xml</RemoteName>\n            <DeployClass>Android_VectorizedNotificationIcon</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplash</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplash</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\colors-night-v21.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values-night-v21\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_ColorsDark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\ic_launcher-v33.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v33\\</RemoteDir>\n            <RemoteName>ic_launcher.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconV33</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\AndroidManifest.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>AndroidManifest.xml</RemoteName>\n            <DeployClass>ProjectAndroidManifest</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\colors-night-v21.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values-night-v21\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_ColorsDark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\armeabi\\libnative-activity.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeArmeabiFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\colors.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_Colors</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-large\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage640</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-large\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage640</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_monochrome.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconMonochrome</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_monochrome.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconMonochrome</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\ChatGPT.classes\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\classes\\</RemoteDir>\n            <RemoteName>ChatGPT.classes</RemoteName>\n            <DeployClass>AndroidClasses</DeployClass>\n            <Operation>64</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\libChatGPT.so\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\library\\lib\\arm64-v8a\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binandroid32\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'=='' and '$(AndroidAppBundle)'=='true'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binandroid32\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'=='' and '$(AndroidAppBundle)'=='true'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\strings.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>strings.xml</RemoteName>\n            <DeployClass>Android_Strings</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\splash_image_def-v21.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v21\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDefV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\ic_launcher.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v26\\</RemoteDir>\n            <RemoteName>ic_launcher.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIcon</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\styles-v31.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values-v31\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV31</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v31\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashV31</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v31\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashV31</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\colors.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_Colors</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xlarge\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage960</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xlarge\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage960</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\provider_paths.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\xml\\</RemoteDir>\n            <RemoteName>provider_paths.xml</RemoteName>\n            <DeployClass>AndroidFileProvider</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binandroid64\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\library\\lib\\arm64-v8a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binandroid64\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\library\\lib\\arm64-v8a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon144</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon144</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_foreground.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconForeground</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_foreground.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconForeground</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\ic_launcher-v33.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v33\\</RemoteDir>\n            <RemoteName>ic_launcher.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconV33</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-ldpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-ldpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_background.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconBackground</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_background.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconBackground</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Android\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'!='' and '$(AndroidAppBundle)'=='true'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Android\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'!='' and '$(AndroidAppBundle)'=='true'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-night-anydpi-v31\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashV31Dark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-night-anydpi-v31\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashV31Dark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-small\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage426</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-small\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage426</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\splash_image_def-v21.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v21\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDefV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon192</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon192</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\AndroidManifest.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>AndroidManifest.xml</RemoteName>\n            <DeployClass>ProjectAndroidManifest</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\splash_image_def.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDef</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\ChatGPT.classes\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\classes\\</RemoteDir>\n            <RemoteName>ChatGPT.classes</RemoteName>\n            <DeployClass>AndroidClasses</DeployClass>\n            <Operation>64</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\styles.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStyles</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Release\\provider_paths.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\xml\\</RemoteDir>\n            <RemoteName>provider_paths.xml</RemoteName>\n            <DeployClass>AndroidFileProvider</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android64\\Debug\\styles-v21.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values-v21\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='Android'\">\n        <DeployFile Include=\"Android\\Debug\\splash_image_def-v21.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v21\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDefV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\styles-v31.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values-v31\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV31</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\colors.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_Colors</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Android\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Android\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\strings.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>strings.xml</RemoteName>\n            <DeployClass>Android_Strings</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\styles-v21.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values-v21\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-night-anydpi-v31\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashV31Dark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\ic_launcher-v33.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v33\\</RemoteDir>\n            <RemoteName>ic_launcher.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconV33</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_background.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconBackground</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\splash_image_def.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDef</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\res\\mipmap-xhdpi\\chatgptfmx.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-ldpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\res\\chatgptfmx36.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-ldpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(NDKBasePath)\\prebuilt\\android-arm\\gdbserver\\gdbserver\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>gdbserver</RemoteName>\n            <DeployClass>AndroidGDBServer</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-normal\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage470</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_470x320.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-normal\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage470</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_72x72.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\AndroidManifest.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>AndroidManifest.xml</RemoteName>\n            <DeployClass>ProjectAndroidManifest</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\styles.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStyles</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\provider_paths.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\xml\\</RemoteDir>\n            <RemoteName>provider_paths.xml</RemoteName>\n            <DeployClass>AndroidFileProvider</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon24</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_24x24.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon24</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-small\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage426</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_426x320.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-small\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage426</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\mips\\libnative-activity.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\mips\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeMipsFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\mips\\libnative-activity.so\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\library\\lib\\mips\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeMipsFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binandroid32\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binandroid32\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_monochrome.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconMonochrome</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplash</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-large\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage640</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_640x480.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-large\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage640</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\strings.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>strings.xml</RemoteName>\n            <DeployClass>Android_Strings</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\splash_image_def.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>splash_image_def.xml</RemoteName>\n            <DeployClass>AndroidSplashImageDef</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\styles.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStyles</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v31\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashV31</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xlarge\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage960</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_960x720.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xlarge\\</RemoteDir>\n            <RemoteName>splash_image.png</RemoteName>\n            <DeployClass>Android_SplashImage960</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon192</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\res\\mipmap-xxxhdpi\\chatgptfmx.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon192</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_48x48.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\styles-v21.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values-v21\\</RemoteDir>\n            <RemoteName>styles.xml</RemoteName>\n            <DeployClass>AndroidSplashStylesV21</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\res\\mipmap-hdpi\\chatgptfmx.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon72</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\armeabi\\libnative-activity.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeArmeabiFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\debug\\armeabi\\libnative-activity.so\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeArmeabiFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_36x36.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-hdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon36</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\ic_launcher.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v26\\</RemoteDir>\n            <RemoteName>ic_launcher.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIcon</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\colors.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\values\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_Colors</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-night-anydpi-v21\\</RemoteDir>\n            <RemoteName>splash_vector.xml</RemoteName>\n            <DeployClass>Android_VectorizedSplashDark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\colors-night-v21.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\values-night-v21\\</RemoteDir>\n            <RemoteName>colors.xml</RemoteName>\n            <DeployClass>Android_ColorsDark</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\libChatGPT.so\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\res\\mipmap-mdpi\\chatgptfmx.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-mdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon48</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_96x96.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxxhdpi\\</RemoteDir>\n            <RemoteName>ic_notification.png</RemoteName>\n            <DeployClass>Android_NotificationIcon96</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\release\\armeabi\\libnative-activity.so\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeArmeabiFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon144</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\res\\mipmap-xxhdpi\\chatgptfmx.png\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\drawable-xxhdpi\\</RemoteDir>\n            <RemoteName>ic_launcher.png</RemoteName>\n            <DeployClass>Android_LauncherIcon144</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable-anydpi-v24\\</RemoteDir>\n            <RemoteName>ic_notification.xml</RemoteName>\n            <DeployClass>Android_VectorizedNotificationIcon</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\res\\drawable\\</RemoteDir>\n            <RemoteName>ic_launcher_foreground.xml</RemoteName>\n            <DeployClass>Android_AdaptiveIconForeground</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\AndroidManifest.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>AndroidManifest.xml</RemoteName>\n            <DeployClass>ProjectAndroidManifest</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\ChatGPT.classes\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\classes\\</RemoteDir>\n            <RemoteName>ChatGPT.classes</RemoteName>\n            <DeployClass>AndroidClasses</DeployClass>\n            <Operation>64</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Debug\\libChatGPT.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\library\\lib\\armeabi-v7a\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\lib\\android\\release\\mips\\libnative-activity.so\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\library\\lib\\mips\\</RemoteDir>\n            <RemoteName>libChatGPT.so</RemoteName>\n            <DeployClass>AndroidLibnativeMipsFile</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\provider_paths.xml\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\res\\xml\\</RemoteDir>\n            <RemoteName>provider_paths.xml</RemoteName>\n            <DeployClass>AndroidFileProvider</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Android\\Release\\ChatGPT.classes\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\classes\\</RemoteDir>\n            <RemoteName>ChatGPT.classes</RemoteName>\n            <DeployClass>AndroidClasses</DeployClass>\n            <Operation>64</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='OSXARM64'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Win64'\">\n        <DeployFile Include=\"Res\\chatgptfmx\\play_store_512.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\Assets\\</RemoteDir>\n            <RemoteName>Logo44x44.png</RemoteName>\n            <DeployClass>UWP_DelphiLogo44</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"Res\\chatgptfmx\\1024.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\Assets\\</RemoteDir>\n            <RemoteName>Logo150x150.png</RemoteName>\n            <DeployClass>UWP_DelphiLogo150</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Win64\\sk4d.dll\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Win64\\sk4d.dll\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin64\\sk4d.dll\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin64\\sk4d.dll\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>sk4d.dll</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='iOSDevice64'\">\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_3x.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset\\</RemoteDir>\n            <RemoteName>FM_LaunchScreenImage_iPhone@3x.png</RemoteName>\n            <DeployClass>iPhone_Launch3x</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_152x152.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_ApplicationIcon_152x152.png</RemoteName>\n            <DeployClass>iPad_AppIcon152</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"iOSDevice64\\Debug\\ChatGPT.launchscreen\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\</RemoteDir>\n            <RemoteName>ChatGPT.launchscreen</RemoteName>\n            <DeployClass>ProjectiOSLaunchScreen</DeployClass>\n            <Operation>64</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SettingIcon_58x58.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_SettingIcon_58x58.png</RemoteName>\n            <DeployClass>iPad_Setting58</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_120x120.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_ApplicationIcon_120x120.png</RemoteName>\n            <DeployClass>iPhone_AppIcon120</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SpotlightSearchIcon_80x80.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_SpotlightSearchIcon_80x80.png</RemoteName>\n            <DeployClass>iPad_SpotLight80</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"iOSDevice64\\Debug\\ChatGPT.entitlements\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\</RemoteDir>\n            <RemoteName>ChatGPT.entitlements</RemoteName>\n            <DeployClass>ProjectiOSEntitlements</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_1024x1024.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_ApplicationIcon_1024x1024.png</RemoteName>\n            <DeployClass>iOS_AppStore1024</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_2x.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset\\</RemoteDir>\n            <RemoteName>FM_LaunchScreenImage_iPhone@2x.png</RemoteName>\n            <DeployClass>iPhone_Launch2x</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_167x167.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_ApplicationIcon_167x167.png</RemoteName>\n            <DeployClass>iPad_AppIcon167</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImageDark_2x.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset\\</RemoteDir>\n            <RemoteName>FM_LaunchScreenImage_iPadDark@2x.png</RemoteName>\n            <DeployClass>iPad_LaunchDark2x</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_120x120.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_SpotlightSearchIcon_120x120.png</RemoteName>\n            <DeployClass>iPhone_Spotlight120</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_40x40.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_NotificationIcon_40x40.png</RemoteName>\n            <DeployClass>iPhone_Notification40</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"iOSDevice64\\Debug\\ChatGPT.info.plist\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\</RemoteDir>\n            <RemoteName>Info.plist</RemoteName>\n            <DeployClass>ProjectiOSInfoPList</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_60x60.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_NotificationIcon_60x60.png</RemoteName>\n            <DeployClass>iPhone_Notification60</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_58x58.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_SettingIcon_58x58.png</RemoteName>\n            <DeployClass>iPhone_Setting58</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_87x87.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_SettingIcon_87x87.png</RemoteName>\n            <DeployClass>iPhone_Setting87</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_80x80.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_SpotlightSearchIcon_80x80.png</RemoteName>\n            <DeployClass>iPhone_Spotlight80</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"iOSDevice64\\Debug\\ChatGPT\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\</RemoteDir>\n            <RemoteName>ChatGPT</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_180x180.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_ApplicationIcon_180x180.png</RemoteName>\n            <DeployClass>iPhone_AppIcon180</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_NotificationIcon_40x40.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset\\</RemoteDir>\n            <RemoteName>FM_NotificationIcon_40x40.png</RemoteName>\n            <DeployClass>iPad_Notification40</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_3x.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset\\</RemoteDir>\n            <RemoteName>FM_LaunchScreenImage_iPhoneDark@3x.png</RemoteName>\n            <DeployClass>iPhone_LaunchDark3x</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"iOSDevice64\\Debug\\ChatGPT.dSYM\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF\\</RemoteDir>\n            <RemoteName>ChatGPT</RemoteName>\n            <DeployClass>ProjectiOSDeviceDebug</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImage_2x.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset\\</RemoteDir>\n            <RemoteName>FM_LaunchScreenImage_iPad@2x.png</RemoteName>\n            <DeployClass>iPad_Launch2x</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_2x.png\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT.app\\..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset\\</RemoteDir>\n            <RemoteName>FM_LaunchScreenImage_iPhoneDark@2x.png</RemoteName>\n            <DeployClass>iPhone_LaunchDark2x</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='iOSSimARM64'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Win64x'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Linux64'\">\n        <DeployFile Include=\"Linux64\\Release\\ChatGPT\" Condition=\"'$(Config)'=='Release'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>ChatGPT</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Linux64\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(SKIADIR)\\Binary\\Shared\\Linux64\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'!=''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"Linux64\\Debug\\ChatGPT\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>ChatGPT</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"FunctionsLib\\Linux64\\Debug\\libgpt_function_owm.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>ChatGPT\\funcs\\</RemoteDir>\n            <RemoteName>libgpt_function_owm.so</RemoteName>\n            <DeployClass>File</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binlinux64\\libsk4d.so\" Condition=\"'$(Config)'=='Debug' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n        <DeployFile Include=\"$(BDS)\\binlinux64\\libsk4d.so\" Condition=\"'$(Config)'=='Release' And '$(SKIADIR)'==''\">\n            <RemoteDir>ChatGPT\\</RemoteDir>\n            <RemoteName>libsk4d.so</RemoteName>\n            <DeployClass>Skia</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n    </ItemGroup>\n</Project>\n"
  },
  {
    "path": "ChatGPT.dpr",
    "content": "﻿program ChatGPT;\n\n{$IF DEFINED(ANDROID) OR DEFINED(IOS) OR DEFINED(IOS64)}\n  {$DEFINE MOBILE}\n{$ENDIF}\n\nuses\n  System.StartUpCopy,\n  FMX.Forms,\n  FMX.Types,\n  FMX.Skia,\n  ChatGPT.Main in 'ChatGPT.Main.pas' {FormMain},\n  OpenAI.API.Params in 'DelphiOpenAI\\OpenAI.API.Params.pas',\n  OpenAI.API in 'DelphiOpenAI\\OpenAI.API.pas',\n  OpenAI.Completions in 'DelphiOpenAI\\OpenAI.Completions.pas',\n  OpenAI.Edits in 'DelphiOpenAI\\OpenAI.Edits.pas',\n  OpenAI.Embeddings in 'DelphiOpenAI\\OpenAI.Embeddings.pas',\n  OpenAI.Engines in 'DelphiOpenAI\\OpenAI.Engines.pas',\n  OpenAI.Errors in 'DelphiOpenAI\\OpenAI.Errors.pas',\n  OpenAI.Files in 'DelphiOpenAI\\OpenAI.Files.pas',\n  OpenAI.FineTunes in 'DelphiOpenAI\\OpenAI.FineTunes.pas',\n  OpenAI.Images in 'DelphiOpenAI\\OpenAI.Images.pas',\n  OpenAI.Models in 'DelphiOpenAI\\OpenAI.Models.pas',\n  OpenAI.Moderations in 'DelphiOpenAI\\OpenAI.Moderations.pas',\n  OpenAI in 'DelphiOpenAI\\OpenAI.pas',\n  ChatGPT.FrameChat in 'ChatGPT.FrameChat.pas' {FrameChat: TFrame},\n  ChatGPT.FrameMessage in 'ChatGPT.FrameMessage.pas' {FrameMessage: TFrame},\n  OpenAI.Chat in 'DelphiOpenAI\\OpenAI.Chat.pas',\n  OpenAI.Audio in 'DelphiOpenAI\\OpenAI.Audio.pas',\n  OpenAI.Utils.ChatHistory in 'DelphiOpenAI\\OpenAI.Utils.ChatHistory.pas',\n  ChatGPT.FrameImagePreview in 'ChatGPT.FrameImagePreview.pas',\n  ChatGPT.FrameImage in 'ChatGPT.FrameImage.pas',\n  ChatGPT.FrameCode in 'ChatGPT.FrameCode.pas' {FrameCode: TFrame},\n  ChatGPT.Classes in 'ChatGPT.Classes.pas',\n  ChatGPT.FrameSVG in 'ChatGPT.FrameSVG.pas' {FrameSVG: TFrame},\n  ChatGPT.FramePlainText in 'ChatGPT.FramePlainText.pas' {FrameText},\n  DarkModeApi.Consts in 'WindowDarkMode\\DarkModeApi.Consts.pas',\n  DarkModeApi.FMX in 'WindowDarkMode\\DarkModeApi.FMX.pas',\n  DarkModeApi in 'WindowDarkMode\\DarkModeApi.pas',\n  DarkModeApi.Types in 'WindowDarkMode\\DarkModeApi.Types.pas',\n  ChatGPT.Overlay in 'ChatGPT.Overlay.pas' {FrameOveraly: TFrame},\n  ChatGPT.Settings in 'ChatGPT.Settings.pas' {FrameSettings: TFrame},\n  ChatGPT.ChatSettings in 'ChatGPT.ChatSettings.pas' {FrameChatSettings: TFrame},\n  ChatGPT.FrameUIMessage in 'ChatGPT.FrameUIMessage.pas' {FrameUIMessage: TFrame},\n  ChatGPT.Code in 'ChatGPT.Code.pas',\n  HGM.FMX.Image in 'HGM.FMX.Image.pas',\n  HGM.FMX.Ani in 'HGM.FMX.Ani.pas',\n  ChatGPT.About in 'ChatGPT.About.pas' {FrameAbout: TFrame},\n  ChatGPT.SoundRecorder in 'ChatGPT.SoundRecorder.pas',\n  ChatGPT.Android in 'ChatGPT.Android.pas',\n  OpenAI.Chat.Functions in 'DelphiOpenAI\\OpenAI.Chat.Functions.pas',\n  OpenAI.Chat.Functions.Samples in 'DelphiOpenAI\\OpenAI.Chat.Functions.Samples.pas',\n  ChatGPT.Functions in 'ChatGPT.Functions.pas',\n  ChatGPT.Functions.External in 'ChatGPT.Functions.External.pas',\n  ChatGPT.Functions.External.Intf in 'ChatGPT.Functions.External.Intf.pas',\n  ChatGPT.LoadedFunctions in 'ChatGPT.LoadedFunctions.pas' {FrameLoadedFunctions: TFrame},\n  ChatGPT.TextEditor in 'ChatGPT.TextEditor.pas' {FrameTextEditor},\n  ChatGPT.ImportExport in 'ChatGPT.ImportExport.pas' {FrameImportExport: TFrame},\n  OpenAI.FineTuning in 'DelphiOpenAI\\OpenAI.FineTuning.pas',\n  ChatGPT.Manager in 'ChatGPT.Manager.pas' {Manager: TDataModule},\n  OpenAI.Types in 'DelphiOpenAI\\OpenAI.Types.pas',\n  OpenAI.Utils.Base64 in 'DelphiOpenAI\\OpenAI.Utils.Base64.pas',\n  OpenAI.Utils.ObjectHolder in 'DelphiOpenAI\\OpenAI.Utils.ObjectHolder.pas',\n  OpenAI.Assistants in 'DelphiOpenAI\\OpenAI.Assistants.pas',\n  OpenAI.Utils.JSON.Cleaner in 'DelphiOpenAI\\OpenAI.Utils.JSON.Cleaner.pas',\n  FMX.RichEdit.Style in 'FMXRichMemo\\FMX.RichEdit.Style.pas',\n  FMX.StyledContextMenu in 'FMXRichMemo\\FMX.StyledContextMenu.pas',\n  Syntax.Code.CSS in 'FMXRichMemo\\Syntax.Code.CSS.pas',\n  Syntax.Code.HTML in 'FMXRichMemo\\Syntax.Code.HTML.pas',\n  Syntax.Code.JSON in 'FMXRichMemo\\Syntax.Code.JSON.pas',\n  Syntax.Code.MarkDown in 'FMXRichMemo\\Syntax.Code.MarkDown.pas',\n  Syntax.Code in 'FMXRichMemo\\Syntax.Code.pas',\n  Syntax.Code.Pascal in 'FMXRichMemo\\Syntax.Code.Pascal.pas',\n  Syntax.Code.Python in 'FMXRichMemo\\Syntax.Code.Python.pas',\n  Syntax.Code.SQL in 'FMXRichMemo\\Syntax.Code.SQL.pas';\n\n{$R *.res}\n\nbegin\n  {$IFDEF MOBILE}\n  GlobalUseSkia := True;\n  //GlobalUseSkiaRasterWhenAvailable := False;\n  //GlobalPreferredFramesPerSecond := 120;\n  //GlobalDisableSkiaCodecsReplacement := True;\n  {$ENDIF}\n  Application.Initialize;\n  Application.CreateForm(TManager, Manager);\n  Application.CreateForm(TFormMain, FormMain);\n  Application.Run;\nend.\n\n"
  },
  {
    "path": "ChatGPT.dproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <PropertyGroup>\n        <ProjectGuid>{C8E3829F-F48A-4A7C-8D0F-FAFAF9C9B5FF}</ProjectGuid>\n        <ProjectVersion>20.4</ProjectVersion>\n        <FrameworkType>FMX</FrameworkType>\n        <Base>True</Base>\n        <Config Condition=\"'$(Config)'==''\">Debug</Config>\n        <Platform Condition=\"'$(Platform)'==''\">Win32</Platform>\n        <TargetedPlatforms>558227</TargetedPlatforms>\n        <AppType>Application</AppType>\n        <MainSource>ChatGPT.dpr</MainSource>\n        <ProjectName Condition=\"'$(ProjectName)'==''\">ChatGPT</ProjectName>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''\">\n        <Base_Android>true</Base_Android>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''\">\n        <Base_Android64>true</Base_Android64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''\">\n        <Base_iOSDevice64>true</Base_iOSDevice64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSSimARM64' and '$(Base)'=='true') or '$(Base_iOSSimARM64)'!=''\">\n        <Base_iOSSimARM64>true</Base_iOSSimARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSX64' and '$(Base)'=='true') or '$(Base_OSX64)'!=''\">\n        <Base_OSX64>true</Base_OSX64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSXARM64' and '$(Base)'=='true') or '$(Base_OSXARM64)'!=''\">\n        <Base_OSXARM64>true</Base_OSXARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''\">\n        <Base_Win32>true</Base_Win32>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''\">\n        <Base_Win64>true</Base_Win64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_1)'!=''\">\n        <Cfg_1>true</Cfg_1>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android' and '$(Cfg_1)'=='true') or '$(Cfg_1_Android)'!=''\">\n        <Cfg_1_Android>true</Cfg_1_Android>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Android64)'!=''\">\n        <Cfg_1_Android64>true</Cfg_1_Android64>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSDevice64' and '$(Cfg_1)'=='true') or '$(Cfg_1_iOSDevice64)'!=''\">\n        <Cfg_1_iOSDevice64>true</Cfg_1_iOSDevice64>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''\">\n        <Cfg_1_Win32>true</Cfg_1_Win32>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''\">\n        <Cfg_1_Win64>true</Cfg_1_Win64>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_2)'!=''\">\n        <Cfg_2>true</Cfg_2>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android' and '$(Cfg_2)'=='true') or '$(Cfg_2_Android)'!=''\">\n        <Cfg_2_Android>true</Cfg_2_Android>\n        <CfgParent>Cfg_2</CfgParent>\n        <Cfg_2>true</Cfg_2>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Android64)'!=''\">\n        <Cfg_2_Android64>true</Cfg_2_Android64>\n        <CfgParent>Cfg_2</CfgParent>\n        <Cfg_2>true</Cfg_2>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''\">\n        <Cfg_2_Win32>true</Cfg_2_Win32>\n        <CfgParent>Cfg_2</CfgParent>\n        <Cfg_2>true</Cfg_2>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''\">\n        <Cfg_2_Win64>true</Cfg_2_Win64>\n        <CfgParent>Cfg_2</CfgParent>\n        <Cfg_2>true</Cfg_2>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base)'!=''\">\n        <DCC_DcuOutput>.\\$(Platform)\\$(Config)</DCC_DcuOutput>\n        <DCC_ExeOutput>.\\$(Platform)\\$(Config)</DCC_ExeOutput>\n        <DCC_E>false</DCC_E>\n        <DCC_N>false</DCC_N>\n        <DCC_S>false</DCC_S>\n        <DCC_F>false</DCC_F>\n        <DCC_K>false</DCC_K>\n        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>\n        <AUP_ACCESS_COARSE_LOCATION>true</AUP_ACCESS_COARSE_LOCATION>\n        <AUP_ACCESS_FINE_LOCATION>true</AUP_ACCESS_FINE_LOCATION>\n        <AUP_CALL_PHONE>true</AUP_CALL_PHONE>\n        <AUP_CAMERA>true</AUP_CAMERA>\n        <AUP_INTERNET>true</AUP_INTERNET>\n        <AUP_READ_EXTERNAL_STORAGE>true</AUP_READ_EXTERNAL_STORAGE>\n        <AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE>\n        <AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE>\n        <Icon_MainIcon>$(BDS)\\bin\\delphi_PROJECTICON.ico</Icon_MainIcon>\n        <Icns_MainIcns>$(BDS)\\bin\\delphi_PROJECTICNS.icns</Icns_MainIcns>\n        <SanitizedProjectName>ChatGPT</SanitizedProjectName>\n        <DCC_Define>NEW_MEMO;SKIA;$(DCC_Define)</DCC_Define>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android)'!=''\">\n        <DCC_UsePackage>fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.1.30;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <Android_LauncherIcon36>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>\n        <Android_LauncherIcon48>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>\n        <Android_LauncherIcon72>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>\n        <Android_LauncherIcon96>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>\n        <Android_LauncherIcon144>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>\n        <Android_LauncherIcon192>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>\n        <Android_SplashImage426>$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png</Android_SplashImage426>\n        <Android_SplashImage470>$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png</Android_SplashImage470>\n        <Android_SplashImage640>$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png</Android_SplashImage640>\n        <Android_SplashImage960>$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png</Android_SplashImage960>\n        <Android_NotificationIcon24>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>\n        <Android_NotificationIcon36>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>\n        <Android_NotificationIcon48>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>\n        <Android_NotificationIcon72>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>\n        <Android_NotificationIcon96>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>\n        <EnabledSysJars>activity-1.7.2.dex.jar;annotation-experimental-1.3.0.dex.jar;annotation-jvm-1.6.0.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-6.0.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.10.1.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.10.1.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.1.dex.jar;lifecycle-livedata-2.6.1.dex.jar;lifecycle-livedata-core-2.6.1.dex.jar;lifecycle-runtime-2.6.1.dex.jar;lifecycle-service-2.6.1.dex.jar;lifecycle-viewmodel-2.6.1.dex.jar;lifecycle-viewmodel-savedstate-2.6.1.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.1.0.dex.jar;play-services-basement-18.1.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.0.2.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar</EnabledSysJars>\n        <VerInfo_Build>1</VerInfo_Build>\n        <Android_NotificationAccentColor>#000000</Android_NotificationAccentColor>\n        <EL_SecureFileSharing>true</EL_SecureFileSharing>\n        <AUP_CALL_PHONE>false</AUP_CALL_PHONE>\n        <AUP_CAMERA>false</AUP_CAMERA>\n        <AUP_READ_PHONE_STATE>false</AUP_READ_PHONE_STATE>\n        <PF_KeyStore>Keys\\AndroidKey.keystore</PF_KeyStore>\n        <PF_KeyStorePass>852E47FF5FBE07BACF62E567A4037BF3E41508107EECECF19F500FFA8E613CC1DB2AA38CE3111C2FC1E2573AFACFC36BBAE83658042922D216784587E5FC22A2C924F30FD545FA8FBFBBAF5307131D6A921D3E581DAE0939E3EC</PF_KeyStorePass>\n        <PF_AliasKey>chatgptkey</PF_AliasKey>\n        <Android_BackgroundColor>#FFFFFF</Android_BackgroundColor>\n        <Android_SplashGravity>center</Android_SplashGravity>\n        <Android_DarkBackgroundColor>#000000</Android_DarkBackgroundColor>\n        <IncludeAndroid_AdaptiveIcon>True</IncludeAndroid_AdaptiveIcon>\n        <Android_AdaptiveIconBackground>$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml</Android_AdaptiveIconBackground>\n        <IncludeAndroid_VectorizedSplash>True</IncludeAndroid_VectorizedSplash>\n        <IncludeAndroid_VectorizedNotificationIcon>True</IncludeAndroid_VectorizedNotificationIcon>\n        <Android_VectorizedSplash>$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml</Android_VectorizedSplash>\n        <Android_VectorizedSplashDark>$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml</Android_VectorizedSplashDark>\n        <Android_AdaptiveIconForeground>$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml</Android_AdaptiveIconForeground>\n        <Android_VectorizedNotificationIcon>$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml</Android_VectorizedNotificationIcon>\n        <Android_AdaptiveIconMonochrome>$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml</Android_AdaptiveIconMonochrome>\n        <Android_VectorizedSplashV31Dark>$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml</Android_VectorizedSplashV31Dark>\n        <Android_VectorizedSplashV31>$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml</Android_VectorizedSplashV31>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android64)'!=''\">\n        <DCC_UsePackage>fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;DBXInterBaseDriver;IndySystem;RadiantShapesFmx;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.1.30;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <Android_LauncherIcon36>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>\n        <Android_LauncherIcon48>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>\n        <Android_LauncherIcon72>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>\n        <Android_LauncherIcon96>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>\n        <Android_LauncherIcon144>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>\n        <Android_LauncherIcon192>$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>\n        <Android_SplashImage426>$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png</Android_SplashImage426>\n        <Android_SplashImage470>$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png</Android_SplashImage470>\n        <Android_SplashImage640>$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png</Android_SplashImage640>\n        <Android_SplashImage960>$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png</Android_SplashImage960>\n        <Android_NotificationIcon24>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>\n        <Android_NotificationIcon36>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>\n        <Android_NotificationIcon48>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>\n        <Android_NotificationIcon72>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>\n        <Android_NotificationIcon96>$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>\n        <EnabledSysJars>activity-1.7.2.dex.jar;annotation-experimental-1.3.0.dex.jar;annotation-jvm-1.6.0.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-6.0.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.10.1.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.10.1.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.1.dex.jar;lifecycle-livedata-2.6.1.dex.jar;lifecycle-livedata-core-2.6.1.dex.jar;lifecycle-runtime-2.6.1.dex.jar;lifecycle-service-2.6.1.dex.jar;lifecycle-viewmodel-2.6.1.dex.jar;lifecycle-viewmodel-savedstate-2.6.1.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.1.0.dex.jar;play-services-basement-18.1.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.0.2.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar</EnabledSysJars>\n        <AUP_ACCESS_COARSE_LOCATION>false</AUP_ACCESS_COARSE_LOCATION>\n        <AUP_ACCESS_FINE_LOCATION>false</AUP_ACCESS_FINE_LOCATION>\n        <AUP_CALL_PHONE>false</AUP_CALL_PHONE>\n        <AUP_CAMERA>false</AUP_CAMERA>\n        <AUP_READ_PHONE_STATE>false</AUP_READ_PHONE_STATE>\n        <VerInfo_Build>1</VerInfo_Build>\n        <Android_NotificationAccentColor>#000000</Android_NotificationAccentColor>\n        <EL_SecureFileSharing>true</EL_SecureFileSharing>\n        <PF_KeyStore>Keys\\AndroidKey.keystore</PF_KeyStore>\n        <PF_KeyStorePass>852E47FF5FBE07BACF62E567A4037BF3E41508107EECECF19F500FFA8E613CC1DB2AA38CE3111C2FC1E2573AFACFC36BBAE83658042922D216784587E5FC22A2C924F30FD545FA8FBFBBAF5307131D6A921D3E581DAE0939E3EC</PF_KeyStorePass>\n        <PF_AliasKey>chatgptkey</PF_AliasKey>\n        <Android_BackgroundColor>#FFFFFF</Android_BackgroundColor>\n        <Android_SplashGravity>center</Android_SplashGravity>\n        <Android_DarkBackgroundColor>#000000</Android_DarkBackgroundColor>\n        <IncludeAndroid_AdaptiveIcon>True</IncludeAndroid_AdaptiveIcon>\n        <IncludeAndroid_VectorizedSplash>True</IncludeAndroid_VectorizedSplash>\n        <Android_AdaptiveIconBackground>$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml</Android_AdaptiveIconBackground>\n        <Android_AdaptiveIconForeground>$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml</Android_AdaptiveIconForeground>\n        <IncludeAndroid_VectorizedNotificationIcon>True</IncludeAndroid_VectorizedNotificationIcon>\n        <Android_VectorizedSplash>$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml</Android_VectorizedSplash>\n        <Android_VectorizedSplashDark>$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml</Android_VectorizedSplashDark>\n        <Android_VectorizedSplashV31>$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml</Android_VectorizedSplashV31>\n        <Android_VectorizedNotificationIcon>$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml</Android_VectorizedNotificationIcon>\n        <Android_AdaptiveIconMonochrome>$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml</Android_AdaptiveIconMonochrome>\n        <Android_VectorizedSplashV31Dark>$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml</Android_VectorizedSplashV31Dark>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSDevice64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>\n        <iOS_AppStore1024>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_1024x1024.png</iOS_AppStore1024>\n        <iPhone_AppIcon120>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>\n        <iPhone_AppIcon180>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>\n        <iPhone_Launch2x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_2x.png</iPhone_Launch2x>\n        <iPhone_LaunchDark2x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_2x.png</iPhone_LaunchDark2x>\n        <iPhone_Launch3x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_3x.png</iPhone_Launch3x>\n        <iPhone_LaunchDark3x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_3x.png</iPhone_LaunchDark3x>\n        <iPhone_Spotlight80>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>\n        <iPhone_Spotlight120>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_120x120.png</iPhone_Spotlight120>\n        <iPhone_Setting58>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_58x58.png</iPhone_Setting58>\n        <iPhone_Setting87>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_87x87.png</iPhone_Setting87>\n        <iPhone_Notification40>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_40x40.png</iPhone_Notification40>\n        <iPhone_Notification60>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_60x60.png</iPhone_Notification60>\n        <iPad_AppIcon152>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>\n        <iPad_AppIcon167>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_167x167.png</iPad_AppIcon167>\n        <iPad_Launch2x>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImage_2x.png</iPad_Launch2x>\n        <iPad_LaunchDark2x>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImageDark_2x.png</iPad_LaunchDark2x>\n        <iPad_SpotLight80>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>\n        <iPad_Setting58>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SettingIcon_58x58.png</iPad_Setting58>\n        <iPad_Notification40>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_NotificationIcon_40x40.png</iPad_Notification40>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSSimARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <iOS_AppStore1024>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_1024x1024.png</iOS_AppStore1024>\n        <iPhone_AppIcon120>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>\n        <iPhone_AppIcon180>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>\n        <iPhone_Launch2x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_2x.png</iPhone_Launch2x>\n        <iPhone_LaunchDark2x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_2x.png</iPhone_LaunchDark2x>\n        <iPhone_Launch3x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_3x.png</iPhone_Launch3x>\n        <iPhone_LaunchDark3x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_3x.png</iPhone_LaunchDark3x>\n        <iPhone_Spotlight80>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>\n        <iPhone_Spotlight120>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_120x120.png</iPhone_Spotlight120>\n        <iPhone_Setting58>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_58x58.png</iPhone_Setting58>\n        <iPhone_Setting87>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_87x87.png</iPhone_Setting87>\n        <iPhone_Notification40>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_40x40.png</iPhone_Notification40>\n        <iPhone_Notification60>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_60x60.png</iPhone_Notification60>\n        <iPad_AppIcon152>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>\n        <iPad_AppIcon167>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_167x167.png</iPad_AppIcon167>\n        <iPad_Launch2x>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImage_2x.png</iPad_Launch2x>\n        <iPad_LaunchDark2x>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImageDark_2x.png</iPad_LaunchDark2x>\n        <iPad_SpotLight80>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>\n        <iPad_Setting58>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SettingIcon_58x58.png</iPad_Setting58>\n        <iPad_Notification40>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_NotificationIcon_40x40.png</iPad_Notification40>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSX64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSXARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win32)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;DzHTMLText_VCL;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;OSMMapDXE2;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;VKComponents;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <Manifest_File>$(BDS)\\bin\\default_app.manifest</Manifest_File>\n        <UWP_DelphiLogo44>Res\\chatgptfmx\\play_store_512.png</UWP_DelphiLogo44>\n        <UWP_DelphiLogo150>Res\\chatgptfmx\\1024.png</UWP_DelphiLogo150>\n        <Icon_MainIcon>Res\\chatgptfmx\\chatgptfmx.ico</Icon_MainIcon>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win64)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;DzHTMLText_VCL;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <Manifest_File>$(BDS)\\bin\\default_app.manifest</Manifest_File>\n        <UWP_DelphiLogo44>Res\\chatgptfmx\\play_store_512.png</UWP_DelphiLogo44>\n        <UWP_DelphiLogo150>Res\\chatgptfmx\\1024.png</UWP_DelphiLogo150>\n        <Icon_MainIcon>Res\\chatgptfmx\\chatgptfmx.ico</Icon_MainIcon>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n        <DCC_DebugDCUs>true</DCC_DebugDCUs>\n        <DCC_Optimize>false</DCC_Optimize>\n        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>\n        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>\n        <DCC_RemoteDebug>true</DCC_RemoteDebug>\n        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>\n        <DCC_RangeChecking>true</DCC_RangeChecking>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Android)'!=''\">\n        <AUP_READ_PHONE_STATE>false</AUP_READ_PHONE_STATE>\n        <AUP_MANAGE_EXTERNAL_STORAGE>true</AUP_MANAGE_EXTERNAL_STORAGE>\n        <AUP_MANAGE_MEDIA>true</AUP_MANAGE_MEDIA>\n        <VerInfo_Build>1</VerInfo_Build>\n        <AUP_CAMERA>false</AUP_CAMERA>\n        <AUP_CALL_PHONE>false</AUP_CALL_PHONE>\n        <AUP_ACCESS_COARSE_LOCATION>false</AUP_ACCESS_COARSE_LOCATION>\n        <AUP_ACCESS_FINE_LOCATION>false</AUP_ACCESS_FINE_LOCATION>\n        <AUP_RECORD_AUDIO>true</AUP_RECORD_AUDIO>\n        <IncludeAndroid_AdaptiveIcon>true</IncludeAndroid_AdaptiveIcon>\n        <IncludeAndroid_VectorizedSplash>true</IncludeAndroid_VectorizedSplash>\n        <Android_BackgroundColor>#FFFFFF</Android_BackgroundColor>\n        <Android_DarkBackgroundColor>#000000</Android_DarkBackgroundColor>\n        <IncludeAndroid_VectorizedNotificationIcon>true</IncludeAndroid_VectorizedNotificationIcon>\n        <Debugger_RunParams>-debugport=58526</Debugger_RunParams>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Android64)'!=''\">\n        <VerInfo_Build>1</VerInfo_Build>\n        <DCC_GenerateAndroidAppBundleFile>true</DCC_GenerateAndroidAppBundleFile>\n        <IncludeAndroid_AdaptiveIcon>true</IncludeAndroid_AdaptiveIcon>\n        <IncludeAndroid_VectorizedSplash>true</IncludeAndroid_VectorizedSplash>\n        <Android_BackgroundColor>#FFFFFF</Android_BackgroundColor>\n        <Android_DarkBackgroundColor>#000000</Android_DarkBackgroundColor>\n        <IncludeAndroid_VectorizedNotificationIcon>true</IncludeAndroid_VectorizedNotificationIcon>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_iOSDevice64)'!=''\">\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_BundleId>MXZ5UB382L.HGM.Test1</VerInfo_BundleId>\n        <PF_DevDebug>Apple Development: alinvip@mail.ru (R5URB387M5)</PF_DevDebug>\n        <PF_MobileProvisionDebug>2b306d7e-7dc7-42bb-b4bb-050fdf9dd764</PF_MobileProvisionDebug>\n        <PF_DevTeamIdDebug>MXZ5UB382L</PF_DevTeamIdDebug>\n        <PF_MobileProvisionPathDebug>/Users/hemulgm/Library/MobileDevice/Provisioning Profiles/2b306d7e-7dc7-42bb-b4bb-050fdf9dd764.mobileprovision</PF_MobileProvisionPathDebug>\n        <PF_KeyChainAccessDebug>MXZ5UB382L.HGM.Test1;</PF_KeyChainAccessDebug>\n        <PF_AppIdentifierDebug>MXZ5UB382L.HGM.Test1</PF_AppIdentifierDebug>\n        <PF_EntitlementExtraKeyValuesDebug>&lt;key&gt;get-task-allow&lt;/key&gt;&lt;true/&gt;&lt;key&gt;com.apple.developer.team-identifier&lt;/key&gt;&lt;string&gt;MXZ5UB382L&lt;/string&gt;</PF_EntitlementExtraKeyValuesDebug>\n        <PF_AutoMobileProvisionDebug>False</PF_AutoMobileProvisionDebug>\n        <PF_AutoCertificateDebug>False</PF_AutoCertificateDebug>\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=MXZ5UB382L.HGM.Test1;CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Win32)'!=''\">\n        <DCC_RemoteDebug>false</DCC_RemoteDebug>\n        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <Icon_MainIcon>Res\\chatgptfmx\\chatgptfmx.ico</Icon_MainIcon>\n        <DCC_OutputXMLDocumentation>true</DCC_OutputXMLDocumentation>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Win64)'!=''\">\n        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n        <DCC_DebugInformation>0</DCC_DebugInformation>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2_Android)'!=''\">\n        <VerInfo_Build>1</VerInfo_Build>\n        <BT_BuildType>AppStore</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2_Android64)'!=''\">\n        <VerInfo_Build>2</VerInfo_Build>\n        <BT_BuildType>AppStore</BT_BuildType>\n        <IncludeAndroid_AdaptiveIcon>true</IncludeAndroid_AdaptiveIcon>\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=2;versionName=1.1.30;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36</VerInfo_Keys>\n        <IncludeAndroid_VectorizedSplash>true</IncludeAndroid_VectorizedSplash>\n        <Android_BackgroundColor>#FFFFFF</Android_BackgroundColor>\n        <Android_DarkBackgroundColor>#000000</Android_DarkBackgroundColor>\n        <IncludeAndroid_VectorizedNotificationIcon>true</IncludeAndroid_VectorizedNotificationIcon>\n        <DCC_GenerateAndroidAppBundleFile>true</DCC_GenerateAndroidAppBundleFile>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2_Win32)'!=''\">\n        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2_Win64)'!=''\">\n        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <ItemGroup>\n        <DelphiCompile Include=\"$(MainSource)\">\n            <MainSource>MainSource</MainSource>\n        </DelphiCompile>\n        <DCCReference Include=\"ChatGPT.Main.pas\">\n            <Form>FormMain</Form>\n        </DCCReference>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.API.Params.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.API.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Completions.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Edits.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Embeddings.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Engines.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Errors.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Files.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.FineTunes.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Images.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Models.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Moderations.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.pas\"/>\n        <DCCReference Include=\"ChatGPT.FrameChat.pas\">\n            <Form>FrameChat</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.FrameMessage.pas\">\n            <Form>FrameMessage</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Chat.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Audio.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Utils.ChatHistory.pas\"/>\n        <DCCReference Include=\"ChatGPT.FrameImagePreview.pas\"/>\n        <DCCReference Include=\"ChatGPT.FrameImage.pas\"/>\n        <DCCReference Include=\"ChatGPT.FrameCode.pas\">\n            <Form>FrameCode</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.Classes.pas\"/>\n        <DCCReference Include=\"ChatGPT.FrameSVG.pas\">\n            <Form>FrameSVG</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.FramePlainText.pas\">\n            <Form>FrameText</Form>\n        </DCCReference>\n        <DCCReference Include=\"WindowDarkMode\\DarkModeApi.Consts.pas\"/>\n        <DCCReference Include=\"WindowDarkMode\\DarkModeApi.FMX.pas\"/>\n        <DCCReference Include=\"WindowDarkMode\\DarkModeApi.pas\"/>\n        <DCCReference Include=\"WindowDarkMode\\DarkModeApi.Types.pas\"/>\n        <DCCReference Include=\"ChatGPT.Overlay.pas\">\n            <Form>FrameOveraly</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.Settings.pas\">\n            <Form>FrameSettings</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.ChatSettings.pas\">\n            <Form>FrameChatSettings</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.FrameUIMessage.pas\">\n            <Form>FrameUIMessage</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.Code.pas\"/>\n        <DCCReference Include=\"HGM.FMX.Image.pas\"/>\n        <DCCReference Include=\"HGM.FMX.Ani.pas\"/>\n        <DCCReference Include=\"ChatGPT.About.pas\">\n            <Form>FrameAbout</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.SoundRecorder.pas\"/>\n        <DCCReference Include=\"ChatGPT.Android.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Chat.Functions.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Chat.Functions.Samples.pas\"/>\n        <DCCReference Include=\"ChatGPT.Functions.pas\"/>\n        <DCCReference Include=\"ChatGPT.Functions.External.pas\"/>\n        <DCCReference Include=\"ChatGPT.Functions.External.Intf.pas\"/>\n        <DCCReference Include=\"ChatGPT.LoadedFunctions.pas\">\n            <Form>FrameLoadedFunctions</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.TextEditor.pas\">\n            <Form>FrameTextEditor</Form>\n        </DCCReference>\n        <DCCReference Include=\"ChatGPT.ImportExport.pas\">\n            <Form>FrameImportExport</Form>\n            <DesignClass>TFrame</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.FineTuning.pas\"/>\n        <DCCReference Include=\"ChatGPT.Manager.pas\">\n            <Form>Manager</Form>\n            <DesignClass>TDataModule</DesignClass>\n        </DCCReference>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Types.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Utils.Base64.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Utils.ObjectHolder.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Assistants.pas\"/>\n        <DCCReference Include=\"DelphiOpenAI\\OpenAI.Utils.JSON.Cleaner.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\FMX.RichEdit.Style.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\FMX.StyledContextMenu.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.CSS.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.HTML.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.JSON.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.MarkDown.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.Pascal.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.Python.pas\"/>\n        <DCCReference Include=\"FMXRichMemo\\Syntax.Code.SQL.pas\"/>\n        <BuildConfiguration Include=\"Base\">\n            <Key>Base</Key>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Debug\">\n            <Key>Cfg_1</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Release\">\n            <Key>Cfg_2</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n    </ItemGroup>\n    <ProjectExtensions>\n        <Borland.Personality>Delphi.Personality.12</Borland.Personality>\n        <Borland.ProjectType>Application</Borland.ProjectType>\n        <BorlandProject>\n            <Delphi.Personality>\n                <Source>\n                    <Source Name=\"MainSource\">ChatGPT.dpr</Source>\n                </Source>\n                <Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dcloffice2k290.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dclofficexp290.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n                </Excluded_Packages>\n            </Delphi.Personality>\n            <Deployment Version=\"5\">\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libpcre.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\osx32\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"OSX32\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'==''\" Required=\"true\" LocalName=\"$(BDS)\\bin64\\sk4d.dll\" Configuration=\"Debug\" Class=\"Skia\">\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'==''\" Required=\"true\" LocalName=\"$(BDS)\\bin64\\sk4d.dll\" Configuration=\"Release\" Class=\"Skia\">\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_24x24.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon24\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_36x36.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon36\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_48x48.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon48\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_72x72.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon72\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_96x96.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon96\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_426x320.png\" Configuration=\"Release\" Class=\"Android_SplashImage426\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_470x320.png\" Configuration=\"Release\" Class=\"Android_SplashImage470\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_640x480.png\" Configuration=\"Release\" Class=\"Android_SplashImage640\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_960x720.png\" Configuration=\"Release\" Class=\"Android_SplashImage960\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_152x152.png\" Configuration=\"Debug\" Class=\"iPad_AppIcon152\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_167x167.png\" Configuration=\"Debug\" Class=\"iPad_AppIcon167\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImageDark_2x.png\" Configuration=\"Debug\" Class=\"iPad_LaunchDark2x\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImage_2x.png\" Configuration=\"Debug\" Class=\"iPad_Launch2x\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_NotificationIcon_40x40.png\" Configuration=\"Debug\" Class=\"iPad_Notification40\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SettingIcon_58x58.png\" Configuration=\"Debug\" Class=\"iPad_Setting58\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SpotlightSearchIcon_80x80.png\" Configuration=\"Debug\" Class=\"iPad_SpotLight80\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_1024x1024.png\" Configuration=\"Debug\" Class=\"iOS_AppStore1024\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_120x120.png\" Configuration=\"Debug\" Class=\"iPhone_AppIcon120\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_180x180.png\" Configuration=\"Debug\" Class=\"iPhone_AppIcon180\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_2x.png\" Configuration=\"Debug\" Class=\"iPhone_LaunchDark2x\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_3x.png\" Configuration=\"Debug\" Class=\"iPhone_LaunchDark3x\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_2x.png\" Configuration=\"Debug\" Class=\"iPhone_Launch2x\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_3x.png\" Configuration=\"Debug\" Class=\"iPhone_Launch3x\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_40x40.png\" Configuration=\"Debug\" Class=\"iPhone_Notification40\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_60x60.png\" Configuration=\"Debug\" Class=\"iPhone_Notification60\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_58x58.png\" Configuration=\"Debug\" Class=\"iPhone_Setting58\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_87x87.png\" Configuration=\"Debug\" Class=\"iPhone_Setting87\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_120x120.png\" Configuration=\"Debug\" Class=\"iPhone_Spotlight120\"/>\n                <DeployFile LocalName=\"$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_80x80.png\" Configuration=\"Debug\" Class=\"iPhone_Spotlight80\"/>\n                <DeployFile Condition=\"'$(SKIADIR)'==''\" Required=\"true\" LocalName=\"$(BDS)\\bin\\sk4d.dll\" Configuration=\"Debug\" Class=\"Skia\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'==''\" Required=\"true\" LocalName=\"$(BDS)\\bin\\sk4d.dll\" Configuration=\"Release\" Class=\"Skia\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'==''\" Required=\"true\" LocalName=\"$(BDS)\\binlinux64\\libsk4d.so\" Configuration=\"Debug\" Class=\"Skia\">\n                    <Platform Name=\"Linux64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>1</Operation>\n                        <RemoteName>libsk4d.so</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'==''\" Required=\"true\" LocalName=\"$(BDS)\\binlinux64\\libsk4d.so\" Configuration=\"Release\" Class=\"Skia\">\n                    <Platform Name=\"Linux64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>1</Operation>\n                        <RemoteName>libsk4d.so</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\debug\\armeabi-v7a\\libnative-activity.so\" Configuration=\"Debug\" Class=\"AndroidLibnativeArmeabiv7aFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\debug\\armeabi\\libnative-activity.so\" Configuration=\"Debug\" Class=\"AndroidLibnativeArmeabiFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\debug\\armeabi\\libnative-activity.so\" Configuration=\"Release\" Class=\"AndroidLibnativeArmeabiFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\debug\\mips\\libnative-activity.so\" Configuration=\"Debug\" Class=\"AndroidLibnativeMipsFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\debug\\mips\\libnative-activity.so\" Configuration=\"Release\" Class=\"AndroidLibnativeMipsFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\release\\armeabi-v7a\\libnative-activity.so\" Configuration=\"Release\" Class=\"AndroidLibnativeArmeabiv7aFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\release\\armeabi\\libnative-activity.so\" Configuration=\"Release\" Class=\"AndroidLibnativeArmeabiFile\"/>\n                <DeployFile LocalName=\"$(BDS)\\lib\\android\\release\\mips\\libnative-activity.so\" Configuration=\"Release\" Class=\"AndroidLibnativeMipsFile\"/>\n                <DeployFile LocalName=\"$(NDKBasePath)\\prebuilt\\android-arm\\gdbserver\\gdbserver\" Configuration=\"Debug\" Class=\"AndroidGDBServer\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIconBackground\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Background.xml\" Configuration=\"Release\" Class=\"Android_AdaptiveIconBackground\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIconForeground\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Foreground.xml\" Configuration=\"Release\" Class=\"Android_AdaptiveIconForeground\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIconMonochrome\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_AdaptiveIcon_Monochrome.xml\" Configuration=\"Release\" Class=\"Android_AdaptiveIconMonochrome\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png\" Configuration=\"Debug\" Class=\"Android_LauncherIcon144\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_144x144.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon144\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png\" Configuration=\"Debug\" Class=\"Android_LauncherIcon192\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_192x192.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon192\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png\" Configuration=\"Debug\" Class=\"Android_LauncherIcon36\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_36x36.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon36\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png\" Configuration=\"Debug\" Class=\"Android_LauncherIcon48\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_48x48.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon48\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png\" Configuration=\"Debug\" Class=\"Android_LauncherIcon72\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_72x72.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon72\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png\" Configuration=\"Debug\" Class=\"Android_LauncherIcon96\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_LauncherIcon_96x96.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon96\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png\" Configuration=\"Debug\" Class=\"Android_NotificationIcon24\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_24x24.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon24\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png\" Configuration=\"Debug\" Class=\"Android_NotificationIcon36\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_36x36.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon36\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png\" Configuration=\"Debug\" Class=\"Android_NotificationIcon48\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_48x48.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon48\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png\" Configuration=\"Debug\" Class=\"Android_NotificationIcon72\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_72x72.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon72\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png\" Configuration=\"Debug\" Class=\"Android_NotificationIcon96\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_NotificationIcon_96x96.png\" Configuration=\"Release\" Class=\"Android_NotificationIcon96\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png\" Configuration=\"Debug\" Class=\"Android_SplashImage426\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_426x320.png\" Configuration=\"Release\" Class=\"Android_SplashImage426\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png\" Configuration=\"Debug\" Class=\"Android_SplashImage470\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_470x320.png\" Configuration=\"Release\" Class=\"Android_SplashImage470\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png\" Configuration=\"Debug\" Class=\"Android_SplashImage640\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_640x480.png\" Configuration=\"Release\" Class=\"Android_SplashImage640\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png\" Configuration=\"Debug\" Class=\"Android_SplashImage960\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_SplashImage_960x720.png\" Configuration=\"Release\" Class=\"Android_SplashImage960\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml\" Configuration=\"Debug\" Class=\"Android_VectorizedNotificationIcon\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedNotificationIcon.xml\" Configuration=\"Release\" Class=\"Android_VectorizedNotificationIcon\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml\" Configuration=\"Debug\" Class=\"Android_VectorizedSplash\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplash.xml\" Configuration=\"Release\" Class=\"Android_VectorizedSplash\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml\" Configuration=\"Debug\" Class=\"Android_VectorizedSplashDark\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashDark.xml\" Configuration=\"Release\" Class=\"Android_VectorizedSplashDark\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml\" Configuration=\"Debug\" Class=\"Android_VectorizedSplashV31\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31.xml\" Configuration=\"Release\" Class=\"Android_VectorizedSplashV31\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml\" Configuration=\"Debug\" Class=\"Android_VectorizedSplashV31Dark\"/>\n                <DeployFile LocalName=\"$(ProjectName).Artwork\\Android\\FM_VectorizedSplashV31Dark.xml\" Configuration=\"Release\" Class=\"Android_VectorizedSplashV31Dark\"/>\n                <DeployFile Condition=\"'$(SKIADIR)'!=''\" Required=\"true\" LocalName=\"$(SKIADIR)\\Binary\\Shared\\Linux64\\libsk4d.so\" Configuration=\"Debug\" Class=\"Skia\">\n                    <Platform Name=\"Linux64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>1</Operation>\n                        <RemoteName>libsk4d.so</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'!=''\" Required=\"true\" LocalName=\"$(SKIADIR)\\Binary\\Shared\\Linux64\\libsk4d.so\" Configuration=\"Release\" Class=\"Skia\">\n                    <Platform Name=\"Linux64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>1</Operation>\n                        <RemoteName>libsk4d.so</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'!=''\" Required=\"true\" LocalName=\"$(SKIADIR)\\Binary\\Shared\\Win32\\sk4d.dll\" Configuration=\"Debug\" Class=\"Skia\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'!=''\" Required=\"true\" LocalName=\"$(SKIADIR)\\Binary\\Shared\\Win32\\sk4d.dll\" Configuration=\"Release\" Class=\"Skia\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'!=''\" Required=\"true\" LocalName=\"$(SKIADIR)\\Binary\\Shared\\Win64\\sk4d.dll\" Configuration=\"Debug\" Class=\"Skia\">\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile Condition=\"'$(SKIADIR)'!=''\" Required=\"true\" LocalName=\"$(SKIADIR)\\Binary\\Shared\\Win64\\sk4d.dll\" Configuration=\"Release\" Class=\"Skia\">\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>.\\</RemoteDir>\n                        <Operation>0</Operation>\n                        <RemoteName>sk4d.dll</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"Android64\\Debug\\AndroidManifest.xml\" Configuration=\"Debug\" Class=\"ProjectAndroidManifest\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\colors-night-v21.xml\" Configuration=\"Debug\" Class=\"Android_ColorsDark\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\colors.xml\" Configuration=\"Debug\" Class=\"Android_Colors\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\ic_launcher-v33.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIconV33\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\ic_launcher.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIcon\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\libChatGPT.so\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\provider_paths.xml\" Configuration=\"Debug\" Class=\"AndroidFileProvider\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\splash_image_def-v21.xml\" Configuration=\"Debug\" Class=\"AndroidSplashImageDefV21\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\splash_image_def.xml\" Configuration=\"Debug\" Class=\"AndroidSplashImageDef\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\strings.xml\" Configuration=\"Debug\" Class=\"Android_Strings\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\styles-v21.xml\" Configuration=\"Debug\" Class=\"AndroidSplashStylesV21\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\styles-v31.xml\" Configuration=\"Debug\" Class=\"AndroidSplashStylesV31\"/>\n                <DeployFile LocalName=\"Android64\\Debug\\styles.xml\" Configuration=\"Debug\" Class=\"AndroidSplashStyles\"/>\n                <DeployFile LocalName=\"Android64\\Release\\AndroidManifest.xml\" Configuration=\"Release\" Class=\"ProjectAndroidManifest\"/>\n                <DeployFile LocalName=\"Android64\\Release\\colors-night-v21.xml\" Configuration=\"Release\" Class=\"Android_ColorsDark\"/>\n                <DeployFile LocalName=\"Android64\\Release\\colors.xml\" Configuration=\"Release\" Class=\"Android_Colors\"/>\n                <DeployFile LocalName=\"Android64\\Release\\ic_launcher-v33.xml\" Configuration=\"Release\" Class=\"Android_AdaptiveIconV33\"/>\n                <DeployFile LocalName=\"Android64\\Release\\ic_launcher.xml\" Configuration=\"Release\" Class=\"Android_AdaptiveIcon\"/>\n                <DeployFile LocalName=\"Android64\\Release\\libChatGPT.so\" Configuration=\"Release\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Android64\\Release\\provider_paths.xml\" Configuration=\"Release\" Class=\"AndroidFileProvider\"/>\n                <DeployFile LocalName=\"Android64\\Release\\splash_image_def-v21.xml\" Configuration=\"Release\" Class=\"AndroidSplashImageDefV21\"/>\n                <DeployFile LocalName=\"Android64\\Release\\splash_image_def.xml\" Configuration=\"Release\" Class=\"AndroidSplashImageDef\"/>\n                <DeployFile LocalName=\"Android64\\Release\\strings.xml\" Configuration=\"Release\" Class=\"Android_Strings\"/>\n                <DeployFile LocalName=\"Android64\\Release\\styles-v21.xml\" Configuration=\"Release\" Class=\"AndroidSplashStylesV21\"/>\n                <DeployFile LocalName=\"Android64\\Release\\styles-v31.xml\" Configuration=\"Release\" Class=\"AndroidSplashStylesV31\"/>\n                <DeployFile LocalName=\"Android64\\Release\\styles.xml\" Configuration=\"Release\" Class=\"AndroidSplashStyles\"/>\n                <DeployFile LocalName=\"Android\\Debug\\AndroidManifest.xml\" Configuration=\"Debug\" Class=\"ProjectAndroidManifest\"/>\n                <DeployFile LocalName=\"Android\\Debug\\colors-night-v21.xml\" Configuration=\"Debug\" Class=\"Android_ColorsDark\"/>\n                <DeployFile LocalName=\"Android\\Debug\\colors.xml\" Configuration=\"Debug\" Class=\"Android_Colors\"/>\n                <DeployFile LocalName=\"Android\\Debug\\ic_launcher-v33.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIconV33\"/>\n                <DeployFile LocalName=\"Android\\Debug\\ic_launcher.xml\" Configuration=\"Debug\" Class=\"Android_AdaptiveIcon\"/>\n                <DeployFile LocalName=\"Android\\Debug\\libChatGPT.so\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Android\\Debug\\provider_paths.xml\" Configuration=\"Debug\" Class=\"AndroidFileProvider\"/>\n                <DeployFile LocalName=\"Android\\Debug\\splash_image_def-v21.xml\" Configuration=\"Debug\" Class=\"AndroidSplashImageDefV21\"/>\n                <DeployFile LocalName=\"Android\\Debug\\splash_image_def.xml\" Configuration=\"Debug\" Class=\"AndroidSplashImageDef\"/>\n                <DeployFile LocalName=\"Android\\Debug\\strings.xml\" Configuration=\"Debug\" Class=\"Android_Strings\"/>\n                <DeployFile LocalName=\"Android\\Debug\\styles-v21.xml\" Configuration=\"Debug\" Class=\"AndroidSplashStylesV21\"/>\n                <DeployFile LocalName=\"Android\\Debug\\styles-v31.xml\" Configuration=\"Debug\" Class=\"AndroidSplashStylesV31\"/>\n                <DeployFile LocalName=\"Android\\Debug\\styles.xml\" Configuration=\"Debug\" Class=\"AndroidSplashStyles\"/>\n                <DeployFile LocalName=\"Android\\Release\\AndroidManifest.xml\" Configuration=\"Release\" Class=\"ProjectAndroidManifest\"/>\n                <DeployFile LocalName=\"Android\\Release\\colors.xml\" Configuration=\"Release\" Class=\"Android_Colors\"/>\n                <DeployFile LocalName=\"Android\\Release\\libChatGPT.so\" Configuration=\"Release\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Android\\Release\\provider_paths.xml\" Configuration=\"Release\" Class=\"AndroidFileProvider\"/>\n                <DeployFile LocalName=\"Android\\Release\\splash_image_def.xml\" Configuration=\"Release\" Class=\"AndroidSplashImageDef\"/>\n                <DeployFile LocalName=\"Android\\Release\\strings.xml\" Configuration=\"Release\" Class=\"Android_Strings\"/>\n                <DeployFile LocalName=\"Android\\Release\\styles-v21.xml\" Configuration=\"Release\" Class=\"AndroidSplashStylesV21\"/>\n                <DeployFile LocalName=\"Android\\Release\\styles.xml\" Configuration=\"Release\" Class=\"AndroidSplashStyles\"/>\n                <DeployFile LocalName=\"FunctionsLib\\Linux64\\Debug\\libgpt_function_owm.so\" Configuration=\"Debug\" Class=\"File\">\n                    <Platform Name=\"Linux64\">\n                        <RemoteDir>.\\funcs\\</RemoteDir>\n                        <RemoteName>libgpt_function_owm.so</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"Linux64\\Debug\\ChatGPT\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Linux64\\Release\\ChatGPT\" Configuration=\"Release\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\1024.png\" Configuration=\"Debug\" Class=\"UWP_DelphiLogo150\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\play_store_512.png\" Configuration=\"Debug\" Class=\"UWP_DelphiLogo44\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\res\\chatgptfmx36.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon36\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\res\\mipmap-hdpi\\chatgptfmx.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon72\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\res\\mipmap-mdpi\\chatgptfmx.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon48\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\res\\mipmap-xhdpi\\chatgptfmx.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon96\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\res\\mipmap-xxhdpi\\chatgptfmx.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon144\"/>\n                <DeployFile LocalName=\"Res\\chatgptfmx\\res\\mipmap-xxxhdpi\\chatgptfmx.png\" Configuration=\"Release\" Class=\"Android_LauncherIcon192\"/>\n                <DeployFile LocalName=\"Win32\\Debug\\ChatGPT.exe\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployFile LocalName=\"Win32\\Debug\\ChatGPT.exe\" Configuration=\"Debug\" Class=\"ProjectOutput\">\n                    <Platform Name=\"Win32\">\n                        <RemoteName>ChatGPT.exe</RemoteName>\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"iOSDevice64\\Debug\\ChatGPT.dSYM\" Configuration=\"Debug\" Class=\"ProjectiOSDeviceDebug\"/>\n                <DeployFile LocalName=\"iOSDevice64\\Debug\\ChatGPT.entitlements\" Configuration=\"Debug\" Class=\"ProjectiOSEntitlements\"/>\n                <DeployFile LocalName=\"iOSDevice64\\Debug\\ChatGPT.info.plist\" Configuration=\"Debug\" Class=\"ProjectiOSInfoPList\"/>\n                <DeployFile LocalName=\"iOSDevice64\\Debug\\ChatGPT.launchscreen\" Configuration=\"Debug\" Class=\"ProjectiOSLaunchScreen\"/>\n                <DeployFile LocalName=\"iOSDevice64\\Debug\\ChatGPT\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployClass Name=\"AdditionalDebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidFileProvider\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiv7aFile\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeMipsFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDef\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDefV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStyles\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV35\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconBackground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconForeground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconMonochrome\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconV33\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Colors\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_ColorsDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_DefaultAppIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon144\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon192\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon24\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage426\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage470\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage640\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage960\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Strings\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedNotificationIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplash\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31Dark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyFramework\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyModule\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.dll;.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"DependencyPackage\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"File\">\n                    <Platform Name=\"Android\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectAndroidManifest\">\n                    <Platform Name=\"Android\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXDebug\">\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXEntitlements\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXInfoPList\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXResource\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"ProjectOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Linux64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectUWPManifest\">\n                    <Platform Name=\"Win32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64x\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSDeviceDebug\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSEntitlements\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSInfoPList\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSLaunchScreen\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSResource\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo150\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo44\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iOS_AppStore1024\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon152\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon167\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_SpotLight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon180\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification60\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting87\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <ProjectRoot Platform=\"Android\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Android64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"iOSDevice32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSDevice64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSSimARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Linux64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"OSX32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSX64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSXARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Win32\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64x\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"WinARM64EC\" Name=\"$(PROJECTNAME)\"/>\n            </Deployment>\n            <Platforms>\n                <Platform value=\"Android\">True</Platform>\n                <Platform value=\"Android64\">True</Platform>\n                <Platform value=\"iOSDevice64\">True</Platform>\n                <Platform value=\"iOSSimARM64\">True</Platform>\n                <Platform value=\"Linux64\">True</Platform>\n                <Platform value=\"OSX64\">False</Platform>\n                <Platform value=\"OSXARM64\">False</Platform>\n                <Platform value=\"Win32\">True</Platform>\n                <Platform value=\"Win64\">True</Platform>\n            </Platforms>\n        </BorlandProject>\n        <ProjectFileVersion>12</ProjectFileVersion>\n    </ProjectExtensions>\n    <Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n    <Import Project=\"$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj\" Condition=\"Exists('$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj')\"/>\n    <Import Project=\"$(MSBuildProjectName).deployproj\" Condition=\"Exists('$(MSBuildProjectName).deployproj')\"/>\n</Project>\n"
  },
  {
    "path": "ChatGPTGroup.groupproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <PropertyGroup>\n        <ProjectGuid>{8E18A818-2E61-4C1A-A75F-35E2C9D052E4}</ProjectGuid>\n    </PropertyGroup>\n    <ItemGroup>\n        <Projects Include=\"ChatGPT.dproj\">\n            <Dependencies/>\n        </Projects>\n        <Projects Include=\"FunctionsLib\\gpt_function_owm.dproj\">\n            <Dependencies/>\n        </Projects>\n        <Projects Include=\"FunctionsLib\\gpt_function_cmd.dproj\">\n            <Dependencies/>\n        </Projects>\n    </ItemGroup>\n    <ProjectExtensions>\n        <Borland.Personality>Default.Personality.12</Borland.Personality>\n        <Borland.ProjectType/>\n        <BorlandProject>\n            <Default.Personality/>\n        </BorlandProject>\n    </ProjectExtensions>\n    <Target Name=\"ChatGPT\">\n        <MSBuild Projects=\"ChatGPT.dproj\"/>\n    </Target>\n    <Target Name=\"ChatGPT:Clean\">\n        <MSBuild Projects=\"ChatGPT.dproj\" Targets=\"Clean\"/>\n    </Target>\n    <Target Name=\"ChatGPT:Make\">\n        <MSBuild Projects=\"ChatGPT.dproj\" Targets=\"Make\"/>\n    </Target>\n    <Target Name=\"gpt_function_owm\">\n        <MSBuild Projects=\"FunctionsLib\\gpt_function_owm.dproj\"/>\n    </Target>\n    <Target Name=\"gpt_function_owm:Clean\">\n        <MSBuild Projects=\"FunctionsLib\\gpt_function_owm.dproj\" Targets=\"Clean\"/>\n    </Target>\n    <Target Name=\"gpt_function_owm:Make\">\n        <MSBuild Projects=\"FunctionsLib\\gpt_function_owm.dproj\" Targets=\"Make\"/>\n    </Target>\n    <Target Name=\"gpt_function_cmd\">\n        <MSBuild Projects=\"FunctionsLib\\gpt_function_cmd.dproj\"/>\n    </Target>\n    <Target Name=\"gpt_function_cmd:Clean\">\n        <MSBuild Projects=\"FunctionsLib\\gpt_function_cmd.dproj\" Targets=\"Clean\"/>\n    </Target>\n    <Target Name=\"gpt_function_cmd:Make\">\n        <MSBuild Projects=\"FunctionsLib\\gpt_function_cmd.dproj\" Targets=\"Make\"/>\n    </Target>\n    <Target Name=\"Build\">\n        <CallTarget Targets=\"ChatGPT;gpt_function_owm;gpt_function_cmd\"/>\n    </Target>\n    <Target Name=\"Clean\">\n        <CallTarget Targets=\"ChatGPT:Clean;gpt_function_owm:Clean;gpt_function_cmd:Clean\"/>\n    </Target>\n    <Target Name=\"Make\">\n        <CallTarget Targets=\"ChatGPT:Make;gpt_function_owm:Make;gpt_function_cmd:Make\"/>\n    </Target>\n    <Import Project=\"$(BDS)\\Bin\\CodeGear.Group.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Group.Targets')\"/>\n</Project>\n"
  },
  {
    "path": "ChatGPT_Console.dpr",
    "content": "﻿program ChatGPT_Console;\n\n{$APPTYPE CONSOLE}\n\n{$R *.res}\n\nuses\n  System.SysUtils,\n  System.Classes,\n  OpenAI.Chat,\n  OpenAI.Utils.ChatHistory,\n  OpenAI;\n\nvar\n   History: TChatHistory;\n\nbegin\n  try\n    var OpenAI := TOpenAI.Create({$include MY_TOKEN.txt});\n    History := TChatHistory.Create;\n    Writeln('ChatGPT is ready');\n    var Prompt: string := '';\n    repeat\n      Write('Human: ');\n      Readln(Prompt);\n      if Prompt.IsEmpty then\n        Break;\n      History.New(TMessageRole.User, Prompt, '');\n      try    {\n        OpenAI.Chat.CreateStream(\n          procedure(Params: TChatParams)\n          begin\n            Params.Messages(History.ToArray);\n            Params.MaxTokens(1024);\n            Params.Stream;\n          end,\n          procedure(Chat: TChat; IsDone: Boolean; var Cancel: Boolean)\n          begin\n            if (not IsDone) and Assigned(Chat) then\n              Writeln(Chat.Choices[0].Delta.Content)\n            else if IsDone then\n              Writeln('DONE!');\n            Writeln('-------');\n            Sleep(80);\n          end);   }\n\n        var Chat := OpenAI.Chat.Create(\n          procedure(Params: TChatParams)\n          begin\n            Params.Messages(History.ToArray);\n            Params.MaxTokens(1024);\n          end);\n        try\n          for var Choise in Chat.Choices do\n          begin\n            History.New(TMessageRole.Assistant, Choise.Message.Content, '');\n            Writeln(Choise.Message.Content.Trim([#13, #10, ' ']));\n          end;\n        finally\n          Chat.Free;\n        end;\n      except\n        on E: Exception do\n          Writeln('Error: ', E.Message);\n      end;\n    until False;\n    History.Free;\n  except\n    on E: Exception do\n      Writeln(E.ClassName, ': ', E.Message);\n  end;\nend.\n\n"
  },
  {
    "path": "ChatGPT_Console.dproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <PropertyGroup>\n        <ProjectGuid>{48B49E9F-2EA8-4526-8576-1E45E5DD4550}</ProjectGuid>\n        <ProjectVersion>20.3</ProjectVersion>\n        <FrameworkType>None</FrameworkType>\n        <Base>True</Base>\n        <Config Condition=\"'$(Config)'==''\">Debug</Config>\n        <Platform Condition=\"'$(Platform)'==''\">Win32</Platform>\n        <TargetedPlatforms>1</TargetedPlatforms>\n        <AppType>Console</AppType>\n        <MainSource>ChatGPT_Console.dpr</MainSource>\n        <ProjectName Condition=\"'$(ProjectName)'==''\">ChatGPT_Console</ProjectName>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''\">\n        <Base_Android>true</Base_Android>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''\">\n        <Base_Android64>true</Base_Android64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''\">\n        <Base_iOSDevice64>true</Base_iOSDevice64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSSimARM64' and '$(Base)'=='true') or '$(Base_iOSSimARM64)'!=''\">\n        <Base_iOSSimARM64>true</Base_iOSSimARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSX64' and '$(Base)'=='true') or '$(Base_OSX64)'!=''\">\n        <Base_OSX64>true</Base_OSX64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSXARM64' and '$(Base)'=='true') or '$(Base_OSXARM64)'!=''\">\n        <Base_OSXARM64>true</Base_OSXARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''\">\n        <Base_Win32>true</Base_Win32>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''\">\n        <Base_Win64>true</Base_Win64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_1)'!=''\">\n        <Cfg_1>true</Cfg_1>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''\">\n        <Cfg_1_Win32>true</Cfg_1_Win32>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_2)'!=''\">\n        <Cfg_2>true</Cfg_2>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base)'!=''\">\n        <DCC_DcuOutput>.\\$(Platform)\\$(Config)</DCC_DcuOutput>\n        <DCC_ExeOutput>.\\$(Platform)\\$(Config)</DCC_ExeOutput>\n        <DCC_E>false</DCC_E>\n        <DCC_N>false</DCC_N>\n        <DCC_S>false</DCC_S>\n        <DCC_F>false</DCC_F>\n        <DCC_K>false</DCC_K>\n        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>\n        <SanitizedProjectName>ChatGPT_Console</SanitizedProjectName>\n        <DCC_UnitSearchPath>D:\\Projects\\ChatGPT\\DelphiOpenAI;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>\n        <VerInfo_Locale>1049</VerInfo_Locale>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android)'!=''\">\n        <DCC_UsePackage>fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <Android_LauncherIcon36>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>\n        <Android_LauncherIcon48>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>\n        <Android_LauncherIcon72>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>\n        <Android_LauncherIcon96>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>\n        <Android_LauncherIcon144>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>\n        <Android_LauncherIcon192>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>\n        <Android_SplashImage426>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_426x320.png</Android_SplashImage426>\n        <Android_SplashImage470>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_470x320.png</Android_SplashImage470>\n        <Android_SplashImage640>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_640x480.png</Android_SplashImage640>\n        <Android_SplashImage960>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_960x720.png</Android_SplashImage960>\n        <Android_NotificationIcon24>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>\n        <Android_NotificationIcon36>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>\n        <Android_NotificationIcon48>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>\n        <Android_NotificationIcon72>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>\n        <Android_NotificationIcon96>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>\n        <EnabledSysJars>annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android64)'!=''\">\n        <DCC_UsePackage>fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;DBXInterBaseDriver;IndySystem;RadiantShapesFmx;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <Android_LauncherIcon36>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>\n        <Android_LauncherIcon48>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>\n        <Android_LauncherIcon72>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>\n        <Android_LauncherIcon96>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>\n        <Android_LauncherIcon144>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>\n        <Android_LauncherIcon192>$(BDS)\\bin\\Artwork\\Android\\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>\n        <Android_SplashImage426>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_426x320.png</Android_SplashImage426>\n        <Android_SplashImage470>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_470x320.png</Android_SplashImage470>\n        <Android_SplashImage640>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_640x480.png</Android_SplashImage640>\n        <Android_SplashImage960>$(BDS)\\bin\\Artwork\\Android\\FM_SplashImage_960x720.png</Android_SplashImage960>\n        <Android_NotificationIcon24>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>\n        <Android_NotificationIcon36>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>\n        <Android_NotificationIcon48>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>\n        <Android_NotificationIcon72>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>\n        <Android_NotificationIcon96>$(BDS)\\bin\\Artwork\\Android\\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>\n        <EnabledSysJars>annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSDevice64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSSimARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <iOS_AppStore1024>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_1024x1024.png</iOS_AppStore1024>\n        <iPhone_AppIcon120>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>\n        <iPhone_AppIcon180>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>\n        <iPhone_Launch2x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_2x.png</iPhone_Launch2x>\n        <iPhone_LaunchDark2x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_2x.png</iPhone_LaunchDark2x>\n        <iPhone_Launch3x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImage_3x.png</iPhone_Launch3x>\n        <iPhone_LaunchDark3x>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_LaunchImageDark_3x.png</iPhone_LaunchDark3x>\n        <iPhone_Spotlight80>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>\n        <iPhone_Spotlight120>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SpotlightSearchIcon_120x120.png</iPhone_Spotlight120>\n        <iPhone_Setting58>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_58x58.png</iPhone_Setting58>\n        <iPhone_Setting87>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_SettingIcon_87x87.png</iPhone_Setting87>\n        <iPhone_Notification40>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_40x40.png</iPhone_Notification40>\n        <iPhone_Notification60>$(BDS)\\bin\\Artwork\\iOS\\iPhone\\FM_NotificationIcon_60x60.png</iPhone_Notification60>\n        <iPad_AppIcon152>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>\n        <iPad_AppIcon167>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_ApplicationIcon_167x167.png</iPad_AppIcon167>\n        <iPad_Launch2x>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImage_2x.png</iPad_Launch2x>\n        <iPad_LaunchDark2x>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_LaunchImageDark_2x.png</iPad_LaunchDark2x>\n        <iPad_SpotLight80>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>\n        <iPad_Setting58>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_SettingIcon_58x58.png</iPad_Setting58>\n        <iPad_Notification40>$(BDS)\\bin\\Artwork\\iOS\\iPad\\FM_NotificationIcon_40x40.png</iPad_Notification40>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSX64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSXARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win32)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;DzHTMLText_VCL;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;OSMMapDXE2;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;VKComponents;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <DCC_ConsoleTarget>true</DCC_ConsoleTarget>\n        <UWP_DelphiLogo44>$(BDS)\\bin\\Artwork\\Windows\\UWP\\delphi_UwpDefault_44.png</UWP_DelphiLogo44>\n        <UWP_DelphiLogo150>$(BDS)\\bin\\Artwork\\Windows\\UWP\\delphi_UwpDefault_150.png</UWP_DelphiLogo150>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win64)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;DzHTMLText_VCL;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_ConsoleTarget>true</DCC_ConsoleTarget>\n        <UWP_DelphiLogo44>$(BDS)\\bin\\Artwork\\Windows\\UWP\\delphi_UwpDefault_44.png</UWP_DelphiLogo44>\n        <UWP_DelphiLogo150>$(BDS)\\bin\\Artwork\\Windows\\UWP\\delphi_UwpDefault_150.png</UWP_DelphiLogo150>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n        <DCC_DebugDCUs>true</DCC_DebugDCUs>\n        <DCC_Optimize>false</DCC_Optimize>\n        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>\n        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>\n        <DCC_RemoteDebug>true</DCC_RemoteDebug>\n        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>\n        <DCC_RangeChecking>true</DCC_RangeChecking>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Win32)'!=''\">\n        <DCC_RemoteDebug>false</DCC_RemoteDebug>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <Manifest_File>(None)</Manifest_File>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n        <DCC_DebugInformation>0</DCC_DebugInformation>\n    </PropertyGroup>\n    <ItemGroup>\n        <DelphiCompile Include=\"$(MainSource)\">\n            <MainSource>MainSource</MainSource>\n        </DelphiCompile>\n        <BuildConfiguration Include=\"Base\">\n            <Key>Base</Key>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Debug\">\n            <Key>Cfg_1</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Release\">\n            <Key>Cfg_2</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n    </ItemGroup>\n    <ProjectExtensions>\n        <Borland.Personality>Delphi.Personality.12</Borland.Personality>\n        <Borland.ProjectType>Application</Borland.ProjectType>\n        <BorlandProject>\n            <Delphi.Personality>\n                <Source>\n                    <Source Name=\"MainSource\">ChatGPT_Console.dpr</Source>\n                </Source>\n                <Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dcloffice2k280.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dclofficexp280.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n                </Excluded_Packages>\n            </Delphi.Personality>\n            <Deployment Version=\"5\">\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libpcre.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\osx32\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"OSX32\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"Win32\\Debug\\ChatGPT_Console.exe\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployClass Name=\"AdditionalDebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidFileProvider\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiv7aFile\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeMipsFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDef\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDefV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStyles\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV35\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconBackground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconForeground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconMonochrome\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconV33\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Colors\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_ColorsDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_DefaultAppIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon144\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon192\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon24\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage426\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage470\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage640\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage960\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Strings\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedNotificationIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplash\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31Dark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyFramework\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyModule\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.dll;.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"DependencyPackage\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"File\">\n                    <Platform Name=\"Android\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectAndroidManifest\">\n                    <Platform Name=\"Android\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXDebug\">\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXEntitlements\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXInfoPList\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXResource\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"ProjectOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Linux64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectUWPManifest\">\n                    <Platform Name=\"Win32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64x\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSDeviceDebug\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSEntitlements\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSInfoPList\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSLaunchScreen\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSResource\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo150\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo44\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iOS_AppStore1024\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon152\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon167\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_SpotLight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon180\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification60\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting87\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <ProjectRoot Platform=\"Android\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Android64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"iOSDevice32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSDevice64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSSimARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSSimulator\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Linux64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"OSX32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSX64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSXARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Win32\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64x\" Name=\"$(PROJECTNAME)\"/>\n            </Deployment>\n            <Platforms>\n                <Platform value=\"Android\">False</Platform>\n                <Platform value=\"Android64\">False</Platform>\n                <Platform value=\"iOSDevice64\">False</Platform>\n                <Platform value=\"iOSSimARM64\">False</Platform>\n                <Platform value=\"Linux64\">False</Platform>\n                <Platform value=\"OSX64\">False</Platform>\n                <Platform value=\"OSXARM64\">False</Platform>\n                <Platform value=\"Win32\">True</Platform>\n                <Platform value=\"Win64\">False</Platform>\n            </Platforms>\n        </BorlandProject>\n        <ProjectFileVersion>12</ProjectFileVersion>\n    </ProjectExtensions>\n    <Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n    <Import Project=\"$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj\" Condition=\"Exists('$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj')\"/>\n    <Import Project=\"$(MSBuildProjectName).deployproj\" Condition=\"Exists('$(MSBuildProjectName).deployproj')\"/>\n</Project>\n"
  },
  {
    "path": "Code/ChatGPT.Code.JSON.pas",
    "content": "﻿unit ChatGPT.Code.JSON;\n\ninterface\n\nuses\n  System.SysUtils, ChatGPT.Code, System.Generics.Collections, FMX.TextLayout,\n  FMX.Graphics, System.UITypes;\n\ntype\n  TCodeSyntaxJson = class(TCodeSyntax)\n  private\n    FStringKey, FNumKey: TKeyWord;\n  public\n    constructor Create(DefaultFont: TFont; DefaultColor: TAlphaColor); override;\n    destructor Destroy; override;\n    function GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>; override;\n  end;\n\nimplementation\n\n{ TCodeSyntaxJson }\n\nconstructor TCodeSyntaxJson.Create(DefaultFont: TFont; DefaultColor: TAlphaColor);\nbegin\n  inherited;\n\n  FStringKey := TKeyWord.Create;\n  FStringKey.Color := $FFE7DB74;\n  FStringKey.Font.Assign(FDefaultFont);\n\n  FNumKey := TKeyWord.Create;\n  FNumKey.Color := $FFAC80FF;\n  FNumKey.Font.Assign(FDefaultFont);\nend;\n\ndestructor TCodeSyntaxJson.Destroy;\nbegin\n  FStringKey.Free;\n  FNumKey.Free;\n  inherited;\nend;\n\nfunction TCodeSyntaxJson.GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>;\nconst\n  Seps =[' ', ';', ')', '(', '[', ']', ':', '<', '>', ',', '+', '-', '=', '*', '/', '\\'];\nbegin\n  if FCached.TryGetValue(Index, Result) then\n    Exit;\n  try\n    var Buf: string := '';\n    var IsString: Boolean := False;\n    for var C := 0 to Line.Length do\n    begin\n      if Line.IsEmpty then\n        Continue;\n      if IsString then\n      begin\n        if Line.Chars[C] = '\"' then\n        begin\n          IsString := False;\n          if not Buf.IsEmpty then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length - 1, Buf.Length + 2),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if Line.Chars[C] = '\"' then\n      begin\n        IsString := True;\n        Buf := '';\n        Continue;\n      end;\n\n      if (C = Line.Length) or CharInSet(Line.Chars[C], Seps) then\n      begin\n        if not Buf.IsEmpty then\n        begin\n          var FL: Extended;\n          if TryStrToFloat(Buf.Replace('.', FormatSettings.DecimalSeparator), FL) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FNumKey.Font, FNumKey.Color)\n              )];\n          end\n          else if Buf.StartsWith('\\') then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n          end;\n\n          Buf := '';\n        end;\n      end\n      else\n        Buf := Buf + Line.Chars[C];\n    end;\n  finally\n    FCached.AddOrSetValue(Index, Result);\n  end;\nend;\n\ninitialization\n  TCodeSyntax.RegisterSyntax(['json'], TCodeSyntaxJson);\n\nend.\n\n"
  },
  {
    "path": "Code/ChatGPT.Code.MarkDown.pas",
    "content": "﻿unit ChatGPT.Code.MarkDown;\n\ninterface\n\nuses\n  System.SysUtils, ChatGPT.Code, System.Generics.Collections, FMX.TextLayout,\n  FMX.Graphics, System.UITypes;\n\ntype\n  TCodeSyntaxMD = class(TCodeSyntax)\n  private\n    FMonoKey, FNumKey, FCommentKey, FDirectiveKey: TKeyWord;\n  public\n    constructor Create(DefaultFont: TFont; DefaultColor: TAlphaColor); override;\n    destructor Destroy; override;\n    function ParseLine(const Line: string; out Output: string): TArray<TTextAttributedRangeData>;\n    function GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>; override;\n  end;\n\nimplementation\n\n{ TCodeSyntaxMD }\n\nconstructor TCodeSyntaxMD.Create(DefaultFont: TFont; DefaultColor: TAlphaColor);\nbegin\n  inherited;\n\n  FMonoKey := TKeyWord.Create;\n  FMonoKey.Color := TAlphaColorRec.White;\n  FMonoKey.Font.Assign(FDefaultFont);\n  FMonoKey.Font.Family := 'Consolas';\n\n  FNumKey := TKeyWord.Create;\n  FNumKey.Color := DefaultColor;\n  FNumKey.Font.Assign(FDefaultFont);\n\n  FCommentKey := TKeyWord.Create;\n  FCommentKey.Color := DefaultColor;\n  FCommentKey.Font.Assign(FDefaultFont);\n\n  FDirectiveKey := TKeyWord.Create;\n  FDirectiveKey.Color := DefaultColor;\n  FDirectiveKey.Font.Assign(FDefaultFont);\nend;\n\ndestructor TCodeSyntaxMD.Destroy;\nbegin\n  FMonoKey.Free;\n  FDirectiveKey.Free;\n  FCommentKey.Free;\n  FNumKey.Free;\n  inherited;\nend;\n\nfunction TCodeSyntaxMD.GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>;\nconst\n  Seps =[' ', '.', ',', '(', '[', ']', ':', '<', '>', '+', '-', '=', '*', '/', '&'];\nbegin\n  if FCached.TryGetValue(Index, Result) then\n    Exit;\n  try\n    var Buf: string := '';\n    var IsMono := False;\n    for var C := 0 to Line.Length do\n    begin\n      if Line.IsEmpty then\n        Continue;\n      if IsMono then\n      begin\n        if Line.Chars[C] = '`' then\n        begin\n          Buf := Buf + Line.Chars[C];\n          IsMono := False;\n          if not Buf.IsEmpty then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length + 1, Buf.Length),\n              TTextAttribute.Create(FMonoKey.Font, FMonoKey.Color)\n              )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if Line.Chars[C] = '`' then\n      begin\n        Buf := '';\n        IsMono := True;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n\n    {\n    if (C = Line.Length) or CharInSet(Line.Chars[C], Seps) then\n    begin\n      if not Buf.IsEmpty then\n      begin\n        if Buf.StartsWith('#') then\n        begin\n          Result := Result + [TTextAttributedRangeData.Create(\n            TTextRange.Create(C - Buf.Length, Buf.Length),\n            TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n            )];\n        end;\n\n        Buf := '';\n      end;\n    end\n    else  }\n      Buf := Buf + Line.Chars[C];\n    end;\n  finally\n    FCached.AddOrSetValue(Index, Result);\n  end;\nend;\n\nfunction TCodeSyntaxMD.ParseLine(const Line: string; out Output: string): TArray<TTextAttributedRangeData>;\nbegin\n  var Buf: string := '';\n  var IsMono := -1;\n  for var C := 0 to Line.Length do\n  begin\n    if Line.IsEmpty then\n      Continue;\n    //-------------\n    if Line.Chars[C] = '`' then\n    begin\n      if IsMono <> -1 then\n      begin\n        IsMono := -1;\n        if not Buf.IsEmpty then\n        begin\n          Result := Result + [\n            TTextAttributedRangeData.Create(\n            TTextRange.Create(IsMono + 1, Buf.Length),\n            TTextAttribute.Create(FMonoKey.Font, FMonoKey.Color)\n            )];\n          Buf := '';\n        end;\n        Continue;\n      end\n      else\n      begin\n        Output := Output + Buf;\n        Buf := '';\n        IsMono := C;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n    end;\n\n    {\n    if Line.Chars[C] = '#' then\n    begin\n      Buf := Buf + Line.Chars[C];\n      Inc(HashCnt);\n    end\n    else\n    begin\n      if HashCnt > 0 then\n      begin\n\n      end;\n      HashCnt := 0;\n    end;  }\n\n\n    Buf := Buf + Line.Chars[C];\n  end;\n  Output := Output + Buf;\nend;\n\ninitialization\n  TCodeSyntax.RegisterSyntax(['md'], TCodeSyntaxMD);\n\nend.\n\n"
  },
  {
    "path": "Code/ChatGPT.Code.Pascal.pas",
    "content": "﻿unit ChatGPT.Code.pascal;\n\ninterface\n\nuses\n  System.SysUtils, ChatGPT.Code, System.Generics.Collections, FMX.TextLayout,\n  FMX.Graphics, System.UITypes;\n\ntype\n  TCodeSyntaxPascal = class(TCodeSyntax)\n  private\n    FKeyWords: TKeyWords;\n    FStringKey, FNumKey, FCommentKey, FDirectiveKey: TKeyWord;\n  public\n    constructor Create(DefaultFont: TFont; DefaultColor: TAlphaColor); override;\n    destructor Destroy; override;\n    function GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>; override;\n  end;\n\nimplementation\n\n{ TCodeSyntaxPascal }\n\nconstructor TCodeSyntaxPascal.Create(DefaultFont: TFont; DefaultColor: TAlphaColor);\nbegin\n  inherited;\n\n  var KeyWord: TKeyWord;\n  FKeyWords := TKeyWords.Create;\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['var', 'string', 'as', 'inherited', 'destructor',\n    'procedure', 'constructor', 'function', 'uses', 'implementation', 'private',\n    'initialization', 'finalization', 'or', 'and', 'xor', 'div', 'mod', 'in',\n    'public', 'override', 'overload', 'type', 'unit', 'interface', 'nil', 'not',\n    'shr', 'shl', 'platform', 'deprecated', 'packed', 'index', 'cdecl', 'stdcall',\n    'register', 'fastcall', 'file', 'goto', 'program', 'downto', 'label',\n    'raise', 'array', 'of', 'is', 'const', 'read', 'write', 'operator', 'static',\n    'inline', 'abstract', 'protected', 'strict', 'virtual', 'to', 'property', 'message', 'set'];\n  KeyWord.Color := $FFFFE0BC;\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  FKeyWords.Add(KeyWord);\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['begin', 'end', 'asm', 'end.', 'class', 'record', 'try', 'finally', 'except'];\n  KeyWord.Color := $FFC22700;\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  //KeyWord.Font.Size := 25;\n  FKeyWords.Add(KeyWord);\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['if', 'then', 'case', 'do', 'else', 'for', 'with', 'repeat', 'until', 'while'];\n  KeyWord.Color := $FFFF9900;\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  FKeyWords.Add(KeyWord);\n\n  FStringKey := TKeyWord.Create;\n  FStringKey.Color := $FF7FAAFF;\n  FStringKey.Font.Assign(FDefaultFont);\n\n  FNumKey := TKeyWord.Create;\n  FNumKey.Color := $FFFF7F85;\n  FNumKey.Font.Assign(FDefaultFont);\n\n  FCommentKey := TKeyWord.Create;\n  FCommentKey.Color := $FF88E775;\n  FCommentKey.Font.Assign(FDefaultFont);\n\n  FDirectiveKey := TKeyWord.Create;\n  FDirectiveKey.Color := $FF3CB1FF;\n  FDirectiveKey.Font.Assign(FDefaultFont);\nend;\n\ndestructor TCodeSyntaxPascal.Destroy;\nbegin\n  FStringKey.Free;\n  FDirectiveKey.Free;\n  FCommentKey.Free;\n  FNumKey.Free;\n  FKeyWords.Free;\n  inherited;\nend;\n\nfunction TCodeSyntaxPascal.GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>;\nconst\n  Seps =[' ', ';', ')', '(', '[', ']', ':', '<', '>', ',', '+', '-', '=', '*', '/', '&'];\nbegin\n  if FCached.TryGetValue(Index, Result) then\n    Exit;\n  try\n    var Buf: string := '';\n    var IsString: Boolean := False;\n    var IsComment: Boolean := False;\n    for var C := 0 to Line.Length do\n    begin\n      if Line.IsEmpty then\n        Continue;\n      if IsComment then\n      begin\n        if Line.Chars[C] = '}' then\n        begin\n          IsComment := False;\n          if not Buf.IsEmpty then\n          begin\n            if Buf.StartsWith('{$') then\n              Result := Result + [\n                TTextAttributedRangeData.Create(\n                TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n                TTextAttribute.Create(FDirectiveKey.Font, FDirectiveKey.Color)\n                )]\n            else\n              Result := Result + [\n                TTextAttributedRangeData.Create(\n                TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n                TTextAttribute.Create(FCommentKey.Font, FCommentKey.Color)\n                )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if IsString then\n      begin\n        if Line.Chars[C] = '''' then\n        begin\n          IsString := False;\n          if not Buf.IsEmpty then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if C <> Line.Length then\n      begin\n        if (Line.Chars[C] = '/') and (Line.Chars[C + 1] = '/') then\n        begin\n          Result := Result + [\n            TTextAttributedRangeData.Create(\n            TTextRange.Create(C, Line.Length - C),\n            TTextAttribute.Create(FCommentKey.Font, FCommentKey.Color)\n            )];\n          Exit;\n        end;\n        if Line.Chars[C] = '{' then\n        begin\n          IsComment := True;\n          Buf := Buf + Line.Chars[C];\n          Continue;\n        end;\n        if Line.Chars[C] = '''' then\n        begin\n          IsString := True;\n          Buf := Buf + Line.Chars[C];\n          Continue;\n        end;\n      end;\n\n      if (C = Line.Length) or CharInSet(Line.Chars[C], Seps) then\n      begin\n        if not Buf.IsEmpty then\n        begin\n          var KeyWord: TKeyWord;\n          var Num: Extended;\n          if (TryStrToFloat(Buf.Replace('.', ','), Num) or Buf.StartsWith('$')) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FNumKey.Font, FNumKey.Color)\n              )];\n          end\n          else if Buf.StartsWith('#') then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n          end\n          else if FKeyWords.FindWord(Buf, KeyWord) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(KeyWord.Font, KeyWord.Color)\n              )];\n          end;\n\n          Buf := '';\n        end;\n      end\n      else\n        Buf := Buf + Line.Chars[C];\n    end;\n  finally\n    FCached.AddOrSetValue(Index, Result);\n  end;\nend;\n\ninitialization\n  TCodeSyntax.RegisterSyntax(['pascal', 'delphi', 'fpc', 'freepascal', 'free-pascal'], TCodeSyntaxPascal);\n\nend.\n\n"
  },
  {
    "path": "Code/ChatGPT.Code.Python.pas",
    "content": "﻿unit ChatGPT.Code.Python;\n\ninterface\n\nuses\n  System.SysUtils, ChatGPT.Code, System.Generics.Collections, FMX.TextLayout,\n  FMX.Graphics, System.UITypes;\n\ntype\n  TCodeSyntaxPython = class(TCodeSyntax)\n  private\n    FKeyWords: TKeyWords;\n    FStringKey, FNumKey, FCommentKey, FCallKey: TKeyWord;\n  public\n    constructor Create(DefaultFont: TFont; DefaultColor: TAlphaColor); override;\n    destructor Destroy; override;\n    function GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>; override;\n  end;\n\nimplementation\n\n{ TCodeSyntaxPython }\n\nconstructor TCodeSyntaxPython.Create(DefaultFont: TFont; DefaultColor: TAlphaColor);\nbegin\n  inherited;\n\n  var KeyWord: TKeyWord;\n  FKeyWords := TKeyWords.Create;\n\n  KeyWord := TKeyWord.Create;\n\n  KeyWord.Word := ['import', 'from', 'def', 'return', 'for', 'if', 'elif', 'else',\n    'not', 'await', 'async', 'yield', 'as', 'with', 'pass', 'none', 'break', 'try',\n    'except', 'raise', 'class', 'finally', 'is', 'and', 'continue', 'lambda', 'nonlocal',\n    'while', 'assert', 'del', 'global', 'or'];\n  KeyWord.Color := $FFF47067;  //red\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  FKeyWords.Add(KeyWord);\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['in', '==', '=', '**', 'false', 'true'];\n  KeyWord.Color := $FF1E8BF0;   //blue\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  FKeyWords.Add(KeyWord);\n\n  FStringKey := TKeyWord.Create;\n  FStringKey.Color := $FF87D0FF;\n  FStringKey.Font.Assign(FDefaultFont);\n\n  FNumKey := TKeyWord.Create;\n  FNumKey.Color := $FF46A9FF;\n  FNumKey.Font.Assign(FDefaultFont);\n\n  FCommentKey := TKeyWord.Create;\n  FCommentKey.Color := $FF46A9FF;\n  FCommentKey.Font.Assign(FDefaultFont);\n\n  FCallKey := TKeyWord.Create;\n  FCallKey.Color := $FFDCBDFB;\n  FCallKey.Font.Assign(FDefaultFont);\nend;\n\ndestructor TCodeSyntaxPython.Destroy;\nbegin\n  FStringKey.Free;\n  FCallKey.Free;\n  FCommentKey.Free;\n  FNumKey.Free;\n  FKeyWords.Free;\n  inherited;\nend;\n\nfunction TCodeSyntaxPython.GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>;\nconst\n  Seps =[' ', ';', ')', '(', '[', ']', ':', '<', '>', ',', '+', '-', '=', '*', '/', '&'];\nbegin\n  if FCached.TryGetValue(Index, Result) then\n    Exit;\n  try\n    var Buf: string := '';\n    var IsString: Boolean := False;\n    var IsComment: Boolean := False;\n    for var C := 0 to Line.Length do\n    begin\n      if Line.IsEmpty then\n        Continue;\n      if IsString then\n      begin\n        if Line.Chars[C] = '''' then\n        begin\n          IsString := False;\n          if not Buf.IsEmpty then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if Line.Chars[C] = '''' then\n      begin\n        IsString := True;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if Line.Chars[C] = '#' then\n      begin\n        Result := Result + [\n          TTextAttributedRangeData.Create(\n          TTextRange.Create(C, Line.Length - C),\n          TTextAttribute.Create(FCommentKey.Font, FCommentKey.Color)\n          )];\n        Exit;\n      end;\n      if IsComment then\n      begin\n        if Line.Chars[C] = '\"' then\n        begin\n          IsComment := False;\n          if not Buf.IsEmpty then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if Line.Chars[C] = '\"' then\n      begin\n        IsComment := True;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n\n      if (C = Line.Length) or CharInSet(Line.Chars[C], Seps) then\n      begin\n        if not Buf.IsEmpty then\n        begin\n          var KeyWord: TKeyWord;\n          var FL: Extended;\n          if Line.Chars[C] = '(' then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FCallKey.Font, FCallKey.Color)\n              )];\n          end;\n          if (TryStrToFloat(Buf.Replace('.', ','), FL) or Buf.StartsWith('$')) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FNumKey.Font, FNumKey.Color)\n              )];\n          end\n          else if Buf.StartsWith('#') then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n          end\n          else if FKeyWords.FindWord(Buf, KeyWord) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(KeyWord.Font, KeyWord.Color)\n              )];\n          end;\n\n          Buf := '';\n        end;\n      end\n      else\n        Buf := Buf + Line.Chars[C];\n    end;\n  finally\n    FCached.AddOrSetValue(Index, Result);\n  end;\nend;\n\ninitialization\n  TCodeSyntax.RegisterSyntax(['python'], TCodeSyntaxPython);\n\nend.\n\n"
  },
  {
    "path": "Code/ChatGPT.Code.SQL.pas",
    "content": "﻿unit ChatGPT.Code.SQL;\n\ninterface\n\nuses\n  System.SysUtils, ChatGPT.Code, System.Generics.Collections, FMX.TextLayout,\n  FMX.Graphics, System.UITypes;\n\ntype\n  TCodeSyntaxSQL = class(TCodeSyntax)\n  private\n    FKeyWords: TKeyWords;\n    FStringKey, FNumKey, FCommentKey, FDirectiveKey: TKeyWord;\n  public\n    constructor Create(DefaultFont: TFont; DefaultColor: TAlphaColor); override;\n    destructor Destroy; override;\n    function GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>; override;\n  end;\n\nimplementation\n\n{ TCodeSyntaxSQL }\n\nconstructor TCodeSyntaxSQL.Create(DefaultFont: TFont; DefaultColor: TAlphaColor);\nbegin\n  inherited;\n\n  var KeyWord: TKeyWord;\n  FKeyWords := TKeyWords.Create;\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['add', 'constraint', 'alter',\n    'all', 'any', 'as', 'asc', 'backup', 'check', 'by',\n    'column', 'create', 'replace',\n    'database', 'default', 'delete', 'desc', 'distinct', 'drop', 'exec',\n    'exists', 'foreign', 'from', 'group', 'having',\n    'index', 'inner', 'insert', 'key',\n    'limit', 'order', 'outer',\n    'primary', 'procedure', 'right', 'join', 'rownum', 'select',\n    'into', 'set', 'table', 'top', 'truncate', 'union',\n    'unique', 'update', 'values', 'view', 'where', 'on', 'full', 'left'];\n  KeyWord.Color := $FF638FCF;\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  FKeyWords.Add(KeyWord);\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['ascii', 'char_length', 'character_length', 'concat', 'concat_ws',\n    'field', 'find_in_set', 'format', 'instr', 'lcase', 'length', 'locate',\n    'lower', 'lpad', 'ltrim', 'mid', 'position', 'repeat', 'reverse',\n    'rpad', 'rtrim', 'space', 'strcmp', 'substr', 'substring', 'substring_index', 'trim',\n    'ucase', 'upper', 'adddate', 'addtime', 'curdate', 'current_date', 'current_time',\n    'current_timestamp', 'curtime', 'date', 'datediff', 'date_add', 'date_format',\n    'date_sub', 'day', 'dayname', 'dayofmonth', 'dayofweek', 'dayofyear', 'extract',\n    'from_days', 'hour', 'last_day', 'localtime', 'localtimestamp', 'makedate', 'maketime',\n    'microsecond', 'minute', 'month', 'monthname', 'now', 'period_add', 'period_diff',\n    'quarter', 'second', 'sec_to_time', 'str_to_date', 'subdate', 'subtime', 'sysdate',\n    'time', 'time_format', 'time_to_sec', 'timediff', 'timestamp', 'to_days', 'week',\n    'weekday', 'weekofyear', 'year', 'yearweek', 'bin', 'binary', 'case', 'cast',\n    'coalesce', 'connection_id', 'conv', 'convert', 'current_user',\n    'if', 'ifnull', 'isnull', 'last_insert_id', 'nullif', 'session_user', 'system_user', 'user', 'version',\n    'any_value', 'array_agg', 'array_concat_agg', 'avg', 'bit_and', 'bit_or', 'bit_xor', 'count',\n    'countif', 'logical_and', 'logical_or', 'max', 'min', 'string_agg', 'sum'];\n  KeyWord.Color := $FFC22700;\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  //KeyWord.Font.Size := 25;\n  FKeyWords.Add(KeyWord);\n\n  KeyWord := TKeyWord.Create;\n  KeyWord.Word := ['string', 'bytes', 'between', 'in', 'is', 'null', 'true', 'false', 'not', 'and', 'or', 'like'];\n  KeyWord.Color := $FF5E5E5E;\n  KeyWord.Font.Assign(FDefaultFont);\n  KeyWord.Font.Style := [TFontStyle.fsBold];\n  FKeyWords.Add(KeyWord);\n\n  FStringKey := TKeyWord.Create;\n  FStringKey.Color := $FF468141;\n  FStringKey.Font.Assign(FDefaultFont);\n\n  FNumKey := TKeyWord.Create;\n  FNumKey.Color := $FFFF7F85;\n  FNumKey.Font.Assign(FDefaultFont);\n\n  FCommentKey := TKeyWord.Create;\n  FCommentKey.Color := $FF468141;\n  FCommentKey.Font.Assign(FDefaultFont);\n\n  FDirectiveKey := TKeyWord.Create;\n  FDirectiveKey.Color := $FF3CB1FF;\n  FDirectiveKey.Font.Assign(FDefaultFont);\nend;\n\ndestructor TCodeSyntaxSQL.Destroy;\nbegin\n  FStringKey.Free;\n  FDirectiveKey.Free;\n  FCommentKey.Free;\n  FNumKey.Free;\n  FKeyWords.Free;\n  inherited;\nend;\n\nfunction TCodeSyntaxSQL.GetAttributesForLine(const Line: string; const Index: Integer): TArray<TTextAttributedRangeData>;\nconst\n  Seps =[' ', ';', ')', '(', '[', ']', ':', '<', '>', ',', '+', '-', '=', '*', '/', '&'];\nbegin\n  if FCached.TryGetValue(Index, Result) then\n    Exit;\n  try\n    var Buf: string := '';\n    var IsString: Boolean := False;\n    var IsComment: Boolean := False;\n    for var C := 0 to Line.Length do\n    begin\n      if Line.IsEmpty then\n        Continue;\n      if IsComment then\n      begin\n        if Line.Chars[C] = '}' then\n        begin\n          IsComment := False;\n          if not Buf.IsEmpty then\n          begin\n            if Buf.StartsWith('{$') then\n              Result := Result + [\n                TTextAttributedRangeData.Create(\n                TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n                TTextAttribute.Create(FDirectiveKey.Font, FDirectiveKey.Color)\n                )]\n            else\n              Result := Result + [\n                TTextAttributedRangeData.Create(\n                TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n                TTextAttribute.Create(FCommentKey.Font, FCommentKey.Color)\n                )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if IsString then\n      begin\n        if Line.Chars[C] = '''' then\n        begin\n          IsString := False;\n          if not Buf.IsEmpty then\n          begin\n            Result := Result + [\n              TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length + 1),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n            Buf := '';\n          end;\n          Continue;\n        end;\n        Buf := Buf + Line.Chars[C];\n        Continue;\n      end;\n      if C <> Line.Length then\n      begin\n        if (Line.Chars[C] = '/') and (Line.Chars[C + 1] = '/') then\n        begin\n          Result := Result + [\n            TTextAttributedRangeData.Create(\n            TTextRange.Create(C, Line.Length - C),\n            TTextAttribute.Create(FCommentKey.Font, FCommentKey.Color)\n            )];\n          Exit;\n        end;\n        if Line.Chars[C] = '{' then\n        begin\n          IsComment := True;\n          Buf := Buf + Line.Chars[C];\n          Continue;\n        end;\n        if Line.Chars[C] = '''' then\n        begin\n          IsString := True;\n          Buf := Buf + Line.Chars[C];\n          Continue;\n        end;\n      end;\n\n      if (C = Line.Length) or CharInSet(Line.Chars[C], Seps) then\n      begin\n        if not Buf.IsEmpty then\n        begin\n          var KeyWord: TKeyWord;\n          var Num: Extended;\n          if (TryStrToFloat(Buf.Replace('.', ','), Num) or Buf.StartsWith('$')) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FNumKey.Font, FNumKey.Color)\n              )];\n          end\n          else if Buf.StartsWith('#') then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(FStringKey.Font, FStringKey.Color)\n              )];\n          end\n          else if FKeyWords.FindWord(Buf, KeyWord) then\n          begin\n            Result := Result + [TTextAttributedRangeData.Create(\n              TTextRange.Create(C - Buf.Length, Buf.Length),\n              TTextAttribute.Create(KeyWord.Font, KeyWord.Color)\n              )];\n          end;\n\n          Buf := '';\n        end;\n      end\n      else\n        Buf := Buf + Line.Chars[C];\n    end;\n  finally\n    FCached.AddOrSetValue(Index, Result);\n  end;\nend;\n\ninitialization\n  TCodeSyntax.RegisterSyntax(['sql'], TCodeSyntaxSQL);\n\nend.\n\n"
  },
  {
    "path": "FMX.Media.Win.pas",
    "content": "{*******************************************************}\n{                                                       }\n{              Delphi FireMonkey Platform               }\n{                                                       }\n{ Copyright(c) 2012-2023 Embarcadero Technologies, Inc. }\n{              All rights reserved                      }\n{                                                       }\n{*******************************************************}\n\nunit FMX.Media.Win;\n\ninterface\n\n{$SCOPEDENUMS ON}\n\nuses\n  System.Win.ComObj, System.Variants, System.Classes, System.SysUtils, System.Math, System.Types, System.SyncObjs,\n  Winapi.Windows, Winapi.DirectShow9, Winapi.Direct3D9, Winapi.ActiveX, FMX.Context.DX9, FMX.Types, FMX.Types3D,\n  FMX.Forms, FMX.Media, FMX.Platform.Win, FMX.Graphics, FMX.Consts;\n\ntype\n\n{ TWindowsCaptureDeviceManager }\n\n  TWindowsCaptureDeviceManager = class(TCaptureDeviceManager)\n  public\n    constructor Create; override;\n    destructor Destroy; override;\n  end;\n\n{ TWindowsCaptureDevice }\n\n  TWindowsAudioCaptureDevice = class(TAudioCaptureDevice)\n  private\n    FMoniker: IMoniker;\n    FBaseFilter: IBaseFilter;\n    FGraphBuilder: IGraphBuilder;\n    FCaptureGraphBuilder: ICaptureGraphBuilder2;\n    FMediaControl: IMediaControl;\n  protected\n    procedure DoStartCapture; override;\n    procedure DoStopCapture; override;\n    function GetDeviceProperty(const Prop: TCaptureDevice.TProperty): string; override;\n    function GetDeviceState: TCaptureDeviceState; override;\n    function GetFilterString: string; override;\n  public\n    constructor Create(AManager: TCaptureDeviceManager; const AMoniker: IMoniker; const ADefault: Boolean); reintroduce;\n    destructor Destroy; override;\n  end;\n\n{ TVMRRenderer }\n\n  TVMRRenderer = class(TInterfacedPersistent, IVMRSurfaceAllocator9, IVMRImagePresenter9)\n  private\n    FVideoTexture: IDirect3DTexture9; // must be RenderTarget to allow GPU copy\n    FSysMemSurface: IDirect3DSurface9;\n    FSurface: IDirect3DSurface9;\n    FSurfaceAllocatorNotify: IVMRSurfaceAllocatorNotify9;\n    FBaseFilter: IBaseFilter;\n    FVMRFilterConfig: IVMRFilterConfig9;\n    FSampleBufferReady: TSampleBufferReadyEvent;\n    FRunning: Boolean;\n    FIsSkipFrames: Boolean;\n    FRequestedBufferSize: TPoint;\n    FBufferLoadTime: TMediaTime;\n    FBufferLoaded: Boolean;\n    FIsFinishedProcessingEvent: TEvent;\n    { IVMRSurfaceAllocator9 }\n    function InitializeDevice(dwUserID: DWORD; lpAllocInfo: PVMR9AllocationInfo;\n      var lpNumBuffers: DWORD): HResult; stdcall;\n    function TerminateDevice(dwID: DWORD): HResult; stdcall;\n    function GetSurface(dwUserID: DWORD; SurfaceIndex: DWORD; SurfaceFlags: DWORD;\n      out lplpSurface: IDirect3DSurface9): HResult; stdcall;\n    function AdviseNotify(lpIVMRSurfAllocNotify: IVMRSurfaceAllocatorNotify9): HResult; stdcall;\n    { IVMRImagePresenter9 }\n    function StartPresenting(dwUserID: DWORD): HResult; stdcall;\n    function StopPresenting(dwUserID: DWORD): HResult; stdcall;\n    function PresentImage(dwUserID: DWORD; lpPresInfo: PVMR9PresentationInfo): HResult; stdcall;\n    { }\n    function AddToGraph(const FGraphBuilder: IGraphBuilder): Boolean;\n    function LoadBufferToSystemMemory: Boolean;\n    procedure SampleBufferToBitmap(const ABitmap: TBitmap; const ASetSize: Boolean);\n    { sync }\n    procedure Sync;\n  public\n    constructor Create;\n    destructor Destroy; override;\n    procedure SetSkipFrames;\n  end;\n\n{ TWindowsCaptureDevice }\n\n  TWindowsVideoCaptureDevice = class(TVideoCaptureDevice)\n  private const\n    FrameDurationScale = 10000000;\n  private\n    FMoniker: IMoniker;\n    FBaseFilter: IBaseFilter;\n    FGraphBuilder: IGraphBuilder;\n    FCaptureGraphBuilder: ICaptureGraphBuilder2;\n    FMediaControl: IMediaControl;\n    FVMRRenderer: TVMRRenderer;\n    procedure VMRRendererSampleReady(Sender: TObject; const ATime: TMediaTime);\n  protected\n    procedure DoStartCapture; override;\n    procedure DoStopCapture; override;\n    procedure DoSampleBufferToBitmap(const ABitmap: TBitmap; const ASetSize: Boolean); override;\n    function GetDeviceProperty(const Prop: TCaptureDevice.TProperty): string; override;\n    function GetDeviceState: TCaptureDeviceState; override;\n    /// <summary>Inherited from TVideoCaptureDevice.</summary>\n    function GetCaptureSetting: TVideoCaptureSetting; override;\n    /// <summary>Inherited from TVideoCaptureDevice.</summary>\n    function DoSetCaptureSetting(const ASetting: TVideoCaptureSetting): Boolean; override;\n    /// <summary>Inherited from TVideoCaptureDevice.</summary>\n    function DoGetAvailableCaptureSettings: TArray<TVideoCaptureSetting>; override;\n    /// <summary>Inherited from TVideoCaptureDevice.</summary>\n    procedure DoSetQuality(const Value: TVideoCaptureQuality); override;\n  public\n    constructor Create(AManager: TCaptureDeviceManager; const AMoniker: IMoniker; const ADefault: Boolean); reintroduce;\n    destructor Destroy; override;\n  end;\n\n{ TWindowsMedia }\n\n  TWindowsMedia = class(TMedia)\n  private\n    FGraphBuilder: IGraphBuilder;\n    FMediaControl: IMediaControl;\n    FMediaSeeking: IMediaSeeking;\n    FBasicAudio: IBasicAudio;\n    FVMR: IBaseFilter;\n    FVMRFilterConfig9: IVMRFilterConfig9;\n    FVMRWindowlessControl9: IVMRWindowlessControl9;\n    FVMRFilterConfig7: IVMRFilterConfig;\n    FVMRWindowlessControl7: IVMRWindowlessControl;\n    FWnd: HWND;\n    FWaitCompletionThread: TThread;\n    FMediaState: TMediaState;\n    { Initialization }\n    procedure InitWnd;\n    procedure DestroyWnd;\n    function InitMediaControl: Boolean;\n    function InitGraphTree: Boolean;\n    function InitVideoMixingRenderer9: Boolean;\n    function LocateVideoMixingRenderer9: Boolean;\n    function InitVideoMixingRenderer7: Boolean;\n    function LocateVideoMixingRenderer7: Boolean;\n    { Playback thread listener }\n    procedure StartWaitCompletionThread;\n    procedure StopAndFreeWaitCompletionThread;\n    procedure WaitCompletionThreadTerminated(Sender: TObject);\n  protected\n    function QueryInterface(const IID: TGUID; out Obj): HResult; override;\n    function GetDuration: TMediaTime; override;\n    function GetCurrent: TMediaTime; override;\n    procedure SetCurrent(const Value: TMediaTime); override;\n    function GetVideoSize: TPointF; override;\n    function GetMediaState: TMediaState; override;\n    function GetVolume: Single; override;\n    procedure SetVolume(const Value: Single); override;\n    procedure UpdateMediaFromControl; override;\n    procedure DoPlay; override;\n    procedure DoStop; override;\n  public\n    constructor Create(const AFileName: string); override;\n    destructor Destroy; override;\n  end;\n\n  /// <summary>This thread is waiting for completion of playback of a media file.</summary>\n  TWaitMediaCompletionThread = class(TThread)\n  private\n    FMediaEvent: IMediaEvent;\n  protected\n    procedure Execute; override;\n  public\n    constructor Create(const AMediaEvent: IMediaEvent);\n  end;\n\n  TWindowsMediaCodec = class(TCustomMediaCodec)\n  public\n    function CreateFromFile(const AFileName: string): TMedia; override;\n  end;\n\nimplementation\n\nuses\n  System.RTLConsts, System.SysConst, System.Generics.Collections, Winapi.UrlMon;\n\nconst\n  MinAllowedVolume = -10000;\n\n{ TWindowsCaptureDeviceManager }\n\nconstructor TWindowsCaptureDeviceManager.Create;\nvar\n  Moniker: IMoniker;\n  DevEnum: ICreateDevEnum;\n  Enum: IEnumMoniker;\n  Default: Boolean;\nbegin\n  inherited;\n  CoCreateInstance(CLSID_SystemDeviceEnum, nil, CLSCTX_INPROC_SERVER,\n    IID_ICreateDevEnum, DevEnum);\n  if DevEnum <> nil then\n  begin\n    // audio devices\n    Default := True;\n    DevEnum.CreateClassEnumerator(CLSID_AudioInputDeviceCategory, Enum, 0);\n    if Enum <> nil then\n      while (Enum.Next(1, Moniker, nil) = S_OK) do\n      begin\n        TWindowsAudioCaptureDevice.Create(Self, Moniker, Default);\n        Default := False;\n      end;\n    Enum := nil;\n    // video devices\n    Default := True;\n    DevEnum.CreateClassEnumerator(CLSID_VideoInputDeviceCategory, Enum, 0);\n    if Enum <> nil then\n      while (Enum.Next(1, Moniker, nil) = S_OK) do\n      begin\n        TWindowsVideoCaptureDevice.Create(Self, Moniker, Default);\n        Default := False;\n      end;\n  end;\nend;\n\ndestructor TWindowsCaptureDeviceManager.Destroy;\nbegin\n  inherited;\nend;\n\n{ TWindowsAudioCaptureDevice }\n\nconstructor TWindowsAudioCaptureDevice.Create(AManager: TCaptureDeviceManager;\n  const AMoniker: IMoniker; const ADefault: Boolean);\nbegin\n  inherited Create(AManager, ADefault);\n\n  if AMoniker = nil then\n    raise EArgumentNilException.CreateResFmt(@SParamIsNil, ['AMoniker']);\n\n  FMoniker := AMoniker;\nend;\n\ndestructor TWindowsAudioCaptureDevice.Destroy;\nbegin\n  inherited;\nend;\n\nprocedure InitBaseFilter(const Self: TWindowsAudioCaptureDevice); forward; overload;\n\nconst                   //{3C78B8E2-6C4D-11d1-ADE2-0000F8754B99}\n  CLSID_WavDest: TGUID = '{8A667154-F9CB-11D2-AD8A-0060B0575ABC}';\n\nprocedure InitAudioFilter(const Self: TWindowsAudioCaptureDevice);\nvar\n  HR: HResult;\nbegin\n  if Self.FBaseFilter <> nil then\n    Exit;\n\n  HR := Self.FMoniker.BindToObject(nil, nil, IID_IBaseFilter, Self.FBaseFilter);\n  //HR := coCreateInstance(CLSID_WavDest, nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, Self.FBaseFilter);\n  if Failed(HR) then\n    raise ECaptureDeviceException.CreateRes(@SCannotCreateDirectShowCaptureFilter);\nend;\n\nprocedure TWindowsAudioCaptureDevice.DoStartCapture;\nvar\n  HR: HResult;\n  ppf: IBaseFilter;\n  sink: IFileSinkfilter;\n  FailedToRun: Boolean;\nbegin\n  InitAudioFilter(Self);\n\n  FailedToRun := True;\n  // Create GraphBuilder\n  HR := CoCreateInstance(CLSID_CaptureGraphBuilder2, nil, CLSCTX_INPROC_SERVER,\n    IID_ICaptureGraphBuilder2, FCaptureGraphBuilder);\n  if Succeeded(HR) then\n  begin\n    HR := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, FGraphBuilder);\n    if Succeeded(HR) then\n    begin\n      FCaptureGraphBuilder.SetFiltergraph(FGraphBuilder);\n      // Get IMediaControl\n      FGraphBuilder.QueryInterface(IID_IMediaControl, FMediaControl);\n      HR := FGraphBuilder.AddFilter(FBaseFilter, 'Capture Filter');\n      if Succeeded(HR) then\n      begin\n        HR := FCaptureGraphBuilder.SetOutputFileName(MEDIASUBTYPE_WAVE, PChar(FFileName), ppf, sink);\n        if Succeeded(HR) then\n        begin\n          HR := FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Audio, FBaseFilter, nil, ppf);\n          if Succeeded(HR) then\n          begin\n            if FMediaControl <> nil then\n            begin\n              HR := FMediaControl.Run;\n              FailedToRun := Failed(HR);\n              if not FailedToRun then\n                Exit; // Success\n            end;\n          end;\n        end;\n      end;\n    end;\n  end;\n  FCaptureGraphBuilder := nil;\n  FGraphBuilder := nil;\n  FMediaControl := nil;\n\n  if FailedToRun then\n    raise ECaptureDeviceException.CreateRes(@SCannotRunDirectShowFilterGraph);\nend;\n\nprocedure TWindowsAudioCaptureDevice.DoStopCapture;\nbegin\n  if FMediaControl <> nil then\n  begin\n    FMediaControl.StopWhenReady;\n    FCaptureGraphBuilder := nil;\n    FGraphBuilder := nil;\n    FMediaControl := nil;\n  end;\nend;\n\nfunction TWindowsAudioCaptureDevice.GetDeviceProperty(const Prop: TCaptureDevice.TProperty): string;\nvar\n  PropBag: IPropertyBag;\n  V: OleVariant;\nbegin\n  FMoniker.BindToStorage(nil, nil, IPropertyBag, PropBag);\n  if PropBag <> nil then\n  begin\n    case Prop of\n      TProperty.Description:\n        begin\n          PropBag.Read('Description', V, nil);\n          Result := V;\n        end;\n      TProperty.Name:\n        begin\n          PropBag.Read('FriendlyName', V, nil);\n          Result := V;\n        end;\n      TProperty.UniqueID:\n        begin\n          PropBag.Read('WaveInID', V, nil);\n          Result := V;\n        end;\n    else\n      Result := '';\n    end;\n  end\n  else\n    Result := '';\nend;\n\nfunction TWindowsAudioCaptureDevice.GetDeviceState: TCaptureDeviceState;\nbegin\n  if FMediaControl <> nil then\n    Result := TCaptureDeviceState.Capturing\n  else\n    Result := TCaptureDeviceState.Stopped;\nend;\n\nfunction TWindowsAudioCaptureDevice.GetFilterString: string;\nbegin\n  Result := SVWAVFiles + '(*.wav)|*.wav';\nend;\n\nprocedure InitBaseFilter(const Self: TWindowsAudioCaptureDevice);\nvar\n  HR: HResult;\nbegin\n  if Self.FBaseFilter <> nil then\n    Exit;\n\n  HR := Self.FMoniker.BindToObject(nil, nil, IID_IBaseFilter, Self.FBaseFilter);\n\n  if Failed(HR) then\n    raise ECaptureDeviceException.CreateRes(@SCannotCreateDirectShowCaptureFilter);\nend;\n\n{ TVMRRenderer }\n\nconstructor TVMRRenderer.Create;\nbegin\n  inherited Create;\n  FIsFinishedProcessingEvent := TEvent.Create;\n  FIsFinishedProcessingEvent.SetEvent;\n  FIsSkipFrames := False;\nend;\n\ndestructor TVMRRenderer.Destroy;\nbegin\n  FreeAndNil(FIsFinishedProcessingEvent);\n  FVideoTexture := nil;\n  FSysMemSurface := nil;\n  FSurfaceAllocatorNotify := nil;\n  FBaseFilter := nil;\n  FVMRFilterConfig := nil;\n  inherited;\nend;\n\nfunction TVMRRenderer.AddToGraph(const FGraphBuilder: IGraphBuilder): Boolean;\nvar\n  HR: HResult;\nbegin\n  // Create VMR\n  Result := True;\n  HR := CoCreateInstance(CLSID_VideoMixingRenderer9, nil, CLSCTX_INPROC, IID_IBaseFilter, FBaseFilter);\n  if Succeeded(HR) then\n  begin\n    FBaseFilter.QueryInterface(IVMRFilterConfig9, FVMRFilterConfig);\n    HR := FVMRFilterConfig.SetRenderingMode(VMR9Mode_Renderless);\n    if Succeeded(HR) then\n    begin\n      FBaseFilter.QueryInterface(IVMRSurfaceAllocatorNotify9, FSurfaceAllocatorNotify);\n      HR := FSurfaceAllocatorNotify.AdviseSurfaceAllocator(Cardinal(Self), Self);\n      if Succeeded(HR) then\n      begin\n        IVMRSurfaceAllocator9(Self).AdviseNotify(FSurfaceAllocatorNotify);\n        HR := FGraphBuilder.AddFilter(FBaseFilter, 'Video Mixing Renderer9');\n        if Succeeded(HR) then\n          Exit; // Success\n      end;\n    end;\n  end;\n  Result := False;\n  FVMRFilterConfig := nil;\n  FBaseFilter := nil;\nend;\n\n{ IVMRSurfaceAllocator9 }\n\nfunction TVMRRenderer.GetSurface(dwUserID, SurfaceIndex, SurfaceFlags: DWORD; out lplpSurface: IDirect3DSurface9): HResult;\nbegin\n  if FSurface <> nil then\n  begin\n    lplpSurface := FSurface;\n    Result := S_OK;\n  end\n  else\n    Result := E_FAIL;\nend;\n\nfunction TVMRRenderer.InitializeDevice(dwUserID: DWORD; lpAllocInfo: PVMR9AllocationInfo; var lpNumBuffers: DWORD): HResult;\nbegin\n  Result := E_NOTIMPL;\n  if TCustomDX9Context.SharedDevice <> nil then\n    Result := FSurfaceAllocatorNotify.AllocateSurfaceHelper(lpAllocInfo, lpNumBuffers, FSurface);\nend;\n\nfunction TVMRRenderer.TerminateDevice(dwID: DWORD): HResult;\nbegin\n  FVideoTexture := nil;\n  FSysMemSurface := nil;\n  FSurface := nil;\n  Result := S_OK;\nend;\n\nfunction TVMRRenderer.AdviseNotify(lpIVMRSurfAllocNotify: IVMRSurfaceAllocatorNotify9): HResult;\nbegin\n  Result := E_NOTIMPL;\n  if TCustomDX9Context.SharedDevice <> nil then\n    Result := lpIVMRSurfAllocNotify.SetD3DDevice(TCustomDX9Context.SharedDevice, TCustomDX9Context.Direct3D9Obj.GetAdapterMonitor(D3DADAPTER_DEFAULT));\nend;\n\n{ IVMRImagePresenter9 }\n\nfunction TVMRRenderer.StartPresenting(dwUserID: DWORD): HResult;\nbegin\n  Result := S_OK;\n  FRunning := True;\n  FRequestedBufferSize := TPoint.Zero;\n  FBufferLoaded := False;\nend;\n\nfunction TVMRRenderer.StopPresenting(dwUserID: DWORD): HResult;\nbegin\n  FRunning := False;\n  Result := S_OK;\nend;\n\nfunction TVMRRenderer.PresentImage(dwUserID: DWORD; lpPresInfo: PVMR9PresentationInfo): HResult;\nbegin\n  TMonitor.Enter(Self);\n  try\n    if FIsSkipFrames then\n      Exit(S_OK);\n  finally\n    TMonitor.Exit(Self);\n  end;\n\n  if FRunning and not FBufferLoaded then\n  begin\n    FIsFinishedProcessingEvent.ResetEvent;\n    try\n      if LoadBufferToSystemMemory then\n      begin\n        FBufferLoadTime := lpPresInfo.rtStart;\n        FBufferLoaded := True;\n        TThread.Synchronize(nil, Sync);\n      end;\n    finally\n      FIsFinishedProcessingEvent.SetEvent;\n    end;\n  end;\n\n  Result := S_OK;\nend;\n\nfunction TVMRRenderer.LoadBufferToSystemMemory: Boolean;\nvar\n  Device: IDirect3DDevice9;\n  Desc: TD3DSurfaceDesc;\n  CopyRect: TRect;\n  VideoSurface: IDirect3DSurface9;\nbegin\n  Result := False;\n\n  if (FSurface <> nil) and Succeeded(FSurface.GetDesc(Desc)) then\n  begin\n    Device := TCustomDX9Context.SharedDevice;\n\n    if not FRequestedBufferSize.IsZero then\n      CopyRect := TRect.Create(0, 0, FRequestedBufferSize.X, FRequestedBufferSize.Y)\n    else\n      CopyRect := TRect.Create(0, 0, Desc.Width, Desc.Height);\n\n    if (FVideoTexture = nil) or (Integer(Desc.Width) <> CopyRect.Width) or\n      (Integer(Desc.Height) <> CopyRect.Height) then\n    begin\n      FSysMemSurface := nil;\n      FVideoTexture := nil;\n\n      if Failed(Device.CreateTexture(CopyRect.Width, CopyRect.Height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8,\n        D3DPOOL_DEFAULT, FVideoTexture, nil)) then\n        Exit;\n\n      if Failed(Device.CreateOffscreenPlainSurface(CopyRect.Width, CopyRect.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM,\n        FSysMemSurface, nil)) then\n      begin\n        FVideoTexture := nil;\n        Exit;\n      end;\n    end;\n\n    if Succeeded(FVideoTexture.GetSurfaceLevel(0, VideoSurface)) then\n    begin\n      if Failed(Device.StretchRect(FSurface, nil, VideoSurface, @CopyRect, D3DTEXF_LINEAR)) then\n        Exit;\n\n      Result := Succeeded(Device.GetRenderTargetData(VideoSurface, FSysMemSurface));\n    end;\n  end;\nend;\n\nprocedure TVMRRenderer.SampleBufferToBitmap(const ABitmap: TBitmap; const ASetSize: Boolean);\n\n  procedure MoveResetAlpha(Source, Dest: Pointer; Count: Integer);\n  begin\n    while Count > 0 do\n    begin\n      PLongWord(Dest)^ := PLongWord(Source)^ or $FF000000;\n      Inc(NativeInt(Source), 4);\n      Inc(NativeInt(Dest), 4);\n      Dec(Count);\n    end;\n  end;\n\nvar\n  Desc: TD3DSurfaceDesc;\n  DescValid: Boolean;\n  Lock: TD3DLockedRect;\n  Map: TBitmapData;\n  I: Integer;\nbegin\n  if not ASetSize and ABitmap.IsEmpty then\n    raise EBitmapIncorrectSize.Create(SBitmapIncorrectSize);\n\n  if FSurface <> nil then\n  begin\n    if FVideoTexture <> nil then\n      DescValid := Succeeded(FVideoTexture.GetLevelDesc(0, Desc))\n    else\n      DescValid := Succeeded(FSurface.GetDesc(Desc));\n\n    if not DescValid then\n      raise EBitmapIncorrectSize.Create(SRetrieveSurfaceDescription);\n\n    if ASetSize then\n    begin\n      ABitmap.SetSize(Desc.Width, Desc.Height);\n      FRequestedBufferSize := TPoint.Zero;\n    end\n    else if (Integer(Desc.Width) <> ABitmap.Width) or (Integer(Desc.Height) <> ABitmap.Height) then\n    begin\n      FRequestedBufferSize := TPoint.Create(ABitmap.Width, ABitmap.Height);\n\n      // Buffer that was loaded previously has incorrect size, therefore it needs to be reloaded again here.\n      if not LoadBufferToSystemMemory then\n        raise ERetrieveSurfaceContents.Create(SRetrieveSurfaceContents);\n    end;\n\n    if Failed(FSysMemSurface.LockRect(Lock, nil, D3DLOCK_READONLY)) then\n      raise ERetrieveSurfaceContents.Create(SRetrieveSurfaceContents);\n    try\n      if not ABitmap.Map(TMapAccess.Write, Map) then\n        raise EAcquireBitmapAccess.Create(SAcquireBitmapAccess);\n      try\n        for I := 0 to ABitmap.Height - 1 do\n          MoveResetAlpha(Pointer(NativeInt(Lock.pBits) + Lock.Pitch * I), Map.GetScanline(I), Desc.Width);\n      finally\n        ABitmap.Unmap(Map);\n      end;\n    finally\n      FSysMemSurface.UnlockRect;\n    end;\n  end;\nend;\n\nprocedure TVMRRenderer.SetSkipFrames;\nbegin\n  TMonitor.Enter(Self);\n  try\n    FIsSkipFrames := True;\n  finally\n    TMonitor.Exit(Self);\n  end;\n\n  // When we process camera frame we synchronize rendered frame with Main UI Thread and for this purpose\n  // we use TThread.Synchronize. When user stops camera, it uses synchronouse method IMediaControl.Stop,\n  // which blocks UI thread and as result main thread cannot make synchronization and we get dead lock. \n  // For avoiding it we need to invoke CheckSynchronize while current frame is processed.\n  while FRunning and (FIsFinishedProcessingEvent.WaitFor(20) = TWaitResult.wrTimeout) do\n    CheckSynchronize;\nend;\n\nprocedure TVMRRenderer.Sync;\nbegin\n  if FBufferLoaded then\n  begin\n    if Assigned(FSampleBufferReady) then\n      FSampleBufferReady(Self, FBufferLoadTime);\n\n    FBufferLoaded := False;\n  end;\nend;\n\n{ TWindowsVideoCaptureDevice }\n\nfunction PinMatchesCategory(APin: IPin; ACategory: TGuid): Boolean;\nvar\n  LSet: IKsPropertySet;\n  PinCategory: TGuid;\n  Value: DWORD;\n  LResult: HRESULT;\nbegin\n  Result := False;\n\n  if Supports(APin, IKsPropertySet, LSet) then\n  begin\n    LResult := LSet.Get(AMPROPSETID_Pin, AMPROPERTY_PIN_CATEGORY, nil, 0, PinCategory, SizeOf(TGuid), Value);\n    if Succeeded(LResult) and (Value = SizeOf(TGuid)) then\n      Result := (PinCategory = ACategory);\n  end;\nend;\n\nfunction GetStreamConfig(const APin: IPin): IAMStreamConfig;\nbegin\n  Supports(APin, IAMStreamConfig, Result);\nend;\n\nfunction GetCapturePin(const AFilter: IBaseFilter): IPin;\nvar\n  PinsEnum: IEnumPins;\n  Pin: IPin;\n  Config: IAMStreamConfig;\nbegin\n  Result := nil;\n  AFilter.EnumPins(PinsEnum);\n  if PinsEnum <> nil then\n    while PinsEnum.Next(1, Pin, nil) = S_OK do\n      if PinMatchesCategory(Pin, PIN_CATEGORY_CAPTURE) then\n      begin\n        if Supports(Pin, IAMStreamConfig, Config) then\n          Exit(Pin);\n      end;\nend;\n\nconstructor TWindowsVideoCaptureDevice.Create(AManager: TCaptureDeviceManager;\n  const AMoniker: IMoniker; const ADefault: Boolean);\nbegin\n  inherited Create(AManager, ADefault);\n\n  if AMoniker = nil then\n    raise EArgumentNilException.CreateResFmt(@SParamIsNil, ['AMoniker']);\n\n  FMoniker := AMoniker;\nend;\n\ndestructor TWindowsVideoCaptureDevice.Destroy;\nbegin\n  inherited;\nend;\n\nprocedure InitBaseFilter(const Self: TWindowsVideoCaptureDevice); forward; overload;\n\nprocedure TWindowsVideoCaptureDevice.DoStartCapture;\nvar\n  HR: HResult;\n  FailedToRun: Boolean;\nbegin\n  InitBaseFilter(Self);\n\n  FailedToRun := False;\n  // Create GraphBuilder\n  HR := CoCreateInstance(CLSID_CaptureGraphBuilder2, nil, CLSCTX_INPROC_SERVER,\n    IID_ICaptureGraphBuilder2, FCaptureGraphBuilder);\n  if Succeeded(HR) then\n  begin\n    HR := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER, IID_IFilterGraph2, FGraphBuilder);\n    if Succeeded(HR) then\n    begin\n      FCaptureGraphBuilder.SetFiltergraph(FGraphBuilder);\n      // Get IMediaControl\n      FGraphBuilder.QueryInterface(IID_IMediaControl, FMediaControl);\n      // Set Capture\n      HR := FGraphBuilder.AddFilter(FBaseFilter, 'Capture');\n      if Succeeded(HR) then\n      begin\n        // Create VMR\n        FVMRRenderer := TVMRRenderer.Create;\n        FVMRRenderer.FSampleBufferReady := VMRRendererSampleReady;\n        FVMRRenderer.AddToGraph(FGraphBuilder);\n        // Start\n        HR := FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Video, FBaseFilter, nil, FVMRRenderer.FBaseFilter);\n        if Succeeded(HR) then\n        begin\n          if FMediaControl <> nil then\n          begin\n            HR := FMediaControl.Run;\n            FailedToRun := Failed(HR);\n            if not FailedToRun then\n              Exit; // Success\n          end;\n        end;\n      end;\n    end;\n  end;\n  FMediaControl := nil;\n  FCaptureGraphBuilder := nil;\n  FGraphBuilder := nil;\n  FreeAndNil(FVMRRenderer);\n\n  if FailedToRun then\n    raise ECaptureDeviceException.CreateRes(@SCannotRunDirectShowFilterGraph);\nend;\n\nprocedure TWindowsVideoCaptureDevice.DoStopCapture;\nbegin\n  if (FMediaControl <> nil) then\n  begin\n    FVMRRenderer.SetSkipFrames;\n    FMediaControl.StopWhenReady;\n    FMediaControl := nil;\n    FCaptureGraphBuilder := nil;\n    FGraphBuilder := nil;\n    FreeAndNil(FVMRRenderer);\n  end;\nend;\n\nfunction TWindowsVideoCaptureDevice.DoGetAvailableCaptureSettings: TArray<TVideoCaptureSetting>;\nvar\n  MediaEnum: IEnumMediaTypes;\n  Pin: IPin;\n  MediaType: PAMMediaType;\n  OldMediaType: PAMMediaType;\n  MediaHeader: PVideoInfoHeader;\n  List: TList<TVideoCaptureSetting>;\n  Setting: TVideoCaptureSetting;\n  Config: IAMStreamConfig;\nbegin\n  InitBaseFilter(Self);\n\n  SetLength(Result, 0);\n  List := TList<TVideoCaptureSetting>.Create;\n  try\n    Pin := GetCapturePin(FBaseFilter);\n    if Pin <> nil then\n    begin\n      Config := GetStreamConfig(Pin);\n      Config.GetFormat(OldMediaType);\n      try\n        Config.SetFormat(nil);\n        Pin.EnumMediaTypes(MediaEnum);\n        if MediaEnum <> nil then\n          while MediaEnum.Next(1, MediaType, nil) = S_OK do\n            if (MediaType.formattype = FORMAT_VideoInfo) and (MediaType.cbFormat >= SizeOf(VIDEOINFOHEADER)) and\n              (MediaType.pbFormat <> nil) then\n            begin\n              MediaHeader := MediaType.pbFormat;\n              Setting.Width := MediaHeader.bmiHeader.biWidth;\n              Setting.Height := MediaHeader.bmiHeader.biHeight;\n              Setting.FrameRate := FrameDurationScale / MediaHeader.AvgTimePerFrame;\n              if not List.Contains(Setting) then\n                List.Add(Setting);\n            end;\n      finally\n        Config.SetFormat(OldMediaType);\n      end;\n    end;\n    Result := List.ToArray;\n  finally\n    List.Free;\n  end;\nend;\n\nfunction TWindowsVideoCaptureDevice.DoSetCaptureSetting(const ASetting: TVideoCaptureSetting): Boolean;\nvar\n  MediaEnum: IEnumMediaTypes;\n  Pin: IPin;\n  MediaType, SelectedMediaType: PAMMediaType;\n  MediaHeader: PVideoInfoHeader;\n  Found: Boolean;\n  Config: IAMStreamConfig;\n  DesiredAvgDuration: Double;\nbegin\n  InitBaseFilter(Self);\n\n  Found := False;\n  Result := False;\n  DesiredAvgDuration := FrameDurationScale / ASetting.FrameRate;\n  Pin := GetCapturePin(FBaseFilter);\n\n  if Pin <> nil then\n  begin\n    // We store the current configuration in order to reset it if there was any problem\n    Config := GetStreamConfig(Pin);\n    Config.GetFormat(SelectedMediaType);\n    try\n      Config.SetFormat(nil);\n      Pin.EnumMediaTypes(MediaEnum);\n      if MediaEnum <> nil then\n        while (Found = False) and (MediaEnum.Next(1, MediaType, nil) = S_OK) do\n        begin\n          if (MediaType.formattype = FORMAT_VideoInfo) and (MediaType.cbFormat >= SizeOf(VIDEOINFOHEADER)) and\n            (MediaType.pbFormat <> nil) then\n          begin\n            MediaHeader := MediaType.pbFormat;\n\n            if (MediaHeader.bmiHeader.biWidth = ASetting.Width) and (MediaHeader.bmiHeader.biHeight = ASetting.Height) and\n              (MediaHeader.AvgTimePerFrame = DesiredAvgDuration) then\n            begin\n              // As described in Direct Show, this is an estimation\n              Found := True;\n              SelectedMediaType := MediaType;\n              Break;\n            end;\n          end;\n        end;\n    finally\n      Result := Found and Succeeded(Config.SetFormat(SelectedMediaType));\n    end;\n  end;\nend;\n\nprocedure TWindowsVideoCaptureDevice.DoSetQuality(const Value: TVideoCaptureQuality);\nvar\n  SettingsList: TArray<TVideoCaptureSetting>;\n  Priority: TVideoCaptureSettingPriority;\nbegin\n  if Value <> TVideoCaptureQuality.CaptureSettings then\n  begin\n    Priority := CaptureSettingPriority;\n    try\n      CaptureSettingPriority := TVideoCaptureSettingPriority.Resolution;\n      SettingsList := AvailableCaptureSettings;\n    finally\n      CaptureSettingPriority := Priority;\n    end;\n\n    if Length(SettingsList) > 0 then\n    begin\n      case Value of\n        TVideoCaptureQuality.PhotoQuality: CaptureSetting := SettingsList[0];\n        TVideoCaptureQuality.HighQuality: CaptureSetting := SettingsList[0];\n        TVideoCaptureQuality.MediumQuality: CaptureSetting := SettingsList[Length(SettingsList) div 2];\n        TVideoCaptureQuality.LowQuality: CaptureSetting := SettingsList[High(SettingsList)];\n      end;\n    end;\n  end;\n  inherited;\nend;\n\nfunction TWindowsVideoCaptureDevice.GetCaptureSetting: TVideoCaptureSetting;\nvar\n  PinsEnum: IEnumPins;\n  Pin: IPin;\n  MediaType: PAMMediaType;\n  MediaHeader: PVideoInfoHeader;\n  Config: IAMStreamConfig;\nbegin\n  InitBaseFilter(Self);\n\n  Result := TVideoCaptureSetting.Create;\n  FBaseFilter.EnumPins(PinsEnum);\n\n  if PinsEnum <> nil then\n    while (PinsEnum.Next(1, Pin, nil) = S_OK) and Supports(Pin, IAMStreamConfig, Config) do\n    begin\n      Config.GetFormat(MediaType);\n      MediaHeader := MediaType.pbFormat;\n      Exit(TVideoCaptureSetting.Create(MediaHeader.bmiHeader.biWidth, MediaHeader.bmiHeader.biHeight,\n        FrameDurationScale / MediaHeader.AvgTimePerFrame));\n    end;\nend;\n\nprocedure TWindowsVideoCaptureDevice.DoSampleBufferToBitmap(const ABitmap: TBitmap; const ASetSize: Boolean);\nbegin\n  FVMRRenderer.SampleBufferToBitmap(ABitmap, ASetSize);\nend;\n\nfunction TWindowsVideoCaptureDevice.GetDeviceProperty(const Prop: TCaptureDevice.TProperty): string;\nvar\n  PropBag: IPropertyBag;\n  HR: HRESULT;\n  V: OleVariant;\nbegin\n  HR := FMoniker.BindToStorage(nil, nil, IPropertyBag, PropBag);\n  if Succeeded(HR) then\n  begin\n    case Prop of\n      TProperty.Description:\n        begin\n          PropBag.Read('Description', V, nil);\n          Result := V;\n        end;\n      TProperty.Name:\n        begin\n          PropBag.Read('FriendlyName', V, nil);\n          Result := V;\n        end;\n      TProperty.UniqueID:\n        begin\n          PropBag.Read('DevicePath', V, nil);\n          Result := V;\n        end;\n    else\n      Result := string.Empty;\n    end;\n  end\n  else\n    Result := string.Empty;\nend;\n\nfunction TWindowsVideoCaptureDevice.GetDeviceState: TCaptureDeviceState;\nbegin\n  if FMediaControl <> nil then\n    Result := TCaptureDeviceState.Capturing\n  else\n    Result := TCaptureDeviceState.Stopped;\nend;\n\nprocedure TWindowsVideoCaptureDevice.VMRRendererSampleReady(Sender: TObject; const ATime: TMediaTime);\nbegin\n  SampleBufferReady(ATime);\nend;\n\nprocedure InitBaseFilter(const Self: TWindowsVideoCaptureDevice);\nvar\n  HR: HResult;\nbegin\n  if Self.FBaseFilter <> nil then\n    Exit;\n\n  HR := Self.FMoniker.BindToObject(nil, nil, IID_IBaseFilter, Self.FBaseFilter);\n\n  if Failed(HR) then\n    raise ECaptureDeviceException.CreateRes(@SCannotCreateDirectShowCaptureFilter);\nend;\n\n{ TWindowsMedia }\n\nconstructor TWindowsMedia.Create(const AFileName: string);\nbegin\n  if (not FileExists(AFileName)) and (IsValidURL(nil, PChar(AFileName), 0) <> S_OK) then\n    raise EFileNotFoundException.Create(SFileNotFound);\n\n  inherited;\n  FMediaState := TMediaState.Unavailable;\n  InitWnd;\n  if InitMediaControl and InitVideoMixingRenderer9 then\n  begin\n    if not LocateVideoMixingRenderer9 then\n    begin\n      FVMR := nil;\n      FVMRFilterConfig9 := nil;\n      if InitVideoMixingRenderer7 then\n        LocateVideoMixingRenderer7\n      else\n        raise EMediaException.Create(SMediaGlobalError);\n    end;\n    if InitGraphTree then\n      Exit;\n  end;\n  DestroyWnd;\n  FGraphBuilder := nil;\n  FMediaControl := nil;\n  raise EMediaException.CreateFmt(SMediaFileNotSupported, [ExtractFileName(AFileName)]);\nend;\n\ndestructor TWindowsMedia.Destroy;\nbegin\n  StopAndFreeWaitCompletionThread;\n  DestroyWnd;\n  if FMediaControl <> nil then\n  begin\n    FMediaControl.StopWhenReady;\n    FMediaControl := nil;\n  end;\n  FGraphBuilder := nil;\n  inherited Destroy;\nend;\n\nprocedure TWindowsMedia.DestroyWnd;\nbegin\n  DestroyWindow(FWnd);\nend;\n\nprocedure TWindowsMedia.DoPlay;\nbegin\n  FMediaState := TMediaState.Playing;\n  FMediaControl.Run;\n\n  StartWaitCompletionThread;\nend;\n\nprocedure TWindowsMedia.DoStop;\nbegin\n  StopAndFreeWaitCompletionThread;\n\n  FMediaControl.StopWhenReady;\n  FMediaState := TMediaState.Stopped;\nend;\n\nprocedure TWindowsMedia.UpdateMediaFromControl;\nvar\n  P: TPointF;\n  R: TRect;\n  Bounds: TRectF;\n  Form: TCommonCustomForm;\n  BoundsInt: TRect;\nbegin\n  if FWnd = 0 then\n    Exit;\n\n  if (Control <> nil) and not (csDesigning in Control.ComponentState) and (Control.ParentedVisible) and\n     (Control.Root <> nil) and (Control.Root.GetObject is TCommonCustomForm) then\n  begin\n    Form := TCommonCustomForm(Control.Root.GetObject);\n    var Scale := Form.Handle.Scale;\n    SetParent(FWnd, WindowHandleToPlatform(Form.Handle).Wnd);\n\n    P := GetVideoSize;\n    Bounds := TRectF.Create(0, 0, P.X, P.Y);\n    Bounds.Fit(TRectF.Create(0, 0, Control.AbsoluteWidth, Control.AbsoluteHeight));\n    Bounds.Offset(Control.AbsoluteRect.TopLeft);\n    BoundsInt := TRectF.Create(Bounds.Left * Scale, Bounds.Top * Scale,\n                               Bounds.Right * Scale, Bounds.Bottom * Scale).Round;\n\n    SetWindowPos(FWnd, 0, BoundsInt.Left, BoundsInt.Top, BoundsInt.Width, BoundsInt.Height, 0);\n\n    R := TRect.Create(0, 0, BoundsInt.Width, BoundsInt.Height);\n    if FVMRWindowlessControl9 <> nil then\n      FVMRWindowlessControl9.SetVideoPosition(nil, @R);\n    if FVMRWindowlessControl7 <> nil then\n      FVMRWindowlessControl7.SetVideoPosition(nil, @R);\n    ShowWindow(FWnd, SW_SHOW)\n  end\n  else\n  begin\n    SetParent(FWnd, ApplicationHWND);\n    ShowWindow(FWnd, SW_HIDE)\n  end;\nend;\n\nprocedure TWindowsMedia.WaitCompletionThreadTerminated(Sender: TObject);\nbegin\n  FMediaState := TMediaState.Stopped;\n  // IMediaControl doesn't stop, even if the playback is already finished.\n  // This causes the video to continue playing if the user changes the Current position.\n  FMediaControl.Pause;\nend;\n\nfunction TWindowsMedia.GetDuration: TMediaTime;\nvar\n  LDuration: Int64;\nbegin\n  if FMediaSeeking = nil then\n    Result := 0\n  else\n  begin\n    FMediaSeeking.GetDuration(LDuration);\n    Result := LDuration;\n  end;\nend;\n\nfunction TWindowsMedia.GetCurrent: TMediaTime;\nvar\n  CurrentPosition: Int64;\nbegin\n  if FMediaSeeking = nil then\n    Result := 0\n  else\n  begin\n    FMediaSeeking.GetCurrentPosition(CurrentPosition);\n    Result := CurrentPosition;\n  end;\nend;\n\nprocedure TWindowsMedia.SetCurrent(const Value: TMediaTime);\nvar\n  CurrentPosition, S: Int64;\nbegin\n  if FMediaSeeking <> nil then\n  begin\n    CurrentPosition := Value;\n    FMediaSeeking.SetPositions(CurrentPosition, AM_SEEKING_AbsolutePositioning, S, AM_SEEKING_SeekToKeyFrame);\n  end;\nend;\n\nfunction TWindowsMedia.GetVolume: Single;\nvar\n  LVolume: Integer;\nbegin\n  if FBasicAudio <> nil then\n  begin\n    FBasicAudio.get_Volume(LVolume);\n    if LVolume > MinAllowedVolume then\n      Result := EnsureRange(Power(10, -LVolume / MinAllowedVolume), 0, 1)\n    else\n      Result := 0;\n  end\n  else\n    Result := 1.0;\nend;\n\nfunction TWindowsMedia.InitGraphTree: Boolean;\nbegin\n  Result := False;\n  if Succeeded(FGraphBuilder.RenderFile(PChar(FileName), nil)) then\n  begin\n    FMediaControl.StopWhenReady;\n    // Get IMediaSeeking\n    FGraphBuilder.QueryInterface(IID_IMediaSeeking, FMediaSeeking);\n    // Get IBaseAudio\n    FGraphBuilder.QueryInterface(IID_IBasicAudio, FBasicAudio);\n    Result := True; // Success\n  end;\nend;\n\nfunction TWindowsMedia.InitMediaControl: Boolean;\nbegin\n  Result := Succeeded(CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, FGraphBuilder)) and\n    Succeeded(FGraphBuilder.QueryInterface(IID_IMediaControl, FMediaControl));\nend;\n\nfunction TWindowsMedia.InitVideoMixingRenderer7: Boolean;\nconst\n  VideoMixingRenderer7 = 'Video Mixing Renderer7';\nbegin\n  Result := Succeeded(CoCreateInstance(CLSID_VideoMixingRenderer, nil, CLSCTX_INPROC, IID_IBaseFilter, FVMR)) and\n    Succeeded(FVMR.QueryInterface(IVMRFilterConfig, FVMRFilterConfig7)) and\n    Succeeded(FGraphBuilder.AddFilter(FVMR, VideoMixingRenderer7)) and\n    Succeeded(FVMRFilterConfig7.SetRenderingMode(VMRMode_Windowless));\nend;\n\nfunction TWindowsMedia.InitVideoMixingRenderer9: Boolean;\nconst\n  VideoMixingRenderer9 = 'Video Mixing Renderer9';\nbegin\n  Result := Succeeded(CoCreateInstance(CLSID_VideoMixingRenderer9, nil, CLSCTX_INPROC, IID_IBaseFilter, FVMR)) and\n    Succeeded(FVMR.QueryInterface(IVMRFilterConfig9, FVMRFilterConfig9)) and\n    Succeeded(FGraphBuilder.AddFilter(FVMR, VideoMixingRenderer9)) and\n    Succeeded(FVMRFilterConfig9.SetRenderingMode(VMR9Mode_Windowless));\nend;\n\nprocedure TWindowsMedia.InitWnd;\nvar\n  WindowClass: TWndClass;\nbegin\n  if not GetClassInfo(hInstance, PChar('VMRWindow'), WindowClass) then\n  begin\n    FillChar(WindowClass, SizeOf(WindowClass), 0);\n    WindowClass.Style := CS_HREDRAW or CS_VREDRAW;\n    WindowClass.lpfnWndProc := @DefWindowProc;\n    WindowClass.cbClsExtra := 0;\n    WindowClass.cbWndExtra := 0;\n    WindowClass.hInstance := hInstance;\n    WindowClass.hCursor := LoadCursorW(0, PChar(IDC_ARROW));\n    WindowClass.hbrBackground := GetStockObject(NULL_BRUSH);\n    WindowClass.lpszMenuName := nil;\n    WindowClass.lpszClassName := PChar('VMRWindow');\n    if Winapi.Windows.RegisterClass(WindowClass) = 0 then\n      RaiseLastOSError;\n  end;\n  FWnd := CreateWindowEx(0, WindowClass.lpszClassName, nil, WS_CHILDWINDOW,\n    0, 0, 0, 0, GetDesktopWindow, 0, hInstance, nil);\n  ShowWindow(FWnd, SW_HIDE);\nend;\n\nfunction TWindowsMedia.LocateVideoMixingRenderer7: Boolean;\nvar\n  R: TRect;\nbegin\n  Result := False;\n  if Succeeded(FVMR.QueryInterface(IVMRWindowlessControl, FVMRWindowlessControl7)) then\n  begin\n    FVMRWindowlessControl7.SetVideoClippingWindow(FWnd);\n    GetClientRect(FWnd, R);\n    FVMRWindowlessControl7.SetVideoPosition(nil, @R);\n    Result := True;\n  end\nend;\n\nfunction TWindowsMedia.LocateVideoMixingRenderer9: Boolean;\nvar\n  R: TRect;\nbegin\n  Result := False;\n  if Succeeded(FVMR.QueryInterface(IVMRWindowlessControl9, FVMRWindowlessControl9)) then\n  begin\n    FVMRWindowlessControl9.SetVideoClippingWindow(FWnd);\n    GetClientRect(FWnd, R);\n    FVMRWindowlessControl9.SetVideoPosition(nil, @R);\n    Result := True;\n  end\nend;\n\nfunction TWindowsMedia.QueryInterface(const IID: TGUID; out Obj): HResult;\nbegin\n  if Supports(FGraphBuilder, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FMediaControl, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FMediaSeeking, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FBasicAudio, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FVMR, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FVMRFilterConfig9, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FVMRWindowlessControl9, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FVMRFilterConfig7, IID, Obj) then\n    Exit(S_OK);\n  if Supports(FVMRWindowlessControl7, IID, Obj) then\n    Exit(S_OK);\n  Result := E_NOTIMPL;\nend;\n\nprocedure TWindowsMedia.SetVolume(const Value: Single);\nvar\n  LVolume : Single;\nbegin\n  if FBasicAudio = nil then\n    Exit;\n\n  if Value > 0 then\n  begin\n    LVolume := EnsureRange(-MinAllowedVolume * Log10(Value), MinAllowedVolume, 0);\n    FBasicAudio.put_Volume(Round(LVolume));\n  end\n  else\n    FBasicAudio.put_Volume(MinAllowedVolume);\nend;\n\nprocedure TWindowsMedia.StartWaitCompletionThread;\nvar\n  MediaEvent: IMediaEvent;\nbegin\n  if (FWaitCompletionThread = nil) or FWaitCompletionThread.Finished then\n  begin\n    StopAndFreeWaitCompletionThread;\n    if Supports(FGraphBuilder, IMediaEvent, MediaEvent) then\n    begin\n      FWaitCompletionThread := TWaitMediaCompletionThread.Create(MediaEvent);\n      FWaitCompletionThread.OnTerminate := WaitCompletionThreadTerminated;\n    end;\n  end;\nend;\n\nprocedure TWindowsMedia.StopAndFreeWaitCompletionThread;\nbegin\n  if FWaitCompletionThread <> nil then\n  begin\n    FWaitCompletionThread.Terminate;\n    FWaitCompletionThread.WaitFor;\n    FreeAndNil(FWaitCompletionThread);\n  end;\nend;\n\nfunction TWindowsMedia.GetMediaState: TMediaState;\nbegin\n  Result := FMediaState;\nend;\n\nfunction TWindowsMedia.GetVideoSize: TPointF;\nvar\n  W, H, AW, AH: Integer;\nbegin\n  if FVMRWindowlessControl9 <> nil then\n  begin\n    FVMRWindowlessControl9.GetNativeVideoSize(W, H, AW, AH);\n    Result := TPointF.Create(W, H);\n  end\n  else if FVMRWindowlessControl7 <> nil then\n  begin\n    FVMRWindowlessControl7.GetNativeVideoSize(W, H, AW, AH);\n    Result := TPointF.Create(W, H);\n  end\n  else\n    Result := TPointF.Zero;\nend;\n\n{ TWindowsMediaCodec }\n\nfunction TWindowsMediaCodec.CreateFromFile(const AFileName: string): TMedia;\nbegin\n  Result := TWindowsMedia.Create(AFileName);\nend;\n\n{ TWaitMediaCompletionThread }\n\nconstructor TWaitMediaCompletionThread.Create(const AMediaEvent: IMediaEvent);\nbegin\n  inherited Create(False);\n  FMediaEvent := AMediaEvent;\nend;\n\nprocedure TWaitMediaCompletionThread.Execute;\nconst\n  CheckingStateInterval = 50;\nvar\n  EventCode: Integer;\nbegin\n  EventCode := 0;\n  try\n    while (EventCode = 0) and not Terminated do\n      FMediaEvent.WaitForCompletion(CheckingStateInterval, EventCode);\n  finally\n    FMediaEvent := nil;\n  end;\nend;\n\ninitialization\n  TMediaCodecManager.RegisterMediaCodecClass('.avi', SVAviFiles, TMediaType.Video, TWindowsMediaCodec);\n  TMediaCodecManager.RegisterMediaCodecClass('.wmv', SVWMVFiles, TMediaType.Video, TWindowsMediaCodec);\n  TMediaCodecManager.RegisterMediaCodecClass('.mp4', SVMP4Files, TMediaType.Video, TWindowsMediaCodec);\n  TMediaCodecManager.RegisterMediaCodecClass('.m4v', SVMP4Files, TMediaType.Video, TWindowsMediaCodec);\n  TMediaCodecManager.RegisterMediaCodecClass('.mov', SVMOVFiles, TMediaType.Video, TWindowsMediaCodec);\n\n  TMediaCodecManager.RegisterMediaCodecClass('.wma', SVWMAFiles, TMediaType.Audio, TWindowsMediaCodec);\n  TMediaCodecManager.RegisterMediaCodecClass('.mp3', SVMP3Files, TMediaType.Audio, TWindowsMediaCodec);\n  TMediaCodecManager.RegisterMediaCodecClass('.wav', SVWAVFiles, TMediaType.Audio, TWindowsMediaCodec);\n\n  TMediaCodecManager.RegisterMediaCodecClass(SAllFilesExt, SDefault, TMediaType.Video, TWindowsMediaCodec);\n\nfinalization\nend.\n"
  },
  {
    "path": "FunctionsLib/func_cmd.pas",
    "content": "﻿unit func_cmd;\n\ninterface\n\nuses\n  System.SysUtils, System.JSON, ChatGPT.Functions.External.Intf, Process;\n\ntype\n  TChatFunctionCMD = class(TInterfacedObject, IChatFunctionExternal)\n  protected\n    function GetDescription: WideString;\n    function GetName: WideString;\n    function GetParameters: WideString;\n  public\n    function Execute(const Args: WideString): WideString;\n  end;\n\nimplementation\n\n{ TChatFunctionCMD }\n\nfunction TChatFunctionCMD.Execute(const Args: WideString): WideString;\nvar\n  JSON: TJSONObject;\n  Command: string;\n  Params: TArray<string>;\nbegin\n  Result := '';\n  // Parse arguments\n  try\n    JSON := TJSONObject.ParseJSONValue(Args) as TJSONObject;\n    if Assigned(JSON) then\n    try\n      Command := JSON.GetValue('command', '');\n      Params := ['/c', Command] + JSON.GetValue<TArray<string>>('params', ['']);\n    finally\n      JSON.Free;\n    end;\n  except\n    JSON := nil;\n  end;\n  // Invalid arguments\n  if (not Assigned(JSON)) or Command.IsEmpty then\n    Exit;\n\n  // Generate response\n  JSON := TJSONObject.Create;\n  try\n    var Output: AnsiString;\n    if RunCommand('cmd', Params, Output, [poNoConsole]) then\n      JSON.AddPair('result', string(Output))\n    else\n      JSON.AddPair('error', 'Unknown error');\n    Result := JSON.ToJSON;\n  finally\n    JSON.Free;\n  end;\nend;\n\nfunction TChatFunctionCMD.GetDescription: WideString;\nbegin\n  Result := 'Run command via cmd';\nend;\n\nfunction TChatFunctionCMD.GetName: WideString;\nbegin\n  Result := 'execute_command';\nend;\n\nfunction TChatFunctionCMD.GetParameters: WideString;\nbegin\n  Result :=\n    '{' +\n    '  \"type\": \"object\",' +\n    '  \"properties\": {' +\n    '    \"command\": {\"type\": \"string\", \"description\": \"Command to execute\"},' +\n    '    \"params\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"description\": \"Command Options\"}' +\n    '  },' +\n    '  \"required\": [\"command\"]' +\n    '}';\nend;\n\nend.\n\n\n"
  },
  {
    "path": "FunctionsLib/func_weather.pas",
    "content": "﻿unit func_weather;\n\ninterface\n\nuses\n  System.SysUtils, System.JSON, ChatGPT.Functions.External.Intf, OWM.API,\n  OWM.Classes;\n\ntype\n  TChatFunctionWeather = class(TInterfacedObject, IChatFunctionExternal)\n    const\n      OWM_APPID = '36994c7b370d2e4c0753e34696105d7c'; //I do not mind)\n  protected\n    function GetDescription: WideString;\n    function GetName: WideString;\n    function GetParameters: WideString;\n  public\n    function Execute(const Args: WideString): WideString;\n  end;\n\nimplementation\n\n{ TChatFunctionWeather }\n\nfunction TChatFunctionWeather.Execute(const Args: WideString): WideString;\nvar\n  JSON: TJSONObject;\n  Location: string;\n  UnitKind: string;\nbegin\n  Result := '';\n  // Parse arguments\n  try\n    JSON := TJSONObject.ParseJSONValue(Args) as TJSONObject;\n    if Assigned(JSON) then\n    try\n      Location := JSON.GetValue('location', '');\n      UnitKind := JSON.GetValue('unit', '');\n    finally\n      JSON.Free;\n    end;\n  except\n    JSON := nil;\n  end;\n  // Invalid arguments\n  if (not Assigned(JSON)) or Location.IsEmpty then\n    Exit;\n\n  // Generate response\n  JSON := TJSONObject.Create;\n  try\n    var OWM := TOWMAPI.Create(nil, OWM_APPID);\n    try\n      var OWMCurrent: TOWMCurrent;\n      var Units: TOWMUnit;\n      if UnitKind = 'celsius' then\n        Units := TOWMUnit.Metric\n      else if UnitKind = 'fahrenheit' then\n        Units := TOWMUnit.Imperial\n      else\n        Units := TOWMUnit.Metric;\n\n      if OWM.Current(OWMCurrent, Location, Units) then\n      try\n        JSON.AddPair('location', OWMCurrent.Name);\n        JSON.AddPair('unit', UnitKind);\n\n        JSON.AddPair('temperature', TJSONNumber.Create(Round(OWMCurrent.Main.Temp)));\n        JSON.AddPair('pressure', TJSONNumber.Create(OWMCurrent.Main.Pressure));\n        JSON.AddPair('humidity', TJSONNumber.Create(OWMCurrent.Main.Humidity));\n\n        Result := JSON.ToJSON;\n      finally\n        OWMCurrent.Free;\n      end;\n    finally\n      OWM.Free;\n    end;\n  finally\n    JSON.Free;\n  end;\nend;\n\nfunction TChatFunctionWeather.GetDescription: WideString;\nbegin\n  Result := 'Get the current weather in a given location';\nend;\n\nfunction TChatFunctionWeather.GetName: WideString;\nbegin\n  Result := 'get_current_weather';\nend;\n\nfunction TChatFunctionWeather.GetParameters: WideString;\nbegin\n  Result :=\n    '{' +\n    '  \"type\": \"object\",' +\n    '  \"properties\": {' +\n    '    \"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"},' +\n    '    \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}' +\n    '  },' +\n    '  \"required\": [\"location\"]' +\n    '}';\nend;\n\nend.\n\n"
  },
  {
    "path": "FunctionsLib/gpt_function_cmd.dpr",
    "content": "﻿library gpt_function_cmd;\n\nuses\n  System.SysUtils,\n  ChatGPT.Functions.External.Intf in '..\\ChatGPT.Functions.External.Intf.pas',\n  func_cmd in 'func_cmd.pas',\n  Process in '..\\TProcessDelphi\\Process.pas',\n  Pipes in '..\\TProcessDelphi\\Pipes.pas';\n\nfunction gptfunctions: TArray<IChatFunctionExternal>;\nbegin\n  Result := [TChatFunctionCMD.Create];\nend;\n\nexports\n  gptfunctions;\n\nbegin\nend.\n\n"
  },
  {
    "path": "FunctionsLib/gpt_function_cmd.dproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <PropertyGroup>\n        <ProjectGuid>{5D99C67F-D3C0-4DC0-A153-9C8F66990649}</ProjectGuid>\n        <ProjectVersion>20.4</ProjectVersion>\n        <FrameworkType>None</FrameworkType>\n        <Base>True</Base>\n        <Config Condition=\"'$(Config)'==''\">Debug</Config>\n        <Platform Condition=\"'$(Platform)'==''\">Win32</Platform>\n        <TargetedPlatforms>3</TargetedPlatforms>\n        <AppType>Library</AppType>\n        <MainSource>gpt_function_cmd.dpr</MainSource>\n        <ProjectName Condition=\"'$(ProjectName)'==''\">gpt_function_cmd</ProjectName>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''\">\n        <Base_Android>true</Base_Android>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''\">\n        <Base_Android64>true</Base_Android64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''\">\n        <Base_iOSDevice64>true</Base_iOSDevice64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSSimARM64' and '$(Base)'=='true') or '$(Base_iOSSimARM64)'!=''\">\n        <Base_iOSSimARM64>true</Base_iOSSimARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Linux64' and '$(Base)'=='true') or '$(Base_Linux64)'!=''\">\n        <Base_Linux64>true</Base_Linux64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSX64' and '$(Base)'=='true') or '$(Base_OSX64)'!=''\">\n        <Base_OSX64>true</Base_OSX64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSXARM64' and '$(Base)'=='true') or '$(Base_OSXARM64)'!=''\">\n        <Base_OSXARM64>true</Base_OSXARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''\">\n        <Base_Win32>true</Base_Win32>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''\">\n        <Base_Win64>true</Base_Win64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_1)'!=''\">\n        <Cfg_1>true</Cfg_1>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''\">\n        <Cfg_1_Win32>true</Cfg_1_Win32>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_2)'!=''\">\n        <Cfg_2>true</Cfg_2>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base)'!=''\">\n        <DCC_DcuOutput>.\\$(Platform)\\$(Config)</DCC_DcuOutput>\n        <DCC_ExeOutput>.\\$(Platform)\\$(Config)</DCC_ExeOutput>\n        <DCC_E>false</DCC_E>\n        <DCC_N>false</DCC_N>\n        <DCC_S>false</DCC_S>\n        <DCC_F>false</DCC_F>\n        <DCC_K>false</DCC_K>\n        <GenDll>true</GenDll>\n        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>\n        <SanitizedProjectName>gpt_function_cmd</SanitizedProjectName>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android)'!=''\">\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <EnabledSysJars>activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android64)'!=''\">\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <EnabledSysJars>activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSDevice64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSSimARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Linux64)'!=''\">\n        <DCC_UsePackage>DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;Skia.Package.RTL;dbxcds;emsedge;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;dbexpress;FireDACInfxDriver;inet;DataSnapCommon;dbrtl;FireDACOracleDriver;Skia.Package.FMX;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;FireDACMongoDBDriver;IndySystem;RadiantShapesFmx;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;VLCPlayer;IndyCore;RESTBackendComponents;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;dsnapxml;DataSnapClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;xmlrtl;dsnap;CloudService;FireDACDb2Driver;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSX64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSXARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win32)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;RadiantShapesFmx_Design;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;HGMComponents;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;HGMLineStorage;FireDACSqliteDriver;DbxClientDriver;FmxTrayIcon;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;CEF4DelphiVCLRTL;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;TGC_API;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;AbbreviaVCLD;DataSnapIndy10ServerTransport;CEF4DelphiFMXRTL;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;PngComponentsD;RvXmlFMXD11;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;DelphiDiagPlugin;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;VLCPlayer;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;RvHtmlFMXD11;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ChatGptWizard;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;VKComponents;RVPkgFMXD11;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;mbColorLibDXTokyo;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <DCC_ExeOutput>D:\\Projects\\ChatGPT\\Win32\\Debug\\funcs\\</DCC_ExeOutput>\n        <Manifest_File>(None)</Manifest_File>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win64)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;RadiantShapesFmx_Design;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;CEF4DelphiVCLRTL;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;AbbreviaVCLD;DataSnapIndy10ServerTransport;CEF4DelphiFMXRTL;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;PngComponentsD;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;VLCPlayer;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n        <DCC_DebugDCUs>true</DCC_DebugDCUs>\n        <DCC_Optimize>false</DCC_Optimize>\n        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>\n        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>\n        <DCC_RemoteDebug>true</DCC_RemoteDebug>\n        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>\n        <DCC_RangeChecking>true</DCC_RangeChecking>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Win32)'!=''\">\n        <DCC_RemoteDebug>false</DCC_RemoteDebug>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <Manifest_File>(None)</Manifest_File>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n        <DCC_DebugInformation>0</DCC_DebugInformation>\n    </PropertyGroup>\n    <ItemGroup>\n        <DelphiCompile Include=\"$(MainSource)\">\n            <MainSource>MainSource</MainSource>\n        </DelphiCompile>\n        <DCCReference Include=\"..\\ChatGPT.Functions.External.Intf.pas\"/>\n        <DCCReference Include=\"func_cmd.pas\"/>\n        <DCCReference Include=\"..\\TProcessDelphi\\Process.pas\"/>\n        <DCCReference Include=\"..\\TProcessDelphi\\Pipes.pas\"/>\n        <BuildConfiguration Include=\"Base\">\n            <Key>Base</Key>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Debug\">\n            <Key>Cfg_1</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Release\">\n            <Key>Cfg_2</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n    </ItemGroup>\n    <ProjectExtensions>\n        <Borland.Personality>Delphi.Personality.12</Borland.Personality>\n        <Borland.ProjectType>Application</Borland.ProjectType>\n        <BorlandProject>\n            <Delphi.Personality>\n                <Source>\n                    <Source Name=\"MainSource\">gpt_function_cmd.dpr</Source>\n                </Source>\n                <Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dcloffice2k280.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dclofficexp280.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n                </Excluded_Packages>\n            </Delphi.Personality>\n            <Deployment Version=\"5\">\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libpcre.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\osx32\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"OSX32\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"Win32\\Debug\\gpt_function_cmd.dll\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployClass Name=\"AdditionalDebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidFileProvider\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiv7aFile\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeMipsFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDef\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDefV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStyles\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV35\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconBackground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconForeground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconMonochrome\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconV33\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Colors\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_ColorsDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_DefaultAppIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon144\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon192\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon24\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage426\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage470\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage640\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage960\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Strings\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedNotificationIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplash\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31Dark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyFramework\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyModule\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.dll;.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"DependencyPackage\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"File\">\n                    <Platform Name=\"Android\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectAndroidManifest\">\n                    <Platform Name=\"Android\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXDebug\">\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXEntitlements\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXInfoPList\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXResource\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"ProjectOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Linux64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectUWPManifest\">\n                    <Platform Name=\"Win32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64x\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSDeviceDebug\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSEntitlements\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSInfoPList\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSLaunchScreen\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSResource\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo150\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo44\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iOS_AppStore1024\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon152\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon167\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_SpotLight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon180\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification60\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting87\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <ProjectRoot Platform=\"Android\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Android64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"iOSDevice32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSDevice64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSSimARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Linux64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"OSX32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSX64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSXARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Win32\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64x\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"WinARM64EC\" Name=\"$(PROJECTNAME)\"/>\n            </Deployment>\n            <Platforms>\n                <Platform value=\"Android\">False</Platform>\n                <Platform value=\"Android64\">False</Platform>\n                <Platform value=\"iOSDevice64\">False</Platform>\n                <Platform value=\"iOSSimARM64\">False</Platform>\n                <Platform value=\"Linux64\">False</Platform>\n                <Platform value=\"OSX64\">False</Platform>\n                <Platform value=\"OSXARM64\">False</Platform>\n                <Platform value=\"Win32\">True</Platform>\n                <Platform value=\"Win64\">True</Platform>\n            </Platforms>\n        </BorlandProject>\n        <ProjectFileVersion>12</ProjectFileVersion>\n    </ProjectExtensions>\n    <Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n    <Import Project=\"$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj\" Condition=\"Exists('$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj')\"/>\n    <Import Project=\"$(MSBuildProjectName).deployproj\" Condition=\"Exists('$(MSBuildProjectName).deployproj')\"/>\n</Project>\n"
  },
  {
    "path": "FunctionsLib/gpt_function_owm.deployproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <Import Condition=\"Exists('$(BDS)\\bin\\CodeGear.Deployment.targets')\" Project=\"$(BDS)\\bin\\CodeGear.Deployment.targets\"/>\n    <ProjectExtensions>\n        <ProjectFileVersion>12</ProjectFileVersion>\n    </ProjectExtensions>\n    <PropertyGroup>\n        <DeviceId Condition=\"'$(Platform)'=='Android'\"/>\n        <DeviceId Condition=\"'$(Platform)'=='Android64'\"/>\n        <DeviceId Condition=\"'$(Platform)'=='iOSDevice64'\"/>\n        <DeviceId Condition=\"'$(Platform)'=='iOSSimARM64'\"/>\n    </PropertyGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='Win32'\">\n        <DeployFile Include=\"Win32\\Debug\\gpt_function_owm.dll\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>gpt_function_owm\\</RemoteDir>\n            <RemoteName>gpt_function_owm.dll</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>0</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='Android64'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Android'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Win64'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='Linux64'\">\n        <DeployFile Include=\"Linux64\\Debug\\libgpt_function_owm.so\" Condition=\"'$(Config)'=='Debug'\">\n            <RemoteDir>gpt_function_owm\\</RemoteDir>\n            <RemoteName>libgpt_function_owm.so</RemoteName>\n            <DeployClass>ProjectOutput</DeployClass>\n            <Operation>1</Operation>\n            <LocalCommand/>\n            <RemoteCommand/>\n            <Overwrite>True</Overwrite>\n            <Required>True</Required>\n        </DeployFile>\n    </ItemGroup>\n    <ItemGroup Condition=\"'$(Platform)'=='iOSDevice64'\"/>\n    <ItemGroup Condition=\"'$(Platform)'=='iOSSimARM64'\"/>\n</Project>\n"
  },
  {
    "path": "FunctionsLib/gpt_function_owm.dpr",
    "content": "﻿library gpt_function_owm;\n\nuses\n  System.SysUtils,\n  ChatGPT.Functions.External.Intf in '..\\ChatGPT.Functions.External.Intf.pas',\n  OWM.API in '..\\OWM_API\\OWM.API.pas',\n  OWM.Classes in '..\\OWM_API\\OWM.Classes.pas',\n  func_weather in 'func_weather.pas';\n\nfunction gptfunctions: TArray<IChatFunctionExternal>;\nbegin\n  Result := [TChatFunctionWeather.Create];\nend;\n\nexports\n  gptfunctions;\n\nbegin\nend.\n\n"
  },
  {
    "path": "FunctionsLib/gpt_function_owm.dproj",
    "content": "﻿<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <PropertyGroup>\n        <ProjectGuid>{457F1337-2798-49A4-AA4E-15829CD7ABC9}</ProjectGuid>\n        <ProjectVersion>20.4</ProjectVersion>\n        <FrameworkType>None</FrameworkType>\n        <Base>True</Base>\n        <Config Condition=\"'$(Config)'==''\">Debug</Config>\n        <Platform Condition=\"'$(Platform)'==''\">Linux64</Platform>\n        <TargetedPlatforms>131</TargetedPlatforms>\n        <AppType>Library</AppType>\n        <MainSource>gpt_function_owm.dpr</MainSource>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''\">\n        <Base_Android>true</Base_Android>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''\">\n        <Base_Android64>true</Base_Android64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''\">\n        <Base_iOSDevice64>true</Base_iOSDevice64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='iOSSimARM64' and '$(Base)'=='true') or '$(Base_iOSSimARM64)'!=''\">\n        <Base_iOSSimARM64>true</Base_iOSSimARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Linux64' and '$(Base)'=='true') or '$(Base_Linux64)'!=''\">\n        <Base_Linux64>true</Base_Linux64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSX64' and '$(Base)'=='true') or '$(Base_OSX64)'!=''\">\n        <Base_OSX64>true</Base_OSX64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='OSXARM64' and '$(Base)'=='true') or '$(Base_OSXARM64)'!=''\">\n        <Base_OSXARM64>true</Base_OSXARM64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''\">\n        <Base_Win32>true</Base_Win32>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''\">\n        <Base_Win64>true</Base_Win64>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_1)'!=''\">\n        <Cfg_1>true</Cfg_1>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''\">\n        <Cfg_1_Win32>true</Cfg_1_Win32>\n        <CfgParent>Cfg_1</CfgParent>\n        <Cfg_1>true</Cfg_1>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_2)'!=''\">\n        <Cfg_2>true</Cfg_2>\n        <CfgParent>Base</CfgParent>\n        <Base>true</Base>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base)'!=''\">\n        <DCC_DcuOutput>.\\$(Platform)\\$(Config)</DCC_DcuOutput>\n        <DCC_ExeOutput>.\\$(Platform)\\$(Config)</DCC_ExeOutput>\n        <DCC_E>false</DCC_E>\n        <DCC_N>false</DCC_N>\n        <DCC_S>false</DCC_S>\n        <DCC_F>false</DCC_F>\n        <DCC_K>false</DCC_K>\n        <GenDll>true</GenDll>\n        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>\n        <SanitizedProjectName>gpt_function_owm</SanitizedProjectName>\n        <VerInfo_Locale>1049</VerInfo_Locale>\n        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android)'!=''\">\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <EnabledSysJars>activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Android64)'!=''\">\n        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n        <EnabledSysJars>activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar</EnabledSysJars>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSDevice64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_iOSSimARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>\n        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Linux64)'!=''\">\n        <DCC_UsePackage>DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;Skia.Package.RTL;dbxcds;emsedge;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;dbexpress;FireDACInfxDriver;inet;DataSnapCommon;dbrtl;FireDACOracleDriver;Skia.Package.FMX;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;FireDACMongoDBDriver;IndySystem;RadiantShapesFmx;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;VLCPlayer;IndyCore;RESTBackendComponents;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;dsnapxml;DataSnapClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;xmlrtl;dsnap;CloudService;FireDACDb2Driver;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSX64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_OSXARM64)'!=''\">\n        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>\n        <BT_BuildType>Debug</BT_BuildType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win32)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;RadiantShapesFmx_Design;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;HGMComponents;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;HGMLineStorage;FireDACSqliteDriver;DbxClientDriver;FmxTrayIcon;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FMXfrx28;FireDACInfxDriver;CEF4DelphiVCLRTL;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;TGC_API;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;AbbreviaVCLD;DataSnapIndy10ServerTransport;CEF4DelphiFMXRTL;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;PngComponentsD;RvXmlFMXD11;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;DelphiDiagPlugin;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;VLCPlayer;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;RvHtmlFMXD11;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ChatGptWizard;FMXfrxDB28;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;VKComponents;RVPkgFMXD11;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;mbColorLibDXTokyo;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <Manifest_File>(None)</Manifest_File>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n        <DCC_ExeOutput>D:\\Projects\\ChatGPT\\Win32\\Debug\\funcs\\</DCC_ExeOutput>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Base_Win64)'!=''\">\n        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;RadiantShapesFmx_Design;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;CEF4DelphiVCLRTL;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;DzHTMLText_FMX;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;AbbreviaVCLD;DataSnapIndy10ServerTransport;CEF4DelphiFMXRTL;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FMXPAN100;IndySystem;PngComponentsD;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;VLCPlayer;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>\n        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>\n        <BT_BuildType>Debug</BT_BuildType>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n        <DCC_DebugDCUs>true</DCC_DebugDCUs>\n        <DCC_Optimize>false</DCC_Optimize>\n        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>\n        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>\n        <DCC_RemoteDebug>true</DCC_RemoteDebug>\n        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>\n        <DCC_RangeChecking>true</DCC_RangeChecking>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_1_Win32)'!=''\">\n        <DCC_RemoteDebug>false</DCC_RemoteDebug>\n        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>\n        <VerInfo_Locale>1033</VerInfo_Locale>\n        <Manifest_File>(None)</Manifest_File>\n        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n        <DCC_DebugInformation>0</DCC_DebugInformation>\n    </PropertyGroup>\n    <ItemGroup>\n        <DelphiCompile Include=\"$(MainSource)\">\n            <MainSource>MainSource</MainSource>\n        </DelphiCompile>\n        <DCCReference Include=\"..\\ChatGPT.Functions.External.Intf.pas\"/>\n        <DCCReference Include=\"..\\OWM_API\\OWM.API.pas\"/>\n        <DCCReference Include=\"..\\OWM_API\\OWM.Classes.pas\"/>\n        <DCCReference Include=\"func_weather.pas\"/>\n        <BuildConfiguration Include=\"Base\">\n            <Key>Base</Key>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Debug\">\n            <Key>Cfg_1</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n        <BuildConfiguration Include=\"Release\">\n            <Key>Cfg_2</Key>\n            <CfgParent>Base</CfgParent>\n        </BuildConfiguration>\n    </ItemGroup>\n    <ProjectExtensions>\n        <Borland.Personality>Delphi.Personality.12</Borland.Personality>\n        <Borland.ProjectType>Application</Borland.ProjectType>\n        <BorlandProject>\n            <Delphi.Personality>\n                <Source>\n                    <Source Name=\"MainSource\">gpt_function_owm.dpr</Source>\n                </Source>\n                <Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dcloffice2k280.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n                    <Excluded_Packages Name=\"$(BDSBIN)\\dclofficexp280.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n                </Excluded_Packages>\n            </Delphi.Personality>\n            <Deployment Version=\"5\">\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\iossimulator\\libpcre.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"$(BDS)\\Redist\\osx32\\libcgunwind.1.0.dylib\" Class=\"DependencyModule\">\n                    <Platform Name=\"OSX32\">\n                        <Overwrite>true</Overwrite>\n                    </Platform>\n                </DeployFile>\n                <DeployFile LocalName=\"Win32\\Debug\\gpt_function_owm.dll\" Configuration=\"Debug\" Class=\"ProjectOutput\"/>\n                <DeployClass Name=\"AdditionalDebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidFileProvider\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\xml</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeArmeabiv7aFile\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidLibnativeMipsFile\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\mips</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidServiceOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDef\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashImageDefV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStyles\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV21\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"AndroidSplashStylesV35\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-v35</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v26</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconBackground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconForeground\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconMonochrome\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_AdaptiveIconV33\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v33</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Colors\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_ColorsDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values-night-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_DefaultAppIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon144\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon192\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-ldpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_LauncherIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon24\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-mdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon36\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-hdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon48\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon72\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_NotificationIcon96\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xxxhdpi</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage426\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-small</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage470\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-normal</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage640\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-large</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_SplashImage960\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-xlarge</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_Strings\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\values</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedNotificationIcon\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v24</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplash\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashDark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v21</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"Android_VectorizedSplashV31Dark\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>res\\drawable-night-anydpi-v31</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DebugSymbols\">\n                    <Platform Name=\"iOSSimulator\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyFramework\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.framework</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"DependencyModule\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.dll;.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"DependencyPackage\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                        <Extensions>.dylib</Extensions>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                        <Extensions>.bpl</Extensions>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"File\">\n                    <Platform Name=\"Android\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources\\StartUp\\</RemoteDir>\n                        <Operation>0</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectAndroidManifest\">\n                    <Platform Name=\"Android\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXDebug\">\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXEntitlements\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXInfoPList\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOSXResource\">\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\Resources</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Required=\"true\" Name=\"ProjectOutput\">\n                    <Platform Name=\"Android\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\arm64-v8a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Linux64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX32\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSX64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"OSXARM64\">\n                        <RemoteDir>Contents\\MacOS</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win32\">\n                        <Operation>0</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectOutput_Android32\">\n                    <Platform Name=\"Android64\">\n                        <RemoteDir>library\\lib\\armeabi-v7a</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectUWPManifest\">\n                    <Platform Name=\"Win32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64x\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSDeviceDebug\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).app.dSYM\\Contents\\Resources\\DWARF</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSEntitlements\">\n                    <Platform Name=\"iOSDevice32\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSInfoPList\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSLaunchScreen\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen</RemoteDir>\n                        <Operation>64</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"ProjectiOSResource\">\n                    <Platform Name=\"iOSDevice32\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSDevice64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo150\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"UWP_DelphiLogo44\">\n                    <Platform Name=\"Win32\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"Win64\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"WinARM64EC\">\n                        <RemoteDir>Assets</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iOS_AppStore1024\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon152\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_AppIcon167\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPad_SpotLight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_AppIcon180\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Launch3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark2x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_LaunchDark3x\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\LaunchScreenImage.imageset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification40\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Notification60\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting58\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Setting87\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight120\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <DeployClass Name=\"iPhone_Spotlight80\">\n                    <Platform Name=\"iOSDevice64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                    <Platform Name=\"iOSSimARM64\">\n                        <RemoteDir>..\\$(PROJECTNAME).launchscreen\\Assets\\AppIcon.appiconset</RemoteDir>\n                        <Operation>1</Operation>\n                    </Platform>\n                </DeployClass>\n                <ProjectRoot Platform=\"Android\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Android64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"iOSDevice32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSDevice64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"iOSSimARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Linux64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"OSX32\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSX64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"OSXARM64\" Name=\"$(PROJECTNAME).app\"/>\n                <ProjectRoot Platform=\"Win32\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"Win64x\" Name=\"$(PROJECTNAME)\"/>\n                <ProjectRoot Platform=\"WinARM64EC\" Name=\"$(PROJECTNAME)\"/>\n            </Deployment>\n            <Platforms>\n                <Platform value=\"Android\">False</Platform>\n                <Platform value=\"Android64\">False</Platform>\n                <Platform value=\"iOSDevice64\">False</Platform>\n                <Platform value=\"iOSSimARM64\">False</Platform>\n                <Platform value=\"Linux64\">True</Platform>\n                <Platform value=\"OSX64\">False</Platform>\n                <Platform value=\"OSXARM64\">False</Platform>\n                <Platform value=\"Win32\">True</Platform>\n                <Platform value=\"Win64\">True</Platform>\n            </Platforms>\n        </BorlandProject>\n        <ProjectFileVersion>12</ProjectFileVersion>\n    </ProjectExtensions>\n    <Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n    <Import Project=\"$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj\" Condition=\"Exists('$(APPDATA)\\Embarcadero\\$(BDSAPPDATABASEDIR)\\$(PRODUCTVERSION)\\UserTools.proj')\"/>\n    <Import Project=\"$(MSBuildProjectName).deployproj\" Condition=\"Exists('$(MSBuildProjectName).deployproj')\"/>\n</Project>\n"
  },
  {
    "path": "HGM.FMX.Ani.pas",
    "content": "﻿unit HGM.FMX.Ani;\n\ninterface\n\nuses\n  FMX.Ani, FMX.Types, System.Classes, System.SysUtils, System.Types;\n\ntype\n  TAniFreeNotification = class(TInterfacedObject, IFreeNotification)\n  private\n    FProc: TProc;\n  public\n    procedure FreeNotification(AObject: TObject);\n    constructor Create(Proc: TProc);\n  end;\n\n  TRectAnimation = class(FMX.Ani.TRectAnimation)\n  protected\n    procedure FirstFrame; override;\n  end;\n\n  { TPositionAnimation }\n\n  TPositionAnimation = class(TCustomPropertyAnimation)\n  private\n    FStartRect: TPosition;\n    FCurrent: TPosition;\n    FStopRect: TPosition;\n    FStartFromCurrent: Boolean;\n    procedure SetStartRect(const Value: TPosition);\n    procedure SetStopRect(const Value: TPosition);\n  protected\n    procedure ProcessAnimation; override;\n    procedure FirstFrame; override;\n    procedure AssignTo(Dest: TPersistent); override;\n  public\n    constructor Create(AOwner: TComponent); override;\n    destructor Destroy; override;\n  published\n    property AnimationType default TAnimationType.in;\n    property AutoReverse default False;\n    property Enabled default False;\n    property Delay;\n    property Duration nodefault;\n    property Interpolation default TInterpolationType.Linear;\n    property Inverse default False;\n    property Loop default False;\n    property OnProcess;\n    property OnFinish;\n    property PropertyName;\n    property StartValue: TPosition read FStartRect write SetStartRect;\n    property StartFromCurrent: Boolean read FStartFromCurrent write FStartFromCurrent default False;\n    property StopValue: TPosition read FStopRect write SetStopRect;\n    property Trigger;\n    property TriggerInverse;\n  end;\n\n  TAnimatorHelper = class helper for TAnimator\n    class procedure DetachPropertyAnimation(const Target: TFmxObject; const APropertyName: string);\n    class procedure AnimateFloat(const Target: TFmxObject; const APropertyName: string; const NewValue: Single; Update: TNotifyEvent; Duration: Single = 0.2; AType: TAnimationType = TAnimationType.in; AInterpolation: TInterpolationType = TInterpolationType.Linear); overload;\n    class procedure AnimateRect(const Target: TFmxObject; const APropertyName: string; const NewValue: TRectF; Update: TNotifyEvent; Duration: Single = 0.2; AType: TAnimationType = TAnimationType.in; AInterpolation: TInterpolationType = TInterpolationType.Linear); overload;\n    class procedure AnimatePosition(const Target: TFmxObject; const APropertyName: string; const NewValue: TPointF; Update: TNotifyEvent; Duration: Single = 0.2; AType: TAnimationType = TAnimationType.in; AInterpolation: TInterpolationType = TInterpolationType.Linear); overload;\n    class procedure AnimateFloatWithFinish(const Target: TFmxObject; const APropertyName: string; const NewValue: Single; Finish: TProc; Duration: Single = 0.2; AType: TAnimationType = TAnimationType.in; AInterpolation: TInterpolationType = TInterpolationType.Linear); overload;\n  end;\n\nimplementation\n\nuses\n  System.Rtti, FMX.Utils, System.TypInfo;\n\n{ TAnimatorHelper }\n\nclass procedure TAnimatorHelper.AnimateFloat(const Target: TFmxObject; const APropertyName: string; const NewValue: Single; Update: TNotifyEvent; Duration: Single = 0.2; AType: TAnimationType = TAnimationType.in; AInterpolation: TInterpolationType = TInterpolationType.Linear);\nvar\n  Animation: TFloatAnimation;\nbegin\n  StopPropertyAnimation(Target, APropertyName);\n\n  with Self do\n    CreateDestroyer;\n\n  Animation := TFloatAnimation.Create(nil);\n  Animation.Parent := Target;\n  Animation.AnimationType := AType;\n  Animation.Interpolation := AInterpolation;\n  Animation.Duration := Duration;\n  Animation.PropertyName := APropertyName;\n  Animation.StartFromCurrent := True;\n  Animation.StopValue := NewValue;\n  Animation.OnProcess := Update;\n  with Self do\n    FDestroyer.RegisterAnimation(Animation);\n  Animation.Start;\nend;\n\nclass procedure TAnimatorHelper.AnimateFloatWithFinish(const Target: TFmxObject; const APropertyName: string; const NewValue: Single; Finish: TProc; Duration: Single = 0.2; AType: TAnimationType = TAnimationType.in; AInterpolation: TInterpolationType = TInterpolationType.Linear);\nvar\n  Animation: TFloatAnimation;\nbegin\n  StopPropertyAnimation(Target, APropertyName);\n\n  with Self do\n    CreateDestroyer;\n\n  Animation := TFloatAnimation.Create(nil);\n  Animation.Parent := Target;\n  Animation.AnimationType := AType;\n  Animation.Interpolation := AInterpolation;\n  Animation.Duration := Duration;\n  Animation.PropertyName := APropertyName;\n  Animation.StartFromCurrent := True;\n  Animation.StopValue := NewValue;\n  Animation.AddFreeNotify(TAniFreeNotification.Create(Finish));\n  with Self do\n    FDestroyer.RegisterAnimation(Animation);\n  Animation.Start;\nend;\n\nclass procedure TAnimatorHelper.AnimatePosition(const Target: TFmxObject; const APropertyName: string; const NewValue: TPointF; Update: TNotifyEvent; Duration: Single; AType: TAnimationType; AInterpolation: TInterpolationType);\nvar\n  Animation: TPositionAnimation;\nbegin\n  StopPropertyAnimation(Target, APropertyName);\n\n  with Self do\n    CreateDestroyer;\n\n  Animation := TPositionAnimation.Create(nil);\n  Animation.Parent := Target;\n  Animation.AnimationType := AType;\n  Animation.Interpolation := AInterpolation;\n  Animation.Duration := Duration;\n  Animation.PropertyName := APropertyName;\n  Animation.StartFromCurrent := True;\n  Animation.StopValue.Point := NewValue;\n  Animation.OnProcess := Update;\n  with Self do\n    FDestroyer.RegisterAnimation(Animation);\n  Animation.Start;\nend;\n\nclass procedure TAnimatorHelper.AnimateRect(const Target: TFmxObject; const APropertyName: string; const NewValue: TRectF; Update: TNotifyEvent; Duration: Single; AType: TAnimationType; AInterpolation: TInterpolationType);\nvar\n  Animation: TRectAnimation;\nbegin\n  StopPropertyAnimation(Target, APropertyName);\n\n  with Self do\n    CreateDestroyer;\n\n  Animation := TRectAnimation.Create(nil);\n  Animation.Parent := Target;\n  Animation.AnimationType := AType;\n  Animation.Interpolation := AInterpolation;\n  Animation.Duration := Duration;\n  Animation.PropertyName := APropertyName;\n  Animation.StartFromCurrent := True;\n  Animation.StopValue.Rect := NewValue;\n  Animation.OnProcess := Update;\n  with Self do\n    FDestroyer.RegisterAnimation(Animation);\n  Animation.Start;\nend;\n\nclass procedure TAnimatorHelper.DetachPropertyAnimation(const Target: TFmxObject; const APropertyName: string);\nvar\n  I: Integer;\nbegin\n  I := Target.ChildrenCount - 1;\n  while I >= 0 do\n  begin\n    if (Target.Children[I] is TCustomPropertyAnimation) and\n       (CompareText(TCustomPropertyAnimation(Target.Children[I]).PropertyName, APropertyName) = 0) then\n      TFloatAnimation(Target.Children[I]).StopAtCurrent;\n    if I > Target.ChildrenCount then\n      I := Target.ChildrenCount;\n    Dec(I);\n  end;\nend;\n\n{ TAniFreeNotification }\n\nconstructor TAniFreeNotification.Create(Proc: TProc);\nbegin\n  inherited Create;\n  FProc := Proc;\nend;\n\nprocedure TAniFreeNotification.FreeNotification(AObject: TObject);\nbegin\n  if Assigned(FProc) then\n    FProc;\n  Free;\nend;\n\n{ TRectAnimation }\n\nprocedure TRectAnimation.FirstFrame;\nvar\n  T: TRttiType;\n  P: TRttiProperty;\nbegin\n  if StartFromCurrent then\n  begin\n    T := SharedContext.GetType(FInstance.ClassInfo);\n    if T <> nil then\n    begin\n      P := T.GetProperty(FPath);\n      if (P <> nil) and (P.PropertyType.TypeKind = tkClass) then\n        StartValue.Rect := TBounds(P.GetValue(FInstance).AsObject).Rect;\n    end;\n  end;\nend;\n\n{ TPositionAnimation }\n\nprocedure TPositionAnimation.AssignTo(Dest: TPersistent);\nvar\n  DestAnimation: TPositionAnimation;\nbegin\n  if Dest is TPositionAnimation then\n  begin\n    DestAnimation := TPositionAnimation(Dest);\n    DestAnimation.StartValue := StartValue;\n    DestAnimation.StopValue := StopValue;\n    DestAnimation.StartFromCurrent := StartFromCurrent;\n  end;\n  inherited;\nend;\n\nconstructor TPositionAnimation.Create(AOwner: TComponent);\nbegin\n  inherited;\n  Duration := 0.2;\n  FStartRect := TPosition.Create(TPointF.Zero);\n  FStopRect := TPosition.Create(TPointF.Zero);\n  FCurrent := TPosition.Create(TPointF.Zero);\nend;\n\ndestructor TPositionAnimation.Destroy;\nbegin\n  FreeAndNil(FCurrent);\n  FreeAndNil(FStartRect);\n  FreeAndNil(FStopRect);\n  inherited;\nend;\n\nprocedure TPositionAnimation.FirstFrame;\nvar\n  T: TRttiType;\n  P: TRttiProperty;\nbegin\n  if StartFromCurrent then\n  begin\n    T := SharedContext.GetType(FInstance.ClassInfo);\n    if T <> nil then\n    begin\n      P := T.GetProperty(FPath);\n      if (P <> nil) and (P.PropertyType.TypeKind = tkClass) then\n        StartValue.Point := TPosition(P.GetValue(FInstance).AsObject).Point;\n    end;\n  end;\nend;\n\nprocedure TPositionAnimation.ProcessAnimation;\nbegin\n  if FInstance <> nil then\n  begin\n    { calc value }\n    FCurrent.X := InterpolateSingle(FStartRect.X, FStopRect.X,\n      NormalizedTime);\n    FCurrent.Y := InterpolateSingle(FStartRect.Y, FStopRect.Y,\n      NormalizedTime);\n\n    if (FRttiProperty <> nil) and FRttiProperty.PropertyType.IsInstance then\n      TBounds(FRttiProperty.GetValue(FInstance).AsObject).Assign(FCurrent);\n  end;\nend;\n\nprocedure TPositionAnimation.SetStartRect(const Value: TPosition);\nbegin\n  FStartRect.Assign(Value);\nend;\n\nprocedure TPositionAnimation.SetStopRect(const Value: TPosition);\nbegin\n  FStopRect.Assign(Value);\nend;\n\nend.\n\n"
  },
  {
    "path": "HGM.FMX.Image.pas",
    "content": "﻿unit HGM.FMX.Image;\n\ninterface\n\nuses\n  System.Classes, System.Types, System.SysUtils, FMX.Forms, FMX.Graphics,\n  FMX.Objects, System.Threading, System.Generics.Collections,\n  System.Net.HttpClient;\n\ntype\n  TCallbackObject = record\n    Owner: TComponent;\n    Bitmap: TBitmap;\n    Url: string;\n    Task: ITask;\n    OnDone: TProc<Boolean>;\n    procedure Done(const Success: Boolean);\n  end;\n\n  TObjectOwner = class(TComponent)\n    procedure Notification(AComponent: TComponent; Operation: TOperation); override;\n  end;\n\n  TBitmapHelper = class helper for TBitmap\n  private\n    class var\n      Pool: TThreadPool;\n      FCallbackList: TThreadList<TCallbackObject>;\n      FObjectOwner: TComponent;\n      FClient: THTTPClient;\n      FCachePath: string;\n    class procedure AddCallback(Callback: TCallbackObject);\n    class procedure Ready(const Url: string; Stream: TStream);\n    class function Get(const URL: string): TMemoryStream; static;\n    class function GetClient: THTTPClient; static;\n    class procedure SetCachePath(const Value: string); static;\n  public\n    class procedure RemoveCallback(const AOwner: TComponent);\n    procedure LoadFromUrl(const Url: string; UseCache: Boolean = True);\n    procedure LoadFromUrlAsync(AOwner: TComponent; const Url: string; Cache: Boolean = True; OnDone: TProc<Boolean> = nil; SyncAssign: Boolean = True); overload;\n    procedure LoadFromResource(ResName: string); overload;\n    class function UrlToCacheName(const Url: string): string;\n    procedure LoadFromResource(Instanse: NativeUInt; ResName: string); overload;\n    procedure SaveToStream(Stream: TStream; const Ext: string); overload;\n    procedure SaveToFile(const AFileName: string; const Ext: string); overload;\n    class procedure AddCache(const Url: string; Stream: TMemoryStream);\n    class function FindCached(const Url: string; out Stream: TMemoryStream): Boolean;\n    class function CreateFromUrl(const Url: string; UseCache: Boolean = True): TBitmap;\n    class function CreateFromResource(ResName: string; Url: string = ''): TBitmap;\n    class property Client: THTTPClient read GetClient;\n    class property CachePath: string read FCachePath write SetCachePath;\n  end;\n\nimplementation\n\nuses\n  FMX.Surfaces, FMX.Types, FMX.Consts, System.Hash, System.IOUtils;\n\n{ TBitmapHelper }\n\nclass procedure TBitmapHelper.AddCallback(Callback: TCallbackObject);\nbegin\n  Callback.Owner.FreeNotification(FObjectOwner);\n  FCallbackList.Add(Callback);\nend;\n\nclass function TBitmapHelper.CreateFromResource(ResName, Url: string): TBitmap;\nbegin\n  Result := TBitmap.Create;\n  Result.LoadFromResource(ResName);\nend;\n\nclass function TBitmapHelper.CreateFromUrl(const Url: string; UseCache: Boolean): TBitmap;\nbegin\n  Result := TBitmap.Create;\n  Result.LoadFromUrl(Url, False);\nend;\n\nprocedure TBitmapHelper.LoadFromResource(ResName: string);\nbegin\n  LoadFromResource(HInstance, ResName);\nend;\n\nprocedure TBitmapHelper.LoadFromResource(Instanse: NativeUInt; ResName: string);\nvar\n  Mem: TResourceStream;\nbegin\n  Mem := TResourceStream.Create(Instanse, ResName, RT_RCDATA);\n  try\n    Self.LoadFromStream(Mem);\n  finally\n    Mem.Free;\n  end;\nend;\n\nprocedure TBitmapHelper.LoadFromUrl(const Url: string; UseCache: Boolean);\nvar\n  Mem: TMemoryStream;\nbegin\n  Mem := Get(Url);\n  try\n    Self.LoadFromStream(Mem);\n  finally\n    Mem.Free;\n  end;\nend;\n\nclass function TBitmapHelper.Get(const URL: string): TMemoryStream;\nbegin\n  if URL.IsEmpty then\n    raise Exception.Create('Empty URL');\n  Result := TMemoryStream.Create;\n  try\n    if (GetClient.Get(URL, Result).StatusCode = 200) and (Result.Size > 0) then\n      Result.Position := 0\n    else\n    begin\n      Result.Free;\n      Result := nil;\n    end;\n  except\n    Result.Free;\n    Result := nil;\n  end;\nend;\n\nclass function TBitmapHelper.GetClient: THTTPClient;\nbegin\n  if not Assigned(FClient) then\n  begin\n    FClient := THTTPClient.Create;\n    FClient.HandleRedirects := True;\n  end;\n  Result := FClient;\nend;\n\nclass function TBitmapHelper.FindCached(const Url: string; out Stream: TMemoryStream): Boolean;\nbegin\n  Result := False;\n  Stream := nil;\n  var FileName := TPath.Combine(FCachePath, UrlToCacheName(Url));\n  if TFile.Exists(FileName) then\n  try\n    Stream := TMemoryStream.Create;\n    Stream.LoadFromFile(FileName);\n    Result := True;\n  except\n    Stream.Free;\n    Stream := nil;\n  end;\nend;\n\nclass procedure TBitmapHelper.AddCache(const Url: string; Stream: TMemoryStream);\nbegin\n  var FileName := TPath.Combine(FCachePath, UrlToCacheName(Url));\n  try\n    if TFile.Exists(FileName) then\n      TFile.Delete(FileName);\n  except\n    Exit;\n  end;\n  try\n    Stream.SaveToFile(FileName);\n  except\n    //\n  end;\nend;\n\nprocedure TBitmapHelper.LoadFromUrlAsync(AOwner: TComponent; const Url: string; Cache: Boolean; OnDone: TProc<Boolean>; SyncAssign: Boolean);\nbegin\n  if AOwner = nil then\n    raise Exception.Create('You must specify an owner (responsible) who will ensure that the Bitmap is not destroyed before the owner');\n  var Callback: TCallbackObject;\n  Callback.Owner := AOwner;\n  Callback.Bitmap := Self;\n  Callback.Url := Url;\n  Callback.OnDone := OnDone;\n  Callback.Task := TTask.Run(\n    procedure\n    begin\n      try\n        var Mem: TMemoryStream;\n        if not FindCached(Url, Mem) then\n        begin\n          Mem := Get(Url);\n          if Cache and Assigned(Mem) then\n            AddCache(Url, Mem);\n        end;\n        if SyncAssign then\n          TThread.ForceQueue(nil,\n            procedure\n            begin\n              Ready(Url, Mem);\n            end)\n        else\n          Ready(Url, Mem);\n      except\n        if SyncAssign then\n          TThread.ForceQueue(nil,\n            procedure\n            begin\n              Ready(Url, nil);\n            end)\n        else\n          Ready(Url, nil);\n      end;\n    end, Pool);\n  AddCallback(Callback);\nend;\n\nclass procedure TBitmapHelper.Ready(const Url: string; Stream: TStream);\nbegin\n  try\n    var List := FCallbackList.LockList;\n    try\n      for var i := List.Count - 1 downto 0 do\n      begin\n        var Item := List[i];\n        if Item.Url <> Url then\n          Continue;\n        var Success: Boolean := False;\n        try\n          if Assigned(Stream) then\n          try\n            Stream.Position := 0;\n            Item.Bitmap.LoadFromStream(Stream);\n            Success := True;\n          except\n            //\n          end\n          else\n            Item.Bitmap.Assign(nil);\n        finally\n          Item.Done(Success);\n        end;\n        List.Delete(i);\n      end;\n    finally\n      FCallbackList.UnlockList;\n    end;\n  finally\n    Stream.Free;\n  end;\nend;\n\nclass procedure TBitmapHelper.RemoveCallback(const AOwner: TComponent);\nbegin\n  var List := FCallbackList.LockList;\n  try\n    for var i := List.Count - 1 downto 0 do\n      if List[i].Owner = AOwner then\n      begin\n        List[i].Task.Cancel;\n        List.Delete(i);\n      end;\n  finally\n    FCallbackList.UnlockList;\n  end;\nend;\n\nprocedure TBitmapHelper.SaveToFile(const AFileName, Ext: string);\nvar\n  Stream: TFileStream;\nbegin\n  Stream := TFileStream.Create(AFileName, fmCreate);\n  try\n    SaveToStream(Stream, Ext);\n  finally\n    Stream.Free;\n  end;\nend;\n\nprocedure TBitmapHelper.SaveToStream(Stream: TStream; const Ext: string);\nvar\n  Surf: TBitmapSurface;\nbegin\n  TMonitor.Enter(Self);\n  try\n    Surf := TBitmapSurface.Create;\n    try\n      Surf.Assign(Self);\n      if not TBitmapCodecManager.SaveToStream(Stream, Surf, Ext) then\n        raise EBitmapSavingFailed.Create(SBitmapSavingFailed);\n    finally\n      Surf.Free;\n    end;\n  finally\n    TMonitor.Exit(Self);\n  end;\nend;\n\nclass procedure TBitmapHelper.SetCachePath(const Value: string);\nbegin\n  FCachePath := Value;\nend;\n\nclass function TBitmapHelper.UrlToCacheName(const Url: string): string;\nbegin\n  Result := THashMD5.GetHashString(Url);\nend;\n\n{ TObjectOwner }\n\nprocedure TObjectOwner.Notification(AComponent: TComponent; Operation: TOperation);\nbegin\n  inherited;\n  if Operation <> TOperation.opRemove then\n    Exit;\n  var List := TBitmap.FCallbackList.LockList;\n  try\n    for var i := List.Count - 1 downto 0 do\n      if List[i].Owner = AComponent then\n      begin\n        List[i].Task.Cancel;\n        List.Delete(i);\n      end;\n  finally\n    TBitmap.FCallbackList.UnlockList;\n  end;\nend;\n\n{ TCallbackObject }\n\nprocedure TCallbackObject.Done(const Success: Boolean);\nbegin\n  if Assigned(OnDone) then\n  try\n    OnDone(Success);\n  except\n    //\n  end;\nend;\n\ninitialization\n  TBitmap.Pool := TThreadPool.Create;\n  TBitmap.FCallbackList := TThreadList<TCallbackObject>.Create;\n  TBitmap.FObjectOwner := TObjectOwner.Create(nil);\n  TBitmap.FClient := nil;\n\nfinalization\n  TBitmap.Pool.Free;\n  TBitmap.FCallbackList.Free;\n  TBitmap.FObjectOwner.Free;\n  TBitmap.FClient.Free;\n\nend.\n\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 HemulGM\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "LaunchScreen.TemplateiOS/Assets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    <%AppIconImages%>\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"RAD Studio\"\n  }\n}\n"
  },
  {
    "path": "LaunchScreen.TemplateiOS/Assets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"RAD Studio\"\n  }\n}\n"
  },
  {
    "path": "LaunchScreen.TemplateiOS/Assets/LaunchScreenBackgroundColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    <%LaunchScreenBackgroundColors%>\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"RAD Studio\"\n  }\n}\n"
  },
  {
    "path": "LaunchScreen.TemplateiOS/Assets/LaunchScreenImage.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    <%LaunchScreenImages%>\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"RAD Studio\"\n  }\n}\n"
  },
  {
    "path": "LaunchScreen.TemplateiOS/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"16096\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"16086\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" image=\"LaunchScreenImage\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uEM-Cj-0ws\">\n                                <rect key=\"frame\" x=\"159\" y=\"405\" width=\"96\" height=\"96\"/>\n                            </imageView>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"LaunchScreenBackgroundColor\"/>\n                        <constraints>\n                            <constraint firstItem=\"uEM-Cj-0ws\" firstAttribute=\"centerX\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"centerX\" id=\"Vvi-3g-k9H\"/>\n                            <constraint firstItem=\"uEM-Cj-0ws\" firstAttribute=\"centerY\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"centerY\" id=\"eIE-8s-oLP\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"LaunchScreenImage\" width=\"96\" height=\"96\"/>\n        <namedColor name=\"LaunchScreenBackgroundColor\">\n            <color red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <img width=\"180\" src=\"Res/chatgptfmx/154.png\" alt=\"ChatGPT\">\n  <h1 align=\"center\">ChatGPT</h1>\n  <p align=\"center\">ChatGPT Desktop Application (Windows, Mac, iOS, Android and Linux)</p>\n</p>\n\n![Preview](https://github.com/HemulGM/ChatGPT/blob/main/preview.png?raw=true)\n\n### This is NOT a web page, this is a native application with its own interface!\n\n## ⚒️ Builds\n\n|Platform|Available||\n|--------|---------|--|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/windows-10.png\" alt=\"windows\"> Windows 32 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/windows-10.png\" alt=\"windows\"> Windows 64 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/android-os.png\" alt=\"android\"> Android 32 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/android-os.png\" alt=\"android\"> Android 64 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/1A6DFF/C822FF/linux--v2.png\" alt=\"linux\"> Linux 64 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/mac-logo.png\" alt=\"mac\"> MacOS arm64 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/mac-logo.png\" alt=\"mac\"> MacOS Intel64 </p>|✔|[Download](https://github.com/HemulGM/ChatGPT/releases/latest)|\n|<p><img width=\"24\" height=\"24\" align=\"left\" src=\"https://img.icons8.com/nolan/64/ios-logo.png\" alt=\"ios\"> iOS </p>|❌| |\n\n## ⚡ Features\n- Access to gpt-3 and gpt-4\n- Image generation with DALL-E\n- Sound recognition and use of this context with GPT\n- Separate settings for each chat\n- SVG display\n- Ability to edit chat\n- All model settings\n- Custom headers for third party APIs\n- Send message as assistant, user or system\n- Doesn't require a VPN (*Now required!*)\n- GPT functions (external load from \"funcs\" folder)\n- Syntax highlighting (pascal, python, json, sql, markdown)\n\n## 🙌 List of planned features\n- Display of mathematical formulas\n- Support MarkDown\n- Syntax highlighting for Linux\n- Additional functions OpenAI (such as: text correction, customizing your model via Fine-tunes, quick commands)\n\n## Dependencies\n\n❗ Build requires Delphi 11.3+\n\nSkia - https://github.com/skia4delphi/skia4delphi\n\nSVGImageList - https://github.com/EtheaDev/SVGIconImageList\n\nAnd some submodules\n\n<hr>\n<p align=\"center\">\n<img src=\"https://dtffvb2501i0o.cloudfront.net/images/logos/delphi-logo-128.webp\" alt=\"Delphi\">\n</p>\n<h5 align=\"center\">\nMade with :heart: on Delphi\n</h5>\n"
  },
  {
    "path": "Res/chatgptfmx/res/mipmap-anydpi-v26/chatgptfmx.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n  <background android:drawable=\"@mipmap/chatgptfmx_adaptive_back\"/>\n  <foreground android:drawable=\"@mipmap/chatgptfmx_adaptive_fore\"/>\n</adaptive-icon>"
  }
]