浏览代码

fixed bugs

Simon Grossenbacher 9 年之前
父节点
当前提交
0987d959ec
共有 11 个文件被更改,包括 1012 次插入244 次删除
  1. 5 5
      AppConfig.json
  2. 2 2
      Colors/Blue.json
  3. 2 2
      Highlighters/Headers.json
  4. 2 2
      Highlighters/JSON.json
  5. 2 2
      Highlighters/Params.json
  6. 二进制
      RESTDebugger.exe
  7. 2 2
      prj/RESTDebugger.dproj
  8. 二进制
      prj/RESTDebugger.res
  9. 6 6
      prj/RESTDebugger.stat
  10. 775 180
      src/_frmMain.dfm
  11. 216 43
      src/_frmMain.pas

+ 5 - 5
AppConfig.json

@@ -1,17 +1,17 @@
 {
 	"Dialogs": {
 		"LastOpenDir": "C:\\dev\\RESTDebugger\\",
-		"LastSaveDir": "C:\\dev\\Simnet\\SmartHome\\"
+		"LastSaveDir": "C:\\dev\\ERPData\\"
 	},
 	"Project": {
 		"AutoOpenLastUsed": true,
-		"LastUsed": "C:\\dev\\MobileERP\\MobileERPService\\MobileERP-Webservices.rdproj",
+		"LastUsed": "C:\\dev\\_components\\IBL\\DBRestServerDemo\\DBRestServerDemo.rdproj",
 		"AutoSaveProject": true
 	},
 	"MainWindowPos": {
-		"Left": 839,
-		"Top": 252,
-		"Width": 720,
+		"Left": 1494,
+		"Top": 321,
+		"Width": 754,
 		"Height": 930,
 		"StayOnTop": false
 	}

+ 2 - 2
Colors/Blue.json

@@ -2,8 +2,8 @@
    "Colors": {
       "Info": {
          "General": {
-            "Version": "1.8.1",
-            "Date": "30.10.2016"
+            "Version": "1.8.3",
+            "Date": "10.11.2016"
          },
          "Author": {
             "Name": "Lasse Rautiainen",

+ 2 - 2
Highlighters/Headers.json

@@ -2,8 +2,8 @@
    "Highlighter": {
       "Info": {
          "General": {
-            "Version": "1.8.1",
-            "Date": "30.10.2016",
+            "Version": "1.8.3",
+            "Date": "10.11.2016",
             "Sample": [
                "; Comment\r\n",
                "[Section]\r\n",

+ 2 - 2
Highlighters/JSON.json

@@ -2,8 +2,8 @@
    "Highlighter": {
       "Info": {
          "General": {
-            "Version": "1.8.1",
-            "Date": "30.10.2016",
+            "Version": "1.8.3",
+            "Date": "10.11.2016",
             "Sample": [
                "{\r\n",
                "  \"firstName\": \"John\",\r\n",

+ 2 - 2
Highlighters/Params.json

@@ -2,8 +2,8 @@
    "Highlighter": {
       "Info": {
          "General": {
-            "Version": "1.8.1",
-            "Date": "30.10.2016",
+            "Version": "1.8.3",
+            "Date": "10.11.2016",
             "Sample": [
                "; Comment\r\n",
                "[Section]\r\n",

二进制
RESTDebugger.exe


文件差异内容过多而无法显示
+ 2 - 2
prj/RESTDebugger.dproj


二进制
prj/RESTDebugger.res


+ 6 - 6
prj/RESTDebugger.stat

@@ -1,10 +1,10 @@
 [Stats]
-EditorSecs=5351
-DesignerSecs=2365
-InspectorSecs=1138
-CompileSecs=155728
-OtherSecs=1388
+EditorSecs=8379
+DesignerSecs=2598
+InspectorSecs=1633
+CompileSecs=245056
+OtherSecs=2827
 StartTime=27.10.2016 18:27:37
 RealKeys=0
 EffectiveKeys=0
-DebugSecs=4446
+DebugSecs=5901

+ 775 - 180
src/_frmMain.dfm

@@ -129,8 +129,6 @@ object frmMain: TfrmMain
         Cursor = crIBeam
         ActiveLine.Indicator.Visible = False
         Align = alClient
-        Caret.MultiEdit.Enabled = True
-        Caret.NonBlinking.Enabled = False
         Caret.Options = []
         CodeFolding.Colors.Indent = clBlack
         CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
@@ -177,15 +175,13 @@ object frmMain: TfrmMain
         Minimap.Font.Height = -1
         Minimap.Font.Name = 'Courier New'
         Minimap.Font.Style = []
-        Minimap.Width = 140
-        PopupMenu = PopupMenuEditorContent
-        RightMargin.Position = 80
+        OnMouseUp = EditorContentMouseUp
         RightMargin.Visible = False
         Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
+        Search.Enabled = False
         SpecialChars.Style = scsDot
         SyncEdit.ShortCut = 24650
         TabOrder = 0
-        WordWrap.Enabled = False
         WordWrap.Indicator.Glyph.Data = {
           7E030000424D7E0300000000000036000000280000000F0000000E0000000100
           2000000000004803000000000000000000000000000000000000FF00FF00FF00
@@ -217,13 +213,12 @@ object frmMain: TfrmMain
           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
           FF00}
         WordWrap.Indicator.MaskColor = clFuchsia
-        WordWrap.Width = wwwPage
       end
     end
     object tabHeaders: TcxTabSheet
       Caption = 'Response Headers'
       ImageIndex = 1
-      object EditorHeaders: TBCEditor
+      object EditorResponseHeaders: TBCEditor
         Left = 0
         Top = 0
         Width = 722
@@ -231,8 +226,6 @@ object frmMain: TfrmMain
         Cursor = crIBeam
         ActiveLine.Indicator.Visible = False
         Align = alClient
-        Caret.MultiEdit.Enabled = True
-        Caret.NonBlinking.Enabled = False
         Caret.Options = []
         CodeFolding.Colors.Indent = clBlack
         CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
@@ -271,7 +264,7 @@ object frmMain: TfrmMain
         LeftMargin.MarksPanel.Visible = False
         LeftMargin.Width = 35
         Lines.Strings = (
-          'EditorHeaders')
+          'EditorResponseHeaders')
         LineSpacing = 0
         MatchingPair.Enabled = True
         Minimap.Font.Charset = DEFAULT_CHARSET
@@ -279,14 +272,12 @@ object frmMain: TfrmMain
         Minimap.Font.Height = -1
         Minimap.Font.Name = 'Courier New'
         Minimap.Font.Style = []
-        Minimap.Width = 140
-        RightMargin.Position = 80
+        OnMouseUp = EditorResponseHeadersMouseUp
         RightMargin.Visible = False
         Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
         SpecialChars.Style = scsDot
         SyncEdit.ShortCut = 24650
         TabOrder = 0
-        WordWrap.Enabled = False
         WordWrap.Indicator.Glyph.Data = {
           7E030000424D7E0300000000000036000000280000000F0000000E0000000100
           2000000000004803000000000000000000000000000000000000FF00FF00FF00
@@ -318,7 +309,6 @@ object frmMain: TfrmMain
           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
           FF00}
         WordWrap.Indicator.MaskColor = clFuchsia
-        WordWrap.Width = wwwPage
       end
     end
   end
@@ -363,7 +353,7 @@ object frmMain: TfrmMain
       Top = 345
       Properties.ReadOnly = True
       TabOrder = 8
-      Width = 587
+      Width = 556
     end
     object btnRun: TcxButton
       Left = 619
@@ -371,6 +361,8 @@ object frmMain: TfrmMain
       Width = 75
       Height = 25
       Caption = 'Run'
+      OptionsImage.ImageIndex = 14
+      OptionsImage.Images = cxImageList
       TabOrder = 9
       OnClick = btnRunClick
     end
@@ -400,7 +392,7 @@ object frmMain: TfrmMain
       Width = 25
       Height = 25
       Hint = 'Delete Preset'
-      OptionsImage.ImageIndex = 1
+      OptionsImage.ImageIndex = 3
       OptionsImage.Images = cxImageList
       ParentShowHint = False
       ShowHint = True
@@ -434,7 +426,7 @@ object frmMain: TfrmMain
       Width = 25
       Height = 25
       Hint = 'Copy Preset'
-      OptionsImage.ImageIndex = 3
+      OptionsImage.ImageIndex = 1
       OptionsImage.Images = cxImageList
       ParentShowHint = False
       ShowHint = True
@@ -452,19 +444,19 @@ object frmMain: TfrmMain
       TabOrder = 5
       Width = 83
     end
-    object cxPageControl2: TcxPageControl
+    object PageControlParams: TcxPageControl
       Left = 8
       Top = 132
       Width = 587
       Height = 193
       TabOrder = 7
-      Properties.ActivePage = cxTabSheet1
+      Properties.ActivePage = tabURLParams
       Properties.CustomButtons.Buttons = <>
       ClientRectBottom = 191
       ClientRectLeft = 2
       ClientRectRight = 585
       ClientRectTop = 26
-      object cxTabSheet1: TcxTabSheet
+      object tabURLParams: TcxTabSheet
         Caption = 'URL Parameters'
         ImageIndex = 0
         object EditorURLParams: TBCEditor
@@ -475,8 +467,6 @@ object frmMain: TfrmMain
           Cursor = crIBeam
           ActiveLine.Indicator.Visible = False
           Align = alClient
-          Caret.MultiEdit.Enabled = True
-          Caret.NonBlinking.Enabled = False
           Caret.Options = []
           CodeFolding.Colors.Indent = clBlack
           CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
@@ -523,10 +513,9 @@ object frmMain: TfrmMain
           Minimap.Font.Height = -1
           Minimap.Font.Name = 'Courier New'
           Minimap.Font.Style = []
-          Minimap.Width = 140
           OnChange = EditorURLParamsChange
+          OnMouseUp = EditorURLParamsMouseUp
           Options = [eoAutoIndent, eoDragDropEditing, eoTrimTrailingSpaces]
-          RightMargin.Position = 80
           RightMargin.Visible = False
           Scroll.Bars = ssVertical
           Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
@@ -534,7 +523,6 @@ object frmMain: TfrmMain
           SyncEdit.Enabled = False
           SyncEdit.ShortCut = 24650
           TabOrder = 1
-          WordWrap.Enabled = False
           WordWrap.Indicator.Glyph.Data = {
             7E030000424D7E0300000000000036000000280000000F0000000E0000000100
             2000000000004803000000000000000000000000000000000000FF00FF00FF00
@@ -566,7 +554,6 @@ object frmMain: TfrmMain
             FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
             FF00}
           WordWrap.Indicator.MaskColor = clFuchsia
-          WordWrap.Width = wwwPage
         end
         object Panel3: TPanel
           Left = 0
@@ -596,8 +583,6 @@ object frmMain: TfrmMain
           Cursor = crIBeam
           ActiveLine.Indicator.Visible = False
           Align = alClient
-          Caret.MultiEdit.Enabled = True
-          Caret.NonBlinking.Enabled = False
           Caret.Options = []
           CodeFolding.Colors.Indent = clBlack
           CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
@@ -644,10 +629,9 @@ object frmMain: TfrmMain
           Minimap.Font.Height = -1
           Minimap.Font.Name = 'Courier New'
           Minimap.Font.Style = []
-          Minimap.Width = 140
           OnChange = EditorURLParamsChange
+          OnMouseUp = EditorExtraHeadersMouseUp
           Options = [eoAutoIndent, eoDragDropEditing, eoTrimTrailingSpaces]
-          RightMargin.Position = 80
           RightMargin.Visible = False
           Scroll.Bars = ssVertical
           Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
@@ -655,7 +639,6 @@ object frmMain: TfrmMain
           SyncEdit.Enabled = False
           SyncEdit.ShortCut = 24650
           TabOrder = 1
-          WordWrap.Enabled = False
           WordWrap.Indicator.Glyph.Data = {
             7E030000424D7E0300000000000036000000280000000F0000000E0000000100
             2000000000004803000000000000000000000000000000000000FF00FF00FF00
@@ -687,7 +670,6 @@ object frmMain: TfrmMain
             FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
             FF00}
           WordWrap.Indicator.MaskColor = clFuchsia
-          WordWrap.Width = wwwPage
         end
         object Panel4: TPanel
           Left = 0
@@ -753,8 +735,6 @@ object frmMain: TfrmMain
           Cursor = crIBeam
           ActiveLine.Indicator.Visible = False
           Align = alClient
-          Caret.MultiEdit.Enabled = True
-          Caret.NonBlinking.Enabled = False
           Caret.Options = []
           CodeFolding.Colors.Indent = clBlack
           CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
@@ -801,10 +781,9 @@ object frmMain: TfrmMain
           Minimap.Font.Height = -1
           Minimap.Font.Name = 'Courier New'
           Minimap.Font.Style = []
-          Minimap.Width = 140
           OnChange = EditorURLParamsChange
+          OnMouseUp = EditorPostDataMouseUp
           Options = [eoAutoIndent, eoDragDropEditing, eoTrimTrailingSpaces]
-          RightMargin.Position = 80
           RightMargin.Visible = False
           Scroll.Bars = ssVertical
           Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
@@ -812,7 +791,6 @@ object frmMain: TfrmMain
           SyncEdit.Enabled = False
           SyncEdit.ShortCut = 24650
           TabOrder = 1
-          WordWrap.Enabled = False
           WordWrap.Indicator.Glyph.Data = {
             7E030000424D7E0300000000000036000000280000000F0000000E0000000100
             2000000000004803000000000000000000000000000000000000FF00FF00FF00
@@ -844,7 +822,6 @@ object frmMain: TfrmMain
             FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
             FF00}
           WordWrap.Indicator.MaskColor = clFuchsia
-          WordWrap.Width = wwwPage
         end
         object Panel5: TPanel
           Left = 0
@@ -873,6 +850,19 @@ object frmMain: TfrmMain
         end
       end
     end
+    object btnCopyFullURL: TcxButton
+      Left = 570
+      Top = 341
+      Width = 25
+      Height = 25
+      Hint = 'Copy Full URL'
+      OptionsImage.ImageIndex = 1
+      OptionsImage.Images = cxImageList
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 10
+      OnClick = btnCopyFullURLClick
+    end
   end
   object OpenDialog: TOpenDialog
     Filter = 'REST Debugger Project (*.rdproj)|*.rdproj'
@@ -897,6 +887,7 @@ object frmMain: TfrmMain
     HandleRedirects = True
     ProxyParams.BasicAuthentication = False
     ProxyParams.ProxyPort = 0
+    Request.CharSet = 'utf-8'
     Request.ContentLength = -1
     Request.ContentRangeEnd = -1
     Request.ContentRangeStart = -1
@@ -906,7 +897,7 @@ object frmMain: TfrmMain
     Request.UserAgent = 'Simnet REST Debugger'
     Request.Ranges.Units = 'bytes'
     Request.Ranges = <>
-    HTTPOptions = [hoForceEncodeParams]
+    HTTPOptions = []
     Left = 20
     Top = 30
   end
@@ -931,11 +922,15 @@ object frmMain: TfrmMain
     Font.Style = []
     CanCustomize = False
     Categories.Strings = (
-      'Default')
+      'Default'
+      'PopupMenuEditorContent')
     Categories.ItemsVisibles = (
+      2
       2)
     Categories.Visibles = (
+      True
       True)
+    ImageOptions.Images = cxImageList
     LookAndFeel.NativeStyle = False
     PopupMenuLinks = <>
     UseF10ForMenu = False
@@ -989,12 +984,6 @@ object frmMain: TfrmMain
       Visible = True
       WholeRow = True
     end
-    object dxBarButton1: TdxBarButton
-      Caption = 'Datei'
-      Category = 0
-      Hint = 'Datei'
-      Visible = ivAlways
-    end
     object dxBarSubItem3: TdxBarSubItem
       Caption = 'File'
       Category = 0
@@ -1028,6 +1017,7 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'Open'
       Visible = ivAlways
+      ImageIndex = 10
       OnClick = dxBarButton3Click
     end
     object btnSave: TdxBarButton
@@ -1035,6 +1025,7 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'Save'
       Visible = ivAlways
+      ImageIndex = 11
       ShortCut = 16467
       OnClick = btnSaveClick
     end
@@ -1043,6 +1034,7 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'Save As'
       Visible = ivAlways
+      ImageIndex = 12
       OnClick = btnSaveAsClick
     end
     object dxBarButton6: TdxBarButton
@@ -1050,6 +1042,7 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'Close'
       Visible = ivAlways
+      ImageIndex = 13
       ShortCut = 32883
       OnClick = dxBarButton6Click
     end
@@ -1068,6 +1061,7 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'About'
       Visible = ivAlways
+      ImageIndex = 15
       OnClick = dxBarButton7Click
     end
     object dxBarSubItem2: TdxBarSubItem
@@ -1085,6 +1079,7 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'Run'
       Visible = ivAlways
+      ImageIndex = 14
       ShortCut = 120
       OnClick = tbbtnRunClick
     end
@@ -1127,83 +1122,345 @@ object frmMain: TfrmMain
       Category = 0
       Hint = 'New'
       Visible = ivAlways
+      ImageIndex = 9
       ShortCut = 16462
       OnClick = dxBarButton2Click
     end
-    object tbbtnAutoSaveProject: TdxBarButton
-      Caption = 'Auto save project'
-      Category = 0
-      Hint = 'Auto save project'
-      Visible = ivAlways
-      ButtonStyle = bsChecked
-      OnClick = tbbtnAutoSaveProjectClick
-    end
-  end
-  object PopupMenuEditorContent: TPopupMenu
-    Left = 28
-    Top = 109
-    object Cut1: TMenuItem
+    object pmnuCutJsonContent: TdxBarButton
       Caption = 'Cut'
+      Category = 1
+      Visible = ivAlways
+      ImageIndex = 5
       ShortCut = 16472
-      OnClick = Cut1Click
+      OnClick = pmnuCutJsonContentClick
     end
-    object Copy1: TMenuItem
+    object pmnuCopyJsonContent: TdxBarButton
       Caption = 'Copy'
+      Category = 1
+      Visible = ivAlways
+      ImageIndex = 1
       ShortCut = 16451
-      OnClick = Copy1Click
+      OnClick = pmnuCopyJsonContentClick
     end
-    object Paste1: TMenuItem
+    object pmnuPasteJsonContent: TdxBarButton
       Caption = 'Paste'
+      Category = 1
+      Visible = ivAlways
+      ImageIndex = 4
       ShortCut = 16470
-      OnClick = Paste1Click
-    end
-    object N1: TMenuItem
-      Caption = '-'
+      OnClick = pmnuPasteJsonContentClick
     end
-    object pbtnFormatCode: TMenuItem
+    object pmnuFormatCodeJsonContent: TdxBarButton
       Caption = 'Format Code && Syntax check'
-      ShortCut = 41030
-      OnClick = pbtnFormatCodeClick
+      Category = 1
+      Visible = ivAlways
+      ImageIndex = 16
+      OnClick = pmnuFormatCodeJsonContentClick
+    end
+    object pmnuUndoJsonContent: TdxBarButton
+      Caption = 'Undo'
+      Category = 1
+      Hint = 'Undo'
+      Visible = ivAlways
+      ImageIndex = 7
+      ShortCut = 16474
+      OnClick = pmnuUndoJsonContentClick
+    end
+    object pmnuRedoJsonContent: TdxBarButton
+      Caption = 'Redo'
+      Category = 1
+      Hint = 'Redo'
+      Visible = ivAlways
+      ImageIndex = 8
+      ShortCut = 24666
+      OnClick = pmnuRedoJsonContentClick
+    end
+    object pmnuSelectAll: TdxBarButton
+      Caption = 'Select all'
+      Category = 1
+      Hint = 'Select all'
+      Visible = ivAlways
+      ImageIndex = 6
+      ShortCut = 16449
+      OnClick = pmnuSelectAllClick
+    end
+    object tbbtnAutoSaveProject: TdxBarButton
+      Caption = 'Auto save project'
+      Category = 1
+      Hint = 'Auto save project'
+      Visible = ivAlways
+      ButtonStyle = bsChecked
+      OnClick = tbbtnAutoSaveProjectClick
+    end
+    object pmnuCompactJson: TdxBarButton
+      Caption = 'Compact JSON'
+      Category = 1
+      Hint = 'Compact JSON'
+      Visible = ivAlways
+      ImageIndex = 17
+      OnClick = pmnuCompactJsonClick
     end
   end
   object cxImageList: TcxImageList
     FormatVersion = 1
     DesignInfo = 9175265
     ImageInfo = <
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0000000000020000000A170D0738542D1894814626D193502AEA924F2AE87F45
+          25D0522C17931209053000000009000000010000000000000000000000000000
+          00030201011159311B97A96239FAC58957FFD6A36DFFDDAF75FFDDAF74FFD6A4
+          6BFFC58956FFA46137F53C2112730000000F0000000300000000000000020201
+          0110744226B9BC7C4DFFDDAE77FFDEB076FFE2B782FFE3BB87FFE3BC86FFE1B7
+          82FFDEAF74FFDBAB72FFBD7E4EFF6F3E24B50000001000000002000000085C36
+          2095BE8053FFE0B37CFFDFB076FFDEB177FFB78254FFAA7144FFAB7245FFBC88
+          59FFDFB279FFDFB277FFDEB077FFC08253FF55321D920000000A190F0932B070
+          47FADFB27DFFDFB27AFFE0B37BFFE0B57DFFA56B3FFFF5EFEAFFF8F3EEFFAB72
+          45FFE2B67EFFE0B47CFFE0B47BFFDEB079FFB3734AFB130B072F613C2795CD9B
+          6FFFE2B780FFE5BD89FFE7C291FFE8C393FFA56B3FFFF1E6DEFFF9F5F1FFAA71
+          44FFE8C494FFE8C393FFE5BF8CFFE1B77FFFD09C6EFF5434218B935E3DD2DCB3
+          83FFE3B781FFBA8659FFA97043FFAB7245FFAC7346FFF5EDE6FFFAF6F3FFAD75
+          47FFB0784AFFB17A4BFFC29162FFE4B983FFDEB17EFF8E5B3BD0B0744CF2E3BF
+          8FFFE4BB84FFA56B3FFFF3EBE6FFFAF6F3FFF6EFE8FFF7F0EAFFFBF7F5FFFAF7
+          F4FFFAF7F3FFFAF6F2FFAB7245FFE5BD87FFE5BE8BFFAB714CEEAE764FECE9C9
+          A0FFE5BE89FFA56B3FFFE0D2CAFFE1D3CCFFE3D5CFFFF2EAE4FFF8F3EFFFEADF
+          D9FFE6DAD4FFE9DED9FFAA7144FFE7C08CFFEACA9DFFAE764FEE9A6A49D0E9CD
+          ACFFEAC796FFB78456FFA56B3FFFA56B3FFFA56B3FFFF1EAE5FFFAF6F3FFA56B
+          3FFFA56B3FFFA56B3FFFB78457FFEACA99FFEBD1ADFF996A49D46E4E3697DDBB
+          9DFFEED3A9FFEECFA2FFEED2A5FFF0D6A9FFA56B3FFFF0EAE7FFFDFCFBFFA56B
+          3FFFF1D6AAFFF0D5A8FFEED2A5FFEFD4A7FFE0C2A2FF6246318F1C140E2BC794
+          6CFCF5E8CCFFEFD6ABFFF1D8AEFFF2DAB0FFA56B3FFFDECFC9FFDFD1CBFFA56B
+          3FFFF3DCB2FFF1DBB0FFF1D8ADFFF7EACDFFC69470FA1A120D2E000000036F52
+          3C92D7B08CFFF8EFD3FFF3E0B9FFF3DFB7FFB98A5FFFA56B3FFFA56B3FFFBA8A
+          5FFFF4E1B9FFF4E2BDFFFAF1D5FFD9B390FF664B368C00000006000000010202
+          0107906C4EB8D9B38FFFF7EDD3FFF8EED0FFF7EBC9FFF6E8C4FFF6E8C5FFF7EC
+          CAFFF8EED0FFF4E8CDFFD7AF8BFF88664AB30202010B00000001000000000000
+          00010202010770543F8FCFA078FCE2C4A2FFEBD7B8FFF4E9CDFFF4EACEFFECD8
+          B9FFE3C5A3FFC59973F24C392A67000000060000000100000000000000000000
+          000000000001000000022019122C6C543E89A47E5FCCC59770F1C19570EEA47E
+          60CD6C543F8B16110D2200000003000000010000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0002000000090000000E0000000F0000000F0000001000000010000000110000
+          0011000000100000000B00000003000000000000000000000000000000000000
+          00087C5345C0AD725EFFAC725DFFAC715DFFAC6F5BFFAB705CFFAB705CFFAB6E
+          5CFFAB6E5AFF7A4E41C30000000B000000000000000000000000000000000000
+          000BAF7462FFFDFBF9FFFBF6F2FFFBF5F2FFFAF5F1FFFBF4EFFFF9F3EEFFF9F2
+          EEFFFAF2ECFFAC715DFF0000000F000000000000000000000000000000000000
+          000BB17964FFFDFBFAFFF7EEE7FFF8EDE7FFF7EDE7FFF7EDE6FFF6ECE5FFF6EC
+          E5FFFAF2EEFFAE7260FF01010120010101100101010B00000003000000000000
+          000BB37C69FFFDFCFBFFF8EFE8FFF7EEE8FFF7EEE8FFF8EEE7FFF7EEE7FFF7EC
+          E6FFFAF3EFFFB07863FFC19D92FFB57D6AFF815A4EC30101010B000000000000
+          000AB57F6CFFFEFCFBFFF9F0EAFFF8F0EAFFF8EFE9FFF8EFE8FFF8EEE9FFF8EE
+          E7FFFBF5F1FFB27A66FFEBE6E2FFFAF3EDFFB6806DFF0101010F000000000000
+          0009B98270FFFEFDFCFFF9F2EDFFF9F2EDFFF9F0EBFFF9F0EAFFF8F0EAFFF8F0
+          E9FFFBF6F3FFB37D6AFFE9E1DAFFFAF3EFFFB88170FF01010110000000000000
+          0008BB8775FFFEFDFDFFFAF3EFFFFAF4EEFFFAF3EEFFFAF1ECFFF9F1EBFFF9F0
+          EBFFFCF8F5FFB6806DFFEAE1DBFFFAF4F0FFB98673FF0101010F000000000000
+          0007BF8B78FFFEFEFDFFFBF5F1FFFBF5F0FFFBF4F0FFFAF3EFFFFAF3EFFFF9F3
+          EDFFFCF9F7FFBA8471FFECE4DDFFFBF5F2FFBB8876FF0101010E000000000000
+          0007C18E7EFFFEFEFDFFFAF5F3FFFBF6F2FFFBF5F1FFFBF5F0FFFBF5F0FFFAF4
+          EFFFFDFAF8FFBC8978FFEDE7E0FFFBF6F4FFBC8B7AFF0101010D000000000000
+          0006C49382FFFEFEFEFFFBF6F4FFFBF6F4FFFCF6F3FFFCF6F3FFFCF4F2FFFBF5
+          F1FFFDFBF9FFBF8C7CFFEFE8E3FFFCF8F5FFBF8E7CFF0101010D000000000000
+          0005C49785FFFFFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFDFFFEFDFDFFFEFD
+          FDFFFEFDFCFFC2907FFFF0EBE6FFFCF9F7FFC29180FF0101010C000000000000
+          0003967265C0C89988FFC99887FFC79887FFC59786FFC79785FFC79784FFC596
+          84FFC59683FFCDA79AFFF4EFEAFFFDFAF8FFC49686FF0101010B000000000000
+          000100000003000000040000000BD8BBB0FFF8F8F8FFF5F0EFFFF5F0EFFFF5EF
+          EDFFF5EFEDFFF7F0EEFFFAF4F1FFFDFBF9FFC7998AFF0000000A000000000000
+          0000000000000000000000000005CCA392FFFFFEFEFFFEFEFEFFFEFEFEFFFEFE
+          FEFFFEFEFDFFFEFDFDFFFEFDFDFFFEFDFCFFCA9D8DFF00000009000000000000
+          00000000000000000000000000039A7B6FC0CEA495FFCFA494FFCDA494FFCCA3
+          93FFCDA392FFCDA391FFCCA291FFCCA290FF97776BC200000006}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          00000000000000000000000000040000000F000000110000000B000000040000
+          0001000000000000000000000000000000000000000000000000000000000000
+          000000000000000000000000000E431B10FF31130BE1190A0598030407420000
+          000C000000020000000000000000000000000000000000000000000000000000
+          000000000000000000000000000D673C29DCB8C7D2FF7789A3FF224084FF040F
+          34960000000F0000000200000000000000000000000000000000000000000000
+          000000000000000000000000000841261A91869AB3FFC7E3F6FF1B65B9FF286B
+          ABFF041237950000000E00000002000000000000000000000000000000000000
+          00000000000000000000000000031013163E458BC6FFDDFEFDFF4DB4E6FF1B67
+          BAFF2E73B1FF051439940000000D000000020000000000000000000000000000
+          0000000000000000000000000001000000081B44628D439FD5FFDDFEFDFF55C0
+          ECFF1D6ABCFF337BB6FF06163B920000000C0000000200000000000000080000
+          000C0000000D0000000D0000000D0000000E000000161B44629248A5D8FFDDFE
+          FDFF5DCBF2FF206EBFFF3883BCFF07193E910000000A00000002735146BFA070
+          61FF9F6F61FF9F6F60FF9E6F60FFA07161FFB89489FFC8B0A9FF7A98B2FF4BAB
+          DAFFDDFEFDFF64D5F7FF2474C1FF3C8BC1FF071B418E00000006A47667FFF9F6
+          F4FFF6F5F3FFF7F5F4FFF4F3F1FFF7F5F4FFF1F0EEFFF2F1EFFFF3F2F1FF8CB4
+          D1FF4EAFDDFFDDFEFDFF6BDEFBFF287AC5FF15438DFF00000008A87C6DFFF5F3
+          F2FF643C2CFFE5E4E3FF633B2BFFEBEAE9FF643C2CFF643E2DFFD7CFCBFFF6F5
+          F4FF92B9D5FF51B2DFFFDDFEFDFF4CA7D7FF0F2B4F8800000004AD8274FFF4F3
+          F2FF68402FFF673F2FFF673F2FFFE9E8E6FF663E2EFFDEDCDBFF68402FFFF7F5
+          F4FFF6F3EFFF93BBD8FF327FBFFF163A5A8B0000000500000001B1887AFFF6F5
+          F4FF6E4433FFE9E7E6FF6D4432FFECEBEAFF6C4331FF6C4231FFB3A19AFFF6F5
+          F3FFF9F4EFFFF9F6F3FFD2BBB4FF0000000E0000000100000000B78F80FFF8F7
+          F6FF724836FFCFC4BFFF714836FFF1EFEEFF714635FFE8E6E5FF704635FFF7F6
+          F5FFF8F1ECFFF8F1ECFFAF8576FF0000000A0000000000000000BB9587FFFBFA
+          F9FFD8CDC8FF764A3BFFD7CBC6FFF7F6F5FF754B39FF754B39FFD6CAC5FFFBFA
+          F9FFF8F2EEFFF8F2EDFFB38B7CFF000000090000000000000000C09C8DFFFDFB
+          F9FFFDFDFCFFFBFBFAFFFDFDFCFFFDFDFCFFFAFAF9FFFAFAF9FFFCFBFBFFFDFA
+          F8FFFBF9F7FFFBF9F7FFB89282FF00000008000000000000000091786DC1C4A1
+          92FFC3A091FFC3A091FFC29F90FFC19D8FFFC09D8EFFC09C8DFFBF9B8CFFBF9A
+          8BFFBE9A8BFFBD998AFF8C7064C2000000050000000000000000}
+      end
       item
         Image.Data = {
           36040000424D3604000000000000360000002800000010000000100000000100
           2000000000000004000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
-          000000000000000000000404041A141414881F1F1FD4242424F9242424F91F1F
-          1FD4141414880404041A00000000000000000000000000000000000000000000
-          0000000000000D0D0D5A232323F3252525FF252525FF252525FF252525FF2525
-          25FF252525FF232323F30D0D0D5A000000000000000000000000000000000000
-          00000D0D0D5A252525FE252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FE0D0D0D5A0000000000000000000000000404
-          041A232323F3252525FF252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FF232323F30404041A00000000000000001414
-          1488252525FF252525FF252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FF252525FF1414148800000000000000001F1F
-          1FD4252525FF252525FF252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FF252525FF1F1F1FD400000000000000002424
-          24F9252525FF0000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000252525FF242424F900000000000000002424
-          24F9252525FF0000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000252525FF242424F900000000000000001F1F
-          1FD4252525FF252525FF252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FF252525FF1F1F1FD400000000000000001414
-          1488252525FF252525FF252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FF252525FF1414148800000000000000000404
-          041A232323F3252525FF252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FF232323F30404041A00000000000000000000
-          00000D0D0D5A252525FE252525FF252525FF252525FF00000000000000002525
-          25FF252525FF252525FF252525FE0D0D0D5A0000000000000000000000000000
-          0000000000000D0D0D5A232323F3252525FF252525FF252525FF252525FF2525
-          25FF252525FF232323F30D0D0D5A000000000000000000000000000000000000
-          000000000000000000000404041A141414881F1F1FD4242424F9242424F91F1F
-          1FD4141414880404041A00000000000000000000000000000000000000000000
+          0000000000020000000A00000010000000090000000200000000000000000000
+          00020000000A000000120000000C000000030000000000000000000000000000
+          00020000000F0F0742921D0F7EEF0603347A0000000E00000002000000020000
+          000F0804347C1D0F7EF00F084194000000120000000200000000000000000000
+          0008120B47923233AFFF3648CCFF1D1EA5FF0603357A0000000F0000000F0703
+          357C1F20A5FF3747CCFF2D2FAEFF120B46950000000B00000000000000000000
+          000C281C8DF1596CD8FF3B51D3FF3A4FD2FF1E22A6FF0602347D0502357E2022
+          A6FF3A50D3FF3A50D3FF4C5FD4FF291D8CF10000001000000000000000000000
+          0006130F3C734D4FBAFF667EE0FF415AD6FF415AD7FF1F24A7FF2529A8FF415A
+          D7FF415AD7FF5B72DEFF484AB8FF130F3C790000000900000000000000000000
+          00010000000A16123F73585CC1FF758DE6FF4A64DBFF4A65DBFF4A65DBFF4A64
+          DBFF6983E3FF5356C0FF16123F780000000C0000000200000000000000000000
+          0000000000010000000A191643755D63C7FF6783E5FF5774E2FF5774E2FF5774
+          E2FF565CC6FF1916437A0000000D000000020000000000000000000000000000
+          00000000000100000009100E3D734A50BEFF7492EBFF6383E7FF6483E7FF6383
+          E7FF3840B6FF0B0839780000000C000000020000000000000000000000000000
+          0001000000071413416E555CC5FF85A1EFFF7897EDFF9CB6F4FF9DB7F5FF7997
+          EEFF7796EDFF414ABCFF0E0C3C730000000A0000000100000000000000000000
+          00041818456B636CCFFF93AFF3FF83A1F1FFA6BFF7FF676DCAFF7E87DDFFAFC7
+          F8FF83A3F2FF83A1F1FF5058C4FF121040710000000600000000000000000000
+          00065759C3EFAFC6F6FF8EADF4FFABC4F8FF6F76D0FF1817456F24244F70868E
+          E1FFB5CCF9FF8DACF4FFA1B8F4FF5758C3EF0000000900000000000000000000
+          000331326B8695A0EAFFC0D3F9FF7880D7FF1C1C496B00000006000000072527
+          526C8B93E6FFC1D3F9FF949EE9FF303168870000000500000000000000000000
+          00010000000431336B825E62CBEC1F204D680000000500000001000000010000
+          00052728536B5E62CBEC31326883000000070000000100000000000000000000
+          0000000000000000000200000004000000020000000100000000000000000000
+          0001000000030000000500000004000000010000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000030000000C00000010000000110000
+          0011000000120000001200000013000000130000001000000004000000000000
+          00000000000000000000000000000000000BA97563FFA87462FFA77261FFA571
+          5FFFA5705EFFA36F5DFFA36D5CFFA26D5BFFA26C5AFF0000000F000000000000
+          00000000000000000000000000000000000DAB7866FFFDFBF8FFF7EFE8FFF6EF
+          E6FFF6EEE6FFF5EEE5FFF5EDE4FFF5EDE4FFA36D5CFF00000013000000000000
+          0000265080B7336CB1FF326BB0FF2E63A6FFAD7C6AFFFDFCFAFFF7F0E9FFF7F0
+          E8FFF7EFE7FFF6EFE7FFF6EEE6FFF5EEE5FFA46F5DFF00000012000000000000
+          00003976B8FF91D2F4FF66BEEEFF60B5E4FFB07F6DFFFEFDFCFFF7F2EAFFF8F1
+          E9FFF7F0E9FFF6F0E8FFF6EFE7FFF6EFE6FFA67260FF00000011000000000000
+          00003F7DBCFF9AD6F5FF6CC3F0FF66B8E5FFB28070FFFEFEFDFFF8F3ECFFF8F2
+          EBFFF7F1EAFFF7F1E9FFF7F0E8FFF7EFE8FFA87563FF00000010000000000000
+          00004384C1FFA4DBF6FF73C7F1FF6CBEE8FFB48473FFFFFFFEFFF9F3EEFFF9F3
+          EDFFF9F2ECFFF8F2EBFFF7F1EAFFF7F0E9FFAB7766FF0000000F000000000000
+          0000488BC5FFADE1F8FF7ACCF2FF73C3E9FFB68676FFFFFFFFFFF9F5EEFFF9F4
+          EEFFF9F3EDFFF8F3ECFFF8F2EBFFF7F2EBFFAC7A6AFF0000000E000000000000
+          00004C92CAFFB6E6FAFF81D2F4FF7AC9EBFFB88878FFFFFFFFFFFAF5F0FFF9F5
+          EFFFF9F5EFFFF9F4EEFFF9F3EDFFF9F3ECFFAF7E6CFF0000000D000000000000
+          00005098CDFFBEE9FAFF88D6F6FF81CEEEFFBB8B7BFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFAFFB1816FFF0000000C000000000000
+          0000539DD1FFC5EDFBFF8FDBF7FF89D5F2FFBD8D7DFFBB8C7CFFBA8B7BFFB989
+          79FFB98977FFB78876FFB68674FFB58373FFB38371FF00000009000000000000
+          000056A1D4FFCBF0FCFF95E0F8FF82CBE9FF72B7D9FF71B7D9FF70B7DAFF70B8
+          DBFF6FB7DBFF4385BBFF00000009000000090000000800000002000000000000
+          000058A5D7FFCBEDF8FF73B2D0FF5792B7FF5893B7FF5995BAFF5B99BDFF62A3
+          C9FF69AFD4FF4184BBFF00000000000000000000000000000000000000000000
+          000059A8D9FFBCDBE7FF8E7875FF9B7061FF946A5BFF8F6456FF885D50FF7B65
+          63FF97BCD3FF488EC4FF00000000000000000000000000000000000000000000
+          0000437EA2BD4A90BFFFB48E7FFFF3EDE7FFDEC9B8FFDDC8B5FFDBC4B2FF9770
+          60FF3B7BAEFF40799EBD00000000000000000000000000000000000000000000
+          00000000000000000000876B60BDB69181FFB69080FFB58E7FFFB28C7DFF7D60
+          54BD000000000000000000000000000000000000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          00030000000E00000018000000180000000F0000000400000000000000000000
+          00030000000E00000018000000180000000F0000000400000000000000030402
+          011A512408A5833A0BEE81380AEF4F2105A70301001C00000003000000030302
+          001A512408A5833A0BEE81380AEF4F2105A70301001C00000003000000095931
+          159BB8763BFFF1BF6EFFF1BD6BFFB56F33FF52280DA10000000C00000009552C
+          129BB76F34FFEEA457FFEDA354FFB3672CFF52280DA10000000C0000000CA868
+          37EEF6CE8FFFC08B57FFD2A26DFFF3C983FF985525F00000001400000010A05E
+          2FEFF4B775FFB57A47FFC8905BFFF0B06AFF995425EF0000001000000009B77C
+          48EDFAE3BFFFA26638FFAE7545FFF8DEB5FFAC6A38FF0000002A0000002AB777
+          44FFF9D4A9FF97592FFFA3663AFFF7CFA0FFA56735EE0000000D000000047251
+          3290DFAE7EFFF4DDC1FFF3DDC0FFDEB58BFFCB9C76FF67372BFF603226FFD0A1
+          7AFFE1B58AFFF4D5B3FFF3D4B1FFD49F6EFF68462A9300000006000000010504
+          030B7356378ECD9762F2D69F69FFE0BA94FFE6CBB4FFF0DED4FF9E796DFFCAAB
+          94FFDDB591FFD29964FFC28C5AF36D4E33910504020D00000001000000000000
+          0000000000030000000A35241F66AD8577FBF9F4F2FFF2E2D9FFE4CDC4FF9772
+          68FF865B4EFB23120D6F00000010000000040000000100000000000000000000
+          000000000000000000010000000C5B3B32B2B58B7EFFFAF5F3FFF4E5DCFFB799
+          8EFF43241CB40000000F00000001000000000000000000000000000000000000
+          000000000000000000031E141142A07567FDDECAC2FFB89388FFF8F3F1FFF3E7
+          DFFF8A6054FD150B093F00000003000000000000000000000000000000000000
+          0000000000010403020F82584BD8E6D1C9FFEFE5E1FF795144E0885E53DFF6F1
+          EEFFDFCFC6FF61382ED70201010E000000010000000000000000000000000000
+          0000000000045339318ACCAEA3FFF0E5E1FF734D41C80805041E0A0605197550
+          45C5F4EEECFFB99B93FF39201988000000040000000000000000000000000000
+          00022219153BB68D7EFBEEE2DDFF68473DB00402021000000002000000010403
+          020C644237ACF2EAE7FF92695DFD170D0A390000000200000000000000010403
+          030B946C5FD6EBDED9FF5C413894000000070000000200000000000000000000
+          00010000000454372E91ECE3E0FF683F34D50301010A00000001000000025E45
+          3B85EBDCD6FF4B362E7200000005000000010000000000000000000000000000
+          000000000000000000023F2A236FE9DFDCFF3E231D8400000002000000028965
+          58BB3D2D27590000000300000001000000000000000000000000000000000000
+          000000000000000000000000000131201B57654236BA00000001}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          000000000000000000000000000000000000000000000000000000000000583D
+          25FF563E24FF563A22FF0000000000000000533920FF523820FF51371FFF4F38
+          1DFF00000000000000004E341CFF4D331BFF4C341DFF0000000000000000583E
+          26FF000000020000000A0000000F000000110000001100000012000000120000
+          001200000013000000120000000C000000034E341CFF0000000000000000593F
+          27FF00000008905C34C1C67F47FFC57D45FFC37B43FFC27942FFC07740FFBF76
+          3FFFBE743EFFBC733CFF87512AC40000000C4F341CFF00000000000000000000
+          00000000000CCA834AFFF3CCA6FFF1C398FFEFC196FFEEC093FFEDBE91FFEBBC
+          8EFFEBBA8DFFEBB98BFFBD733CFF000000110000000000000000000000000000
+          00000000000BCB854CFFF4CFAAFFF1C59AFFF1C398FFEFC195FFEEBF93FFEDBD
+          90FFECBC8FFFEBBA8DFFBE743EFF000000110000000000000000000000005E43
+          2BFF0000000ACC874EFFF6D1ADFFF2C79CFFF1C59AFFF0C398FFEFC195FFEEBF
+          93FFEDBD91FFECBC8EFFC0753FFF0000000F533820FF00000000000000005F44
+          2BFF00000009CE8850FFF7D4B1FFF3C99FFFF3C79DFFF1C59AFFF1C398FFEFC1
+          95FFEFC093FFEDBD91FFC07740FF0000000E543921FF00000000000000006046
+          2DFF00000008CF8A51FFF8D6B4FFF5CBA1FFF4C99FFFF3C79CFFF2C59AFFF0C3
+          97FFEFC296FFEEBF94FFC27942FF0000000D543A22FF00000000000000006047
+          2EFF00000007D08B52FFF9D8B8FFF6CDA3FFF5CBA1FFF4C99EFFF2C79DFFF2C5
+          9AFFF0C398FFEFC196FFC37B44FF0000000C563C24FF00000000000000000000
+          000000000005D18D53FFFADBBBFFF7CEA5FFF6CCA3FFF5CBA1FFF3C99EFFF3C7
+          9DFFF2C59AFFF0C397FFC57D45FF0000000A0000000000000000000000000000
+          000000000004D28E54FFFADCBDFFFADABBFFF9D9B9FFF8D7B7FFF7D6B5FFF6D4
+          B1FFF5D2AFFFF4CFACFFC77F47FF000000080000000000000000000000006449
+          30FF000000029D6A3FBFD28F55FFD18D53FFD08C52FFCF8A51FFCE884FFFCD87
+          4EFFCB854CFFCA834AFF945F36C2000000055A3F27FF0000000000000000644A
+          32FF000000000000000200000003000000040000000400000004000000050000
+          0005000000050000000500000004000000015A4329FF0000000000000000654A
+          32FF664C30FF644932FF000000000000000062482FFF62472FFF60472EFF6046
+          2EFF00000000000000005E432BFF5D432BFF5C4229FF00000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000}
       end
@@ -1215,31 +1472,31 @@ object frmMain: TfrmMain
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
-          00000000000007070732212121E11414158A0000000000000000000000000000
-          00001414158A212121E107070732000000000000000000000000000000000000
-          000007070732222222ED252525FF242424F71414158A00000000000000001414
-          158A242424F7252525FF222222ED070707320000000000000000000000000000
-          0000212121E1252525FF252525FF252525FF242424F71414158A1414158A2424
-          24F7252525FF252525FF252525FF212121E10000000000000000000000000000
-          0000171718A1242424F7252525FF252525FF252525FF242424FA242424FA2525
-          25FF252525FF252525FF242424F71414158A0000000000000000000000000000
-          000000000000171718A1242424F7252525FF252525FF252525FF252525FF2525
-          25FF252525FF242424F71414158A000000000000000000000000000000000000
-          00000000000000000000171718A1252525FD252525FF252525FF252525FF2525
-          25FF242424FA1414158A00000000000000000000000000000000000000000000
-          00000000000000000000171718A1242424FB252525FF252525FF252525FF2525
-          25FF242424FA1414158A00000000000000000000000000000000000000000000
-          000000000000171718A1242424F7252525FF252525FF252525FF252525FF2525
-          25FF252525FF242424F71414158A000000000000000000000000000000000000
-          0000171718A1242424F7252525FF252525FF252525FF242424FB242424FA2525
-          25FF252525FF252525FF242424F71414158A0000000000000000000000000000
-          0000222222EC252525FF252525FF252525FF242424F71414158A1414158A2424
-          24F7252525FF252525FF252525FF212121E10000000000000000000000000000
-          000007070732232323F1252525FF242424F71414158A00000000000000001414
-          158A242424F7252525FF222222ED070707320000000000000000000000000000
-          00000000000007070732222222E71414158A0000000000000000000000000000
-          00001414158A212121E107070732000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
+          000000000000000000000000000000000002000000090000000B000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          00000000000000000000000000020000000E542F18A08A491EDD000000000000
+          0000000000000000000000000000000000010000000500000008000000030000
+          000000000000000000030000000E553019A0C79A6AFF975125EC000000000000
+          0000000000000000000000000002000000092D180B63A06136EC0000000A0000
+          0004000000091009052C683C1FBAC69561FFDFC295FF7D4824C8000000000000
+          000000000001000000040F09042762371BB7B07A4AFFB27243FF140C07362D1B
+          0F5B5C371EA69D643BF9D2A66FFFEECD94FFCCA37AFF472B177B000000000000
+          0002000000073922126B996239F3D7AE77FFF3D597FFB57A4CFFA66D42FFB47F
+          51FFCEA26EFFEECC90FFEFCD92FFEEDEB6FFA36C43E90805031A00000002150E
+          0829764B2CBFC19262FFF2D49AFFF5DA9FFFF6DA9DFFF4D79DFFF4D79CFFF4D6
+          9AFFF3D59AFFF3D89FFFF5ECC5FFCAA177FF3825175E0000000500000003B185
+          5DEBEADDBCFFFBF7D4FFFCF3CCFFFCF3CEFFFCF2CAFFFAECC0FFF8E6B6FFF6E3
+          B2FFF6ECC3FFF1EBCAFFCDA981FF5139257D0000000800000001000000011C16
+          0F2A947251C4DABE99FFFAF7D8FFFDFAD9FFFDF7D4FFFDFDE1FFF5EFD0FFEADB
+          BAFFD6B892FFAE825CE83D2D1F5E000000070000000100000000000000000000
+          0001000000054D3D2C6AC19D78F2ECDFBDFFFEFDDFFFB48359FFAB845EE18A6A
+          4CBB4E3C2A700705041300000004000000010000000000000000000000000000
+          0000000000000000000315110D21896E51B3DABF9AFFBC8D64FF0000000B0000
+          0005000000030000000100000000000000000000000000000000000000000000
+          0000000000000000000000000001000000044336285BB08865E80706040E0000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000200000003000000010000
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000}
@@ -1249,74 +1506,412 @@ object frmMain: TfrmMain
           36040000424D3604000000000000360000002800000010000000100000000100
           2000000000000004000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000001D1D
-          1DC8252525FF252525FF252525FF252525FF252525FF252525FF252525FF2525
-          25FF252525FF252525FF1D1D1DC8000000000000000000000000000000002525
-          25FF000000000000000000000000000000000000000000000000000000000000
-          00000000000000000000252525FF000000000000000000000000000000002525
-          25FF000000000000000000000000000000000000000000000000000000000000
-          00000000000000000000252525FF000000000000000000000000000000002525
-          25FF0000000000010203005C91A7004973840006090A00000000000000000000
-          00000000000000000000252525FF000000000000000000000000000000002525
-          25FF000000000000000000639CB30071B2CC0069A5BD0056889C00111A1E0000
-          00000000000000000000252525FF000000000000000000000000000000002525
-          25FF0000000000000000004C778900283F49000406070056879B0081CCEA0012
-          1C200000000000000000252525FF000000000000000000000000000000002525
-          25FF000000000000000000253A430067A3BB00324F5B008CDCFD008DDEFF0081
-          CCEA00121C2000000000252525FF000000000000000000000000000000002525
-          25FF000000000000000000000000006FAFC9008DDEFF000F181C00578A9E008D
-          DEFF0081CCEA00121C201D1D1DC8000000000000000000000000000000002525
-          25FF00000000000000000000000000010203006DACC5008DDEFF000C13160057
-          8A9E008DDEFF0081CCEA0918205A000000000000000000000000000000002525
-          25FF0000000000000000000000000000000000010203006DACC5008DDEFF000C
-          13160081CBE9007BC2DF000D1518000C12150000000000000000000000002525
-          25FF000000000000000000000000000000000000000000010203006DACC5008D
-          DEFF007BC1DE00090F11005281940081CCEA00121C2000000000000000002424
-          24F9000000001E1E1ECC000000001C1C1CC1000000001C1C1CC1000000000064
-          9EB5000C121500528194008DDEFF008DDEFF007BC2DF00000000000000000B0B
-          0B4E1C1C1CC1252525FF13131381252525FF13131381252525FF131313810A0A
-          0A420154849A008DDEFF00142025005A8EA30076BAD600000000000000000000
-          0000000000001E1E1ECC000000001C1C1CC1000000001C1C1CC1000000001C1C
-          1CC100000000006EACC7008CDCFD0079BEDA0001020300000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
-          0000000000000001020200538397000102020000000000000000}
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000070000
+          0006000000020000000000000000000000000000000000000000000000000000
+          00000000000000000000000000000000000000000000000000008F522ADB5531
+          1A9A0000000A0000000200000000000000000000000000000000000000000000
+          00000000000000000000000000000000000000000000000000009E5F34EACB9D
+          6AFF55321B9B0000000A00000002000000000000000000000003000000080000
+          0005000000010000000000000000000000000000000000000000835332C3E4C1
+          8FFFCB9D66FF673D22B7100A052800000008000000040000000A9F5F34EC2E19
+          0B650000000B00000003000000010000000000000000000000004B321F73D1A6
+          7BFFF5D498FFD7AE75FF9E673DF85C371FA42D1B0F59140C0736B16F40FFAF78
+          48FF623619B90F08042B0000000600000002000000000000000009060414A878
+          50E8F1DAAEFFF5D699FFF2D295FFCFA671FFB48152FFA66D42FFB47749FFF1D0
+          94FFD3A972FF985E35F3392010710000000C0000000300000001000000033A2A
+          1C57CFA67DFFFAE7BDFFF6DCA3FFF6DA9DFFF4D79DFFF4D79CFFF4D69AFFF3D5
+          9AFFF2D498FFEDCB92FFBD8B5AFF734627C3140C073100000004000000000000
+          0004543E2B77D2AC84FFF5E3C1FFFBEDC8FFFBF0CAFFFBF2CDFFFCF2CCFFFBF0
+          C8FFF9EABEFFF6E0AEFFF7E2B7FFE8CDA8FFA9764BEC00000007000000000000
+          0001000000043E2F2259B18962E7DABD9CFFECDCC2FFF6EDD8FFFEFBE9FFFDF6
+          D3FFFCF7D9FFF9F3DDFFD6B590FF8F6846C81B130D3200000003000000000000
+          00000000000000000002070504104F3E2C6E8B6C4EBAAB845EE1B48157FFFEFB
+          E5FFEBDBC2FFBF976FF34B392870000000090000000300000000000000000000
+          000000000000000000000000000100000002000000050000000BBB8B62FFD9BC
+          9BFF886A4DB515100C2600000005000000010000000000000000000000000000
+          000000000000000000000000000000000000000000000706040EAF8863E94235
+          275D000000060000000200000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000001000000040000
+          0003000000010000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          00020000000A0000000F00000011000000110000001200000012000000130000
+          00130000001300000014000000130000000D0000000300000000000000000000
+          000981594BC1B37B67FFB27B66FFB27A66FFB27864FFB17965FFB17965FFB177
+          65FFB17763FFB07664FFB07664FF7E5548C50000000C00000000000000000000
+          000DB57D6BFFFDFBF9FFFBF6F2FFFBF5F2FFFAF5F1FFFBF4EFFFF9F3EEFFF9F2
+          EEFFFAF2ECFFF8F0EBFFF9F0EAFFB17866FF0000001200000000000000000000
+          000DB7816DFFFDFBFAFFF7EEE7FFF8EDE7FFF7EDE7FFF7EDE6FFF6ECE5FFF6EC
+          E5FFF8EBE4FFF6EBE4FFF9F1ECFFB37A68FF0000001300000000000000000000
+          000DB98472FFFDFCFBFFF8EFE8FFF7EEE8FFF7EEE8FFF8EEE7FFF7EEE7FFF7EC
+          E6FFF7ECE5FFF6ECE5FFFAF2EEFFB57D6BFF0000001200000000000000000000
+          000CBB8775FFFEFCFBFFF9F0EAFFF8F0EAFFF8EFE9FFF8EFE8FFF8EEE9FFF8EE
+          E7FFF8EEE7FFF8EDE7FFFAF4EFFFB7816EFF0000001100000000000000000000
+          000BBE8A79FFFEFDFCFFF9F2EDFFF9F2EDFFF9F0EBFFF9F0EAFFF8F0EAFFF8F0
+          E9FFF8EFE9FFF8EFE8FFFAF5F1FFBA8571FF0000001000000000000000000000
+          000AC08F7EFFFEFDFDFFFAF3EFFFFAF4EEFFFAF3EEFFFAF1ECFFF9F1EBFFF9F0
+          EBFFF9F1EBFFF8F0EAFFFBF6F3FFBB8975FF0000000F00000000000000000000
+          0009C49380FFFEFEFDFFFBF5F1FFFBF5F0FFFBF4F0FFFAF3EFFFFAF3EFFFF9F3
+          EDFFF9F2EDFFF9F1EBFFFCF7F4FFBE8B79FF0000000F00000000000000000000
+          0009C69686FFFEFEFDFFFAF5F3FFFBF6F2FFFBF5F1FFFBF5F0FFFBF5F0FFFAF4
+          EFFFFAF4EEFFFAF3EFFFFDF9F7FFC18E7DFF0000000E00000000000000000000
+          0008C99B8AFFFEFEFEFFFBF6F4FFFBF6F4FFFCF6F3FFFCF6F3FFFCF4F2FFFBF5
+          F1FFFBF5F0FFFAF5F0FFFDFAF8FFC39382FF0000000D00000000000000000000
+          0007C99E8DFFFFFEFEFFFCF8F6FFFCF7F5FFFCF7F5FFFBF6F4FFFBF6F4FFFCF6
+          F3FFFCF6F2FFFBF6F1FFFDFBF9FFC69786FF0000000C00000000000000000000
+          0006CEA190FFFFFFFEFFFDF9F7FFFDF9F7FFFCF8F7FFFCF8F6FFFCF7F5FFFBF7
+          F5FFFBF7F4FFFCF7F3FFFDFCFAFFC89B8AFF0000000B00000000000000000000
+          0006CEA393FFFFFFFFFFFDFAF9FFFDFAF8FFFDFAF8FFFDF9F7FFFCF8F7FFFBF8
+          F6FFFBF7F6FFFCF7F5FFFEFCFCFFCB9D8DFF0000000B00000000000000000000
+          0005D0A696FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFEFFFEFEFEFFFFFE
+          FEFFFEFEFEFFFEFEFEFFFEFEFDFFCDA191FF0000000900000000000000000000
+          00039C7C71C0D2A898FFD1A897FFD1A897FFD1A797FFD0A696FFD0A696FFD0A6
+          95FFD0A595FFCFA595FFCFA494FF98796EC20000000600000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000090000
+          000E000000100000001000000010000000100000001000000011000000110000
+          001100000011000000100000000B00000003000000000000000019427ACA245A
+          A5FF255CA7FF255BA7FF245AA6FF2459A6FF2358A5FF2358A4FF2356A4FF2256
+          A4FF2255A3FF2154A3FF2153A1FF1C468AE303080F2900000002255DA5FF316B
+          AEFF6DA6D5FF86CAF0FF46A6E4FF44A3E4FF41A1E3FF3FA0E2FF3C9EE2FF3B9C
+          E1FF389BE0FF369AE0FF3498DFFF2C77C1FF10284D8B000000082B68AEFF4984
+          BEFF4B8BC5FFB2E3F8FF68BBECFF55B0E8FF52AEE8FF4EACE7FF4CA9E6FF49A8
+          E5FF47A6E4FF44A4E4FF41A2E3FF3A92D6FF1C4885D50000000D2F6FB4FF6CA7
+          D2FF3F87C4FFAED9F0FF9AD8F5FF66BDEEFF63BBEDFF60B9EBFF5DB6EBFF5BB5
+          EAFF57B2EAFF55B0E9FF51AEE7FF4FABE7FF2D69B1FF040B142F3276B9FF8FC7
+          E6FF509FD4FF86BCE0FFC5EFFCFF78CAF2FF74C8F1FF72C5F0FF6FC4F0FF6DC2
+          EFFF69C0EEFF66BDEEFF63BBEDFF60B9EBFF448BC9FF122D4D81357CBCFFAFE3
+          F5FF75C8EDFF59A2D4FFDDF7FDFFDFF8FEFFDDF7FEFFDBF7FEFFD8F5FEFFD4F4
+          FDFFD0F2FDFFCCEFFCFFC7EDFBFFC1EBFBFF9ACBE9FF215187CB3882C1FFC7F5
+          FEFF97E5FCFF64BAE5FF4D9FD3FF4D9DD2FF4B9BD1FF4A99CFFF4998CFFF4896
+          CEFF4694CCFF4592CBFF3073B7FF3072B6FF2F71B5FF2A65A4EA3A88C5FFCDF7
+          FEFFA6ECFEFF9CE8FDFF93E4FBFF8EE1FBFF89DFFBFF86DEFAFF81DAFAFF7ED8
+          F9FF7BD7F9FF79D6F9FF2A6BB0FF000000140000000A000000073D8EC8FFD0F8
+          FEFFAEF0FEFFAAEEFEFFA6EDFEFFA5EBFDFFBBF2FDFFD4F9FEFFD5F9FEFFD3F8
+          FEFFD1F8FEFFCEF7FDFF3680BFFF0000000800000000000000003F92CBFFD3F9
+          FEFFB6F3FEFFB3F1FDFFB0F1FEFFB8EDFAFF4895CBFF3B8CC6FF3B8AC6FF3A89
+          C5FF3A88C5FF3A87C3FF2A6391C20000000500000000000000004197CEFFE2FC
+          FEFFE2FCFEFFE1FCFEFFD4F3FAFF458FBFEC040A0E1B00000006000000060000
+          000600000006000000060000000400000001000000000000000031739ABF429A
+          D0FF4299D0FF4299D0FF4297CFFF153244590000000200000000000000000000
+          0000000000000000000000000000000000000000000000000000000000020000
+          0003000000030000000400000003000000020000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000040000
+          00130000001E0000002000000020000000200000002100000021000000210000
+          002200000022000000220000002300000021000000160000000500000012281E
+          16CB37291EFF463A31FFBD8150FFBC7E4DFFB97949FFB67646FFB37141FFB06D
+          3DFFAD6839FFAB6535FF42362EFF3D3026FF241A13CE00000015000000193B2C
+          21FF685C54FF483C34FFE8C28BFFE7C088FFE6BD85FFE5BB81FFE4B87CFFE3B5
+          79FFE2B276FFE2B273FF443931FF51433AFF34261DFF0000001E000000183E2F
+          24FF6C6057FF4A3F37FFD9B27DFFD8B07BFFD7AE77FFD7AB74FFD6A970FFD5A6
+          6DFFD4A56AFFD4A268FF473B33FF5B4F47FF37291EFF0000001D000000164031
+          26FF6F645CFF4C4038FFFFFFFFFFF7F1EBFFF7F0EBFFF7F0EBFFF7EFEBFFF6EF
+          EAFFF6EFEAFFF6EFE9FF463B34FF5D5249FF3A2C21FF0000001B000000144434
+          29FF73675FFF4F443CFFFFFFFFFFF8F2EDFFF8F1EDFFF7F1EDFFF7F0EDFFF8F1
+          EBFFF7F0EBFFF7F0ECFF4A4037FF5F534BFF3D2E23FF00000019000000124637
+          2CFF776B63FF50453DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+          FFFFFFFFFFFFFFFFFFFF4E433BFF61544CFF403126FF0000001700000010493A
+          2FFF796E66FF50453DFF61564EFF60564EFF60554DFF5F544CFF5E544CFF5E53
+          4BFF5D524AFF5C5249FF5B5149FF61554DFF433429FF000000150000000E4C3D
+          32FF7C706AFF674E44FF654B42FF634A41FF61473FFF5F473EFF5C443CFF5B43
+          3AFF594139FF584038FF573F37FF63574FFF46362DFF000000130000000D4E3F
+          35FF80746DFF6B5248FFF4ECE6FFE9DACEFFE9D8CDFFE9D8CCFFE9D8CBFFE8D7
+          CAFFF3EAE2FFF3E9E2FF5A4139FF645850FF483A2FFF000000110000000B5142
+          36FF827770FF70564DFFF9F5F2FFF4EAE4FFF1E6DEFFEBDCD2FFE9D9CCFF4E41
+          3DFF60534CFFF3EAE3FF5D453CFF655951FF4C3D32FF0000000F000000095344
+          39FF857A73FF755A50FFFAF6F3FFF5EDE7FFF4EDE6FFF4ECE6FFEFE2DAFF493D
+          38FF5A4D46FFF4EBE4FF60483FFF655A52FF4F3F34FF0000000D000000075545
+          3AFF887D76FF795E54FFFAF6F4FFF5EEE9FFF5EDE7FFF4EDE7FFF4ECE6FF473A
+          36FF483D36FFE9D9CDFF644C43FF675A52FF514137FF0000000B000000065748
+          3DFF898079FF7C6157FFFAF7F4FFFAF6F4FFFAF6F4FFFAF6F3FFFAF6F3FFFAF5
+          F2FFF5EEE9FFF4ECE6FF695046FF82776FFF534439FF00000009000000034235
+          2EC058493DFF7F645AFF998178FF967F75FF937A72FF8E786DFF8B7269FF866E
+          64FF82695FFF7D645BFF6E544AFF56453BFF3F332BC200000005000000000000
+          0002000000030000000400000004000000040000000400000005000000050000
+          0005000000050000000500000006000000060000000400000001}
       end
       item
         Image.Data = {
           36040000424D3604000000000000360000002800000010000000100000000100
           2000000000000004000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
+          00010000000B08271977051D11770000000B0000000100000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          000604190F501D7951FB11643EFB03110A520000000700000000000000020000
+          000A0000000F000000100000001000000010000000110000001100000015020B
+          0739147048ED20B175FF18AA6DFF0F5233EC0108052D00000004000000094633
+          2CC160453BFF644A41FFB87D4EFFB97A4AFFB47444FFC69777FFC4A891FF3986
+          5FFF26B07BFF1EB97CFF1EB87BFF1AA26AFF0B442BD1000201160000000D6F53
+          47FF947869FF6A4F46FFD8B07BFFD7AE77FFD7AB74FFE5CFB4FF659674FF4BB5
+          91FF8FE5CCFF7FE1C3FF5CD4ABFF69D8B4FF40A581FF093420A50000000C7357
+          4AFF987D6EFF70564BFFFFFFFFFFF6EFEAFFF6EFE9FFF6F2EFFF208760FF2086
+          5DFF1F845DFF97EBD4FF77E1C3FF1A774FFF1A764EFF19754FFF0000000B785C
+          4EFF9D8273FF765C50FFFFFFFFFFF7F0EBFFF7F0EBFFFAF6F4FFF6F2F0FFEFEB
+          E9FF218B63FFA8F1DFFF8CEBD2FF1C7B55FF0000000F000000070000000A7C60
+          50FFA28777FF7B6154FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFA
+          FAFF229067FFC7F8EFFFC5F8EDFF1C8158FF0000000600000000000000097F63
+          54FFA78E7DFF977A6AFF967969FF957967FF84695CFF705548FF775C51FFBAAD
+          A7FF4D9B7BFF24946BFF23936AFF19694CBD0000000300000000000000088367
+          57FFAB9382FF634A41FF614740FF5E463DFF5C443CFF5B433BFF594139FF9485
+          7FFFAA9E9AFFBBACA8FFAFA29DFF0000000C000000000000000000000007866A
+          59FFAF9788FF674E44FFF3EAE4FFE7D5C8FFE7D4C6FFE6D3C5FFE6D3C5FFE6D3
+          C5FF594139FF795D54FF674C40FF00000009000000000000000000000006886D
+          5CFFB39C8CFF6B5248FFF4ECE6FFE9D9CDFFE8D7CAFF4B3D3AFF50433EFFE6D3
+          C5FF5D453CFF7B6056FF6B4F43FF000000080000000000000000000000058B70
+          5EFFB7A091FF70564DFFF6EFEAFFECDDD3FFEADAD0FF473A36FF473A36FFE7D4
+          C7FF604740FF7D6257FF6E5347FF000000070000000000000000000000048E72
+          60FFBBA595FF755A50FFF7F1ECFFF6F0EBFFF5EEE9FFF5EDE7FFF4ECE6FFF4EB
+          E4FF654B43FF7F6459FF72574AFF000000060000000000000000000000026A56
+          49BF8F7361FF795E54FF765D52FF745A50FF72584EFF70564CFF6E544AFF6B52
+          48FF6A5047FF795D4EFF574439C0000000040000000000000000000000010000
+          0002000000030000000300000003000000040000000400000004000000040000
+          0004000000040000000400000003000000010000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000030000
+          000B000000120000001300000013000000140000001400000014000000140000
+          0014000000140000001500000015000000140000000D000000030000000B1C11
+          6CC3261796FF271696FF261695FF261594FF251594FF251594FF241394FF2412
+          93FF241292FF231292FF231192FF231191FF190C68C50000000C0000000F2B1C
+          9BFF384AD3FF2637CEFF3042D2FF4254D9FF3646D4FF2437CCFF2434CCFF3444
+          D3FF3C4ED6FF2A3ACEFF202FC9FF1E2CC9FF251595FF000000120000000F3121
+          A0FF4356D7FF374BD5FF3F4BCBFF2827ABFF363CBEFF3E4FD6FF3D4ED5FF353A
+          BEFF2827ABFF3B45C9FF2F41D0FF2332CCFF291A99FF000000120000000E3529
+          A5FF4E62DBFF444FCCFF605DBDFFEDEDF8FF8B89CEFF383CBCFF383CBBFF8B89
+          CEFFEDEDF8FF5F5DBDFF3D47C9FF293ACEFF2D1F9EFF000000110000000D392F
+          ABFF596FDFFF2722A5FFECE7ECFFF5EBE4FFF8F2EEFF9491D1FF9491D1FFF8F1
+          EDFFF3E9E2FFECE6EBFF2721A5FF2F42D1FF3326A3FF0000000F0000000C4036
+          B1FF657AE2FF3135B7FF8070ADFFEBDBD3FFF4EAE4FFF7F2EDFFF8F1EDFFF4E9
+          E2FFEADAD1FF7F6FACFF2E31B6FF3549D5FF372CA9FF0000000E0000000B453D
+          B6FF6E83E5FF485EDCFF393BB7FF8A7FB9FFF6ECE7FFF5ECE6FFF4EBE5FFF6EB
+          E5FF897DB8FF3739B6FF4054D9FF3D51D7FF3C33AFFF0000000D0000000A4A44
+          BCFF788FE8FF6077E3FF4B4BBBFF9189C7FFF7EFE9FFF6EEE9FFF6EFE8FFF7ED
+          E8FF9087C5FF4949BAFF596FDFFF4359DAFF423AB4FF0000000C00000009504C
+          C2FF92A7EEFF5655BCFF8F89CAFFFBF6F4FFF7F1ECFFEDE1D9FFEDE0D9FFF7F0
+          EAFFFAF5F2FF8F89CAFF5453BCFF6278E2FF4943B9FF0000000B000000086B6A
+          D0FFADC1F4FF2A1E9BFFE5DADEFFF6EEEBFFEDDFDAFF816EA9FF816EA9FFEDDF
+          D8FFF4ECE7FFE5D9DCFF2A1D9BFF8B9EEBFF6563C9FF0000000A000000077577
+          D6FFB1C6F5FF6E77D1FF5747A1FFCCB6BCFF7A68A8FF4E4CB7FF4F4EB8FF7A68
+          A8FFCBB5BCFF5746A1FF6B75D0FF8EA1ECFF706ED0FF0000000900000006797B
+          DAFFB5CAF6FF93A7EEFF7079D2FF2E229BFF5453BBFF93A7EEFF93A7EEFF5555
+          BCFF2E219BFF6F77D1FF91A4EDFF90A3EDFF7475D4FF00000008000000057D80
+          DEFFB9CDF6FFB9CDF6FFB9CCF6FFB9CCF6FFB9CDF6FFB8CCF6FFB8CCF6FFB7CC
+          F6FFB7CBF6FFB6CBF6FFB5C9F6FFB5C9F6FF787AD8FF00000006000000036062
+          A6C08184E1FF8183E0FF8083E0FF7F83DFFF7F83DFFF7F82DFFF7E81DFFF7E81
+          DEFF7D81DEFF7D80DEFF7D7FDEFF7C7FDDFF5C5EA3C100000004000000000000
+          0002000000030000000400000004000000040000000400000004000000040000
+          0004000000040000000400000005000000050000000300000001}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000252525FF252525FF252525FF252525FF2525
-          25FF252525FF252525FF252525FF252525FF252525FF00000000000000000000
-          0000000000000000000000000000252525FF0000000000000000000000000000
-          000000000000000000000000000000000000252525FF0000000000000000008D
-          DEFF008DDEFF008DDEFF00476F80252525FF00000000252525FF252525FF2525
-          25FF252525FF252525FF252525FF00000000252525FF0000000000000000008D
-          DEFF000000000000000000000000252525FF0000000000000000000000000000
-          000000000000000000000000000000000000252525FF0000000000000000008D
-          DEFF00000000008DDEFF00476F80252525FF00000000252525FF252525FF2525
-          25FF252525FF252525FF252525FF00000000252525FF0000000000000000008D
-          DEFF000000000000000000000000252525FF0000000000000000000000000000
-          000000000000000000000000000000000000252525FF0000000000000000008D
-          DEFF00000000008DDEFF00476F80252525FF00000000252525FF252525FF2525
-          25FF252525FF252525FF252525FF00000000252525FF0000000000000000008D
-          DEFF000000000000000000000000252525FF0000000000000000000000000000
-          00000000000000000000000000000202020E252525FF0000000000000000008D
-          DEFF00000000008DDEFF00476F80252525FF00000000252525FF252525FF2525
-          25FF00000000252525FF252525FF252525FF232323F30000000000000000008D
-          DEFF000000000000000000000000252525FF0000000000000000000000000000
-          000000000000252525FF05050520202020DF111111760000000000000000008D
-          DEFF00000000008DDEFF00476F80252525FF0000000000000000000000000000
-          00000202020E252525FF202020DF13131380000000000000000000000000008D
-          DEFF000000000000000000000000252525FF252525FF252525FF252525FF2525
-          25FF252525FF232323F31111117600000000000000000000000000000000008D
-          DEFF0000000000000000000000000000000000080C0E00476F8000476F800012
-          1C2000000000000000000000000000000000000000000000000000000000008D
-          DEFF008DDEFF008DDEFF008DDEFF008DDEFF008DDEFF0086D4F3004167760000
           0000000000000000000000000000000000000000000000000000000000000000
+          00040000000F0000000F00000007000000010000000000000000000000000000
           0000000000000000000000000000000000000000000000000000000000000000
+          000EB0683FFF834324E131190D6A000000110000000600000001000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0011B37045FFDEAF77FFB47247FF773C20D2201009500000000F000000050000
+          0001000000000000000000000000000000000000000000000000000000000000
+          0010B6764BFFECC38FFFE8BA7DFFD8A66FFFAD693FFF6A371CBE170C06400000
+          000D000000040000000100000000000000000000000000000000000000000000
+          000FBB7C51FFEFCD9CFFE9BB7FFFE8BC80FFEABE83FFD39D6CFFA7623BFD5B30
+          1AA90D07032C0000000B00000003000000010000000000000000000000000000
+          000EBE8257FFF1D5ACFFEBC087FFE9BF85FFE8BD81FFE9BF82FFE9C087FFCD97
+          65FF9F5933F74E29169408040221000000090000000200000000000000000000
+          000DC0855EFFF5DEBBFFEDC68FFFEDC58DFFEBC289FFEAC084FFE8BC80FFE9BD
+          82FFE8BB87FFC78E60FF965430EE4223137E0000000900000000000000000000
+          000CC59067FFF9E9CFFFF3D4A3FFF2D09FFFF0CC98FFEEC890FFEBC088FFE9BE
+          83FFEAC38AFFECC693FFE3B889FFA65B33FF0000000D00000000000000000000
+          000BC9956EFFFAEFDAFFF4DAAEFFF5D8AAFFF2D5A6FFF1D1A1FFF1D0A2FFF1D2
+          A8FFEDCDA1FFCC956BFF9A5D39E33A2314680000000700000000000000000000
+          000ACC9B73FFFCF4E3FFF8E0B7FFF6DDB4FFF6DEB4FFF7E2C0FFF6E1C1FFD9B2
+          8CFFB0754EF14D301F7E04030216000000060000000100000000000000000000
+          0009CDA077FFFEF7E9FFFBE7C2FFFBEBCCFFFBEFD6FFE3C5A7FFC08B65F96544
+          2E960B07051E0000000600000002000000000000000000000000000000000000
+          0008D0A47CFFFEFBEFFFFDF4E0FFEEDAC1FFD1A07DFF78553CA717100B2C0000
+          0007000000020000000000000000000000000000000000000000000000000000
+          0007D2A77FFFF5EADBFFD8B291FF916D50BE261C143C00000007000000020000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0005D5AA83FFA98462D3372B204F000000070000000200000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0001000000040000000500000002000000010000000000000000000000000000
           0000000000000000000000000000000000000000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0000000000000000000000000002000000070000000C0000000F0000000F0000
+          000C000000070000000200000000000000000000000000000000000000000000
+          000000000001000000060403021A37211D8354322BB86F4339E56E4339E55633
+          2CBB37211D830503021B00000006000000010000000000000000000000000000
+          0001000000081C110F4B70453CE0B4958EFFDFD2CFFFF8F5F4FFF8F5F4FFDFD2
+          CFFFB4958EFF70453CE01D12104F000000090000000100000000000000010000
+          0006291A165F91655AFDDED0CCFFDFBFAEFFC28462FFB1673DFFB1653DFFBF82
+          60FFDFBEACFFDED0CCFF91645AFD281A165F0000000600000001000000020A07
+          062285594EF0E5D9D7FFCB9676FFB4683BFFE8C3B0FFFFEAE0FFFFE7E0FFF3D5
+          C7FFB16338FFCA9274FFE5D9D7FF85584EF00A0706230000000200000006442E
+          2885BFA29BFFE4C7B5FFBC7044FFB96D41FFBC7A55FFFFEAE3FFFFEAE3FFD09C
+          80FFB4673BFFB96B3FFFE3C4B2FFBFA29BFF442E298600000006000000097A54
+          4BD1E7DCD9FFCE9674FFBF7548FFBC7144FFBA754EFFFFEDE7FFFFEDE7FFCC96
+          78FFB86D40FFBB7043FFCC916EFFE7DCD9FF7A544BD10000000A0000000A9469
+          5EEDF7F3F2FFC7875DFFC68657FFC48355FFDBB299FFFFF0EAFFFFF0E9FFD09E
+          80FFC07C4EFFC07B4EFFC37F56FFF7F3F2FF94695EED0000000B000000099A70
+          63EDF8F4F3FFD5A176FFD1996BFFCC9162FFD6A98CFFEED6C8FFFFF0EDFFD5A6
+          89FFC6895AFFC98C5DFFCD9268FFF8F4F3FF987064ED0000000A000000078664
+          5ACCECE1DEFFE0B895FFD5A072FFD19B6CFFC68A5CFFBD7C4EFFBE7D4FFFC88B
+          5DFFCF9365FFCE9465FFDAAC88FFECE2DEFF86645ACD0000000800000004523E
+          387FD1B6AEFFF4E5D7FFDAA879FFD29D6EFFE5C6B1FFFFF6F3FFEAD0C2FFCC94
+          69FFD29B6CFFD39B6CFFF1E0D3FFD1B6AEFF523E388000000004000000010D0A
+          091AAD8679EFEFE6E3FFEFD9C3FFD7A677FFD6AD8CFFF9EEE7FFFFF8F4FFD4A4
+          7DFFD5A172FFEDD4BEFFEFE6E3FFAE8679EF0D0A091B00000001000000000000
+          0003362A2651C29B8DFCEBDED9FFF9F2ECFFE9D0BAFFD8AC86FFD7AB86FFEAD0
+          BAFFFAF4EDFFEBDDD9FFC29A8DFC362A26520000000300000000000000000000
+          0000000000032A211E3EA78477DBD9BFB5FFEBDDD8FFF7F2F0FFF7F2F0FFEBDD
+          D8FFD9BFB5FFA78377DB2A211E3F000000030000000100000000000000000000
+          000000000000000000020706050F58464075856B60ADAF8E7FE0AF8E7FE0876C
+          62B057473F760706050F00000002000000000000000000000000000000000000
+          0000000000000000000000000001000000020000000300000004000000040000
+          0003000000020000000100000000000000000000000000000000}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000090000
+          000D0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
+          000F0000000F00000010000000100000000F0000000A000000021D5A42C0287D
+          5AFF277D5AFF277C5AFF277C59FF277B59FF277B58FF277A58FF267A58FF2678
+          57FF267A56FF267856FF267755FF257756FF1B563DC1000000092B825FFF53C8
+          A2FF51C7A0FF50C7A0FF4EC69FFF4DC59DFF4CC59DFF4AC49BFF49C39BFF47C3
+          99FF45C298FF45C198FF43C096FF42C095FF277B59FF0000000D2C8664FF5DCC
+          AAFF43C398FF42C299FF42C298FF43C298FF65CFADFF74D5B6FF4CC59DFF40C0
+          95FF3EC095FF3EBF94FF3DBF94FF4BC49CFF297F5CFF0000000E2F8B68FF67D1
+          B0FF48C69EFF48C59CFF47C59CFF5FCDABFF25825DFF00673BFF51BA96FF44C3
+          9AFF43C399FF43C298FF42C298FF54C9A4FF2B8360FF0000000D31906DFF71D5
+          B8FF4DC9A3FF4DC9A1FF60CFADFF3B9372FF87AF9DFFB1CFC1FF26875FFF53CA
+          A5FF48C69EFF47C59DFF47C59DFF5DCEABFF2D8865FF0000000C339671FF7ADA
+          BFFF52CCA7FF60D1AFFF4BA183FF699782FFF8F1EEFFF9F3EEFF357F5DFF5CBD
+          9DFF4EC9A2FF4CC9A2FF4CC8A1FF67D2B2FF2F8C69FF0000000B359A76FF83DE
+          C6FF59D0ADFF5AB094FF4F826AFFF0E9E6FFC0C3B5FFEFE3DDFFCEDDD4FF1C74
+          4FFF69D5B4FF53CDA7FF52CCA6FF72D7B9FF32926EFF0000000B39A07CFF8CE2
+          CBFF5FD4B3FF0D6742FFD2D2CBFF6A8F77FF136A43FF73967EFFF1E8E3FF72A2
+          8BFF4CA384FF6AD9BAFF5AD2AFFF7BDBC0FF339773FF0000000A3AA681FF97E9
+          D5FF69DEBFFF52BC9DFF0B6942FF389B79FF66DABAFF349773FF73967EFFF0EA
+          E7FF4F886CFF60B89BFF67DABAFF87E2CAFF359C78FF000000093FAD88FF9FEC
+          DAFF6DE1C3FF6DE1C3FF6DE0C2FF6CDFC1FF6BE0C1FF6BDFC0FF2C8966FF698E
+          76FFE6E1DCFF176B47FF5FD1B2FF90E7D1FF3CA481FF0000000842B28DFFA5EE
+          DDFF70E4C7FF70E4C6FF70E3C6FF6FE3C5FF6FE2C5FF6EE2C4FF6EE2C4FF3C9E
+          7DFF1F6D4AFF2D8965FF6CE0C2FF97EAD6FF3DAA86FF0000000744B691FFAAEF
+          E0FF73E6C9FF73E6C9FF72E5C9FF72E5C8FF71E5C8FF71E5C8FF71E4C7FF71E4
+          C7FF64D3B5FF6DDFC2FF6FE3C6FF9EECDAFF41AF8BFF0000000746B994FFAEF1
+          E2FF74E8CBFF74E7CBFF74E7CBFF74E7CAFF74E6CAFF73E6CAFF73E6CAFF73E6
+          C9FF73E5C9FF72E5C9FF72E5C8FFA4EEDDFF42B38EFF0000000647BC97FFC5F4
+          EBFFC5F4EBFFC5F4EBFFC5F4EBFFC5F4EBFFC5F4EBFFC5F4EBFFC5F4EBFFC5F4
+          EBFFC5F4EBFFC5F4EBFFC5F4EBFFC5F4EBFF44B792FF00000005348B70BF47BC
+          97FF47BC97FF47BC97FF47BC97FF47BC97FF47BC97FF47BC97FF47BB97FF47BB
+          97FF47BB96FF46BB96FF47BA95FF45BA94FF338A6EC000000003}
+      end
+      item
+        Image.Data = {
+          36040000424D3604000000000000360000002800000010000000100000000100
+          2000000000000004000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000070000
+          000B0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000
+          000C0000000C0000000D0000000D0000000C0000000800000002825B4DBEB57E
+          6CFFB47D6BFFB47C6AFFB47C6AFFB37B6AFFB37B69FFB37B69FFB27A68FFB27A
+          67FFB27967FFB17967FFB27866FFB17866FF7F5549BF00000007B88170FFFCF8
+          F6FFFCF7F5FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F3FFFBF6F3FFFAF5F3FFFBF5
+          F2FFFBF5F2FFFAF5F1FFFAF5F1FFFAF4F1FFB27968FF0000000BBA8573FFFCF9
+          F7FFF8EFEAFFF8EFEAFFF8EFE9FFF8EFE9FFF7EFE9FFF8EFE9FFF7EEE8FFF7EE
+          E7FFF7EEE7FFF7EDE7FFF7EDE6FFFBF6F2FFB47C6AFF0000000BBC8877FFFDFB
+          F9FFF9F1EDFF4F3D36FFF9F1EBFFF8F0EBFFF8F0EBFFF9F0EAFFF8F0EAFFF8EF
+          EAFFF8EFEAFF4E3B34FFF7EFE9FFFBF7F5FFB67F6DFF0000000ABF8B7AFFFDFB
+          FAFFF9F3EFFF59463DFFC3B8B3FF513E37FFD9D0CBFF503E37FFC2B7B1FF4F3D
+          36FFD9CEC9FF57443BFFF8F0EBFFFCF9F7FFB98271FF00000009C18F7EFFFEFC
+          FCFFFAF4F1FF5B483EFFC7BCB6FF5B473EFFDCD3CDFF59463DFFC6BBB6FF5946
+          3DFFDBD2CCFF59463CFFF9F1EDFFFDFAF8FFBB8675FF00000008C49482FFFEFD
+          FDFFFBF6F3FF5D493FFFC8BEB9FF5C483EFFDDD4D0FF5C473EFFC8BCB7FF5B47
+          3DFFDCD3CEFF5A463DFFF9F3F0FFFDFBFAFFBD8A78FF00000008C69786FFFEFE
+          FDFFFCF7F5FF5E4A40FFC9BFBBFF5D4A3FFFDDD5D2FF5D493FFFC8BEB9FF5C49
+          3FFFDDD5D0FF5C493EFFFAF4F1FFFEFCFBFFBF8D7CFF00000007C89B8AFFFFFE
+          FEFFFCF8F7FF5F4C41FFCAC0BCFF5F4B41FFDED7D4FF5E4B40FFCAC0BBFF5E4A
+          40FFDDD6D2FF5E4A40FFFBF7F4FFFEFDFCFFC39180FF00000006CB9E8DFFFFFF
+          FEFFFCFAF9FFFDFAF9FFFCF9F8FFFDF9F7FFFCF9F8FFFCF9F7FFFCF9F7FFFDF8
+          F7FFFCF8F6FFFCF8F6FFFCF8F6FFFEFEFDFFC59484FF00000006CDA191FFFFFF
+          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFEFFFFFEFEFFFFFEFEFFFFFE
+          FEFFFFFEFEFFFFFEFEFFFFFEFEFFFFFEFEFFC89987FF000000059A796DBFCFA3
+          93FFCEA393FFCEA292FFCDA292FFCDA191FFCDA090FFCDA08FFFCC9F8FFFCB9F
+          8EFFCC9E8EFFCB9D8DFFCB9D8CFFCA9D8CFF967467C000000003000000020000
+          0003000000030000000300000003000000030000000300000003000000030000
+          0003000000040000000400000004000000030000000200000001000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000}
+      end>
+  end
+  object PopupJsonContent: TdxBarPopupMenu
+    BarManager = dxBarManager
+    ItemLinks = <
+      item
+        Visible = True
+        ItemName = 'pmnuUndoJsonContent'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuRedoJsonContent'
+      end
+      item
+        BeginGroup = True
+        Visible = True
+        ItemName = 'pmnuCutJsonContent'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuCopyJsonContent'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuPasteJsonContent'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuSelectAll'
+      end
+      item
+        BeginGroup = True
+        Visible = True
+        ItemName = 'pmnuFormatCodeJsonContent'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuCompactJson'
       end>
+    UseOwnFont = False
+    OnPopup = PopupJsonContentPopup
+    Left = 445
+    Top = 546
   end
 end

+ 216 - 43
src/_frmMain.pas

@@ -27,7 +27,6 @@ type
     dxStatusBar: TdxStatusBar;
     dxBarManager: TdxBarManager;
     dxBarManagerBar1: TdxBar;
-    dxBarButton1: TdxBarButton;
     dxBarSubItem3: TdxBarSubItem;
     dxBarButton3: TdxBarButton;
     btnSave: TdxBarButton;
@@ -44,16 +43,10 @@ type
     cxPageControl1: TcxPageControl;
     tabContent: TcxTabSheet;
     tabHeaders: TcxTabSheet;
-    EditorHeaders: TBCEditor;
+    EditorResponseHeaders: TBCEditor;
     Panel2: TPanel;
     dxBarSubItem4: TdxBarSubItem;
     tbbtnStayOnTop: TdxBarButton;
-    PopupMenuEditorContent: TPopupMenu;
-    pbtnFormatCode: TMenuItem;
-    Copy1: TMenuItem;
-    Cut1: TMenuItem;
-    Paste1: TMenuItem;
-    N1: TMenuItem;
     edtBaseURL: TcxTextEdit;
     Label3: TLabel;
     btnAdd: TcxButton;
@@ -67,8 +60,8 @@ type
     EditorURLParams: TBCEditor;
     Label6: TLabel;
     comboMethod: TcxComboBox;
-    cxPageControl2: TcxPageControl;
-    cxTabSheet1: TcxTabSheet;
+    PageControlParams: TcxPageControl;
+    tabURLParams: TcxTabSheet;
     cxTabSheet2: TcxTabSheet;
     Panel3: TPanel;
     EditorExtraHeaders: TBCEditor;
@@ -88,6 +81,16 @@ type
     Label10: TLabel;
     dxBarButton2: TdxBarButton;
     tbbtnAutoSaveProject: TdxBarButton;
+    PopupJsonContent: TdxBarPopupMenu;
+    pmnuCutJsonContent: TdxBarButton;
+    pmnuCopyJsonContent: TdxBarButton;
+    pmnuPasteJsonContent: TdxBarButton;
+    pmnuFormatCodeJsonContent: TdxBarButton;
+    pmnuUndoJsonContent: TdxBarButton;
+    pmnuRedoJsonContent: TdxBarButton;
+    pmnuSelectAll: TdxBarButton;
+    pmnuCompactJson: TdxBarButton;
+    btnCopyFullURL: TcxButton;
     procedure FormShow(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
@@ -101,9 +104,9 @@ type
     procedure btnRunClick(Sender: TObject);
     procedure FormResize(Sender: TObject);
     procedure tbbtnStayOnTopClick(Sender: TObject);
-    procedure Cut1Click(Sender: TObject);
-    procedure Paste1Click(Sender: TObject);
-    procedure Copy1Click(Sender: TObject);
+    procedure pmnuCutJsonContentClick(Sender: TObject);
+    procedure pmnuPasteJsonContentClick(Sender: TObject);
+    procedure pmnuCopyJsonContentClick(Sender: TObject);
     procedure btnAddClick(Sender: TObject);
     procedure btnDeleteClick(Sender: TObject);
     procedure comboPresetsPropertiesChange(Sender: TObject);
@@ -116,7 +119,23 @@ type
     procedure tbbtnAutoOpenLastUsedClick(Sender: TObject);
     procedure dxBarButton2Click(Sender: TObject);
     procedure tbbtnAutoSaveProjectClick(Sender: TObject);
-    procedure pbtnFormatCodeClick(Sender: TObject);
+    procedure pmnuFormatCodeJsonContentClick(Sender: TObject);
+    procedure EditorContentMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure EditorPostDataMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure PopupJsonContentPopup(Sender: TObject);
+    procedure pmnuUndoJsonContentClick(Sender: TObject);
+    procedure pmnuRedoJsonContentClick(Sender: TObject);
+    procedure pmnuSelectAllClick(Sender: TObject);
+    procedure pmnuCompactJsonClick(Sender: TObject);
+    procedure EditorResponseHeadersMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure EditorURLParamsMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure EditorExtraHeadersMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure btnCopyFullURLClick(Sender: TObject);
   private
     FMainConfig: TJSONConfig;
     FProjectConfig: TJSONConfig;
@@ -124,6 +143,7 @@ type
     FActivePreset: string;
     FIsTempProjectLoaded: Boolean;
     FTempProjectFile: string;
+    FActiveEditor: TBCEditor;
     function GetTempProjectFile: string;
     procedure UpdateFullURL;
     procedure LoadProject;
@@ -145,7 +165,7 @@ implementation
 
 {$R *.dfm}
 
-uses System.NetEncoding, System.UITypes, _EncryptStr, JsonDataObjects;
+uses System.NetEncoding, System.UITypes, _EncryptStr, JsonDataObjects, Clipbrd, IdGlobal;
 
 procedure TfrmMain.tbbtnRunClick(Sender: TObject);
 begin
@@ -273,6 +293,11 @@ begin
   end;
 end;
 
+procedure TfrmMain.btnCopyFullURLClick(Sender: TObject);
+begin
+  Clipboard.SetTextBuf(PChar(edtFullURL.Text));
+end;
+
 procedure TfrmMain.btnCopyPresetClick(Sender: TObject);
 var
   idx: Integer;
@@ -302,6 +327,11 @@ end;
 procedure TfrmMain.comboMethodPropertiesChange(Sender: TObject);
 begin
   tabPostData.TabVisible := comboMethod.ItemIndex = 1;
+
+  if (comboMethod.ItemIndex = 0) and (PageControlParams.ActivePage = nil) then
+  begin
+    PageControlParams.ActivePage := tabURLParams;
+  end;
 end;
 
 procedure TfrmMain.comboPresetsPropertiesChange(Sender: TObject);
@@ -315,14 +345,64 @@ begin
   LoadPreset;
 end;
 
-procedure TfrmMain.Copy1Click(Sender: TObject);
+procedure TfrmMain.pmnuCompactJsonClick(Sender: TObject);
+var
+  ja: TJsonArray;
+  jo: TJsonObject;
+begin
+  if FActiveEditor.Lines.Count > 0 then
+  begin
+    if Length(FActiveEditor.Lines[0]) > 0 then
+    begin
+      if FActiveEditor.Lines[0][1] = '{' then
+      begin
+        jo := TJsonObject.Create;
+        try
+          try
+            jo.FromJSON(FActiveEditor.Lines.Text);
+          except
+            on E: Exception do
+            begin
+              MessageDlg(E.Message, mtError, [mbOK], 0);
+            end;
+          end;
+          FActiveEditor.Lines.Clear;
+          FActiveEditor.Lines.Text := jo.ToJSON(True);
+        finally
+          jo.Free;
+        end;
+      end
+      else
+      if FActiveEditor.Lines[0][1] = '[' then
+      begin
+        ja := TJsonArray.Create;
+        try
+          try
+            ja.FromJSON(FActiveEditor.Lines.Text);
+          except
+            on E: Exception do
+            begin
+              MessageDlg(E.Message, mtError, [mbOK], 0);
+            end;
+          end;
+          FActiveEditor.Lines.Clear;
+          FActiveEditor.Lines.Text := ja.ToJSON(True);
+        finally
+          ja.Free;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmMain.pmnuCopyJsonContentClick(Sender: TObject);
 begin
-  EditorContent.CopyToClipboard;
+  FActiveEditor.CopyToClipboard;
 end;
 
-procedure TfrmMain.Cut1Click(Sender: TObject);
+procedure TfrmMain.pmnuCutJsonContentClick(Sender: TObject);
 begin
-  EditorContent.CutToClipboard;
+  FActiveEditor.CutToClipboard;
 end;
 
 procedure TfrmMain.DeletePreset(const AID: Integer);
@@ -348,11 +428,61 @@ begin
   btnSave.Enabled := not FIsTempProjectLoaded;
 end;
 
+procedure TfrmMain.EditorContentMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = mbRight then
+  begin
+    FActiveEditor := EditorContent;
+    PopupJsonContent.PopupFromCursorPos;
+  end;
+end;
+
+procedure TfrmMain.EditorExtraHeadersMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = mbRight then
+  begin
+    FActiveEditor := EditorExtraHeaders;
+    PopupJsonContent.PopupFromCursorPos;
+  end;
+end;
+
+procedure TfrmMain.EditorResponseHeadersMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = mbRight then
+  begin
+    FActiveEditor := EditorResponseHeaders;
+    PopupJsonContent.PopupFromCursorPos;
+  end;
+end;
+
+procedure TfrmMain.EditorPostDataMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = mbRight then
+  begin
+    FActiveEditor := EditorPostData;
+    PopupJsonContent.PopupFromCursorPos;
+  end;
+end;
+
 procedure TfrmMain.EditorURLParamsChange(Sender: TObject);
 begin
   UpdateFullURL;
 end;
 
+procedure TfrmMain.EditorURLParamsMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = mbRight then
+  begin
+    FActiveEditor := EditorURLParams;
+    PopupJsonContent.PopupFromCursorPos;
+  end;
+end;
+
 procedure TfrmMain.edtBaseURLPropertiesChange(Sender: TObject);
 begin
   UpdateFullURL;
@@ -405,8 +535,8 @@ begin
   EditorContent.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\JSON.json');
   EditorContent.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
 
-  EditorHeaders.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Headers.json');
-  EditorHeaders.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
+  EditorResponseHeaders.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Headers.json');
+  EditorResponseHeaders.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
 
   EditorURLParams.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Params.json');
   EditorURLParams.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
@@ -414,6 +544,11 @@ begin
   EditorExtraHeaders.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Params.json');
   EditorExtraHeaders.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
 
+  EditorPostData.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\JSON.json');
+  EditorPostData.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
+
+  FActiveEditor := nil;
+
 
   if ParamStr(1) <> '' then
   begin
@@ -471,7 +606,7 @@ begin
   tbbtnAutoSaveProject.Down := FMainConfig.ReadBool('Project', 'AutoSaveProject', True);
 
   EditorContent.Lines.Clear;
-  EditorHeaders.Lines.Clear;
+  EditorResponseHeaders.Lines.Clear;
 
   dxStatusBar.Panels[1].Text := '';
 end;
@@ -548,53 +683,85 @@ begin
   end;
 end;
 
-procedure TfrmMain.Paste1Click(Sender: TObject);
+procedure TfrmMain.pmnuPasteJsonContentClick(Sender: TObject);
 begin
-  EditorContent.PasteFromClipboard;
+  FActiveEditor.PasteFromClipboard;
 end;
 
-procedure TfrmMain.pbtnFormatCodeClick(Sender: TObject);
+procedure TfrmMain.pmnuRedoJsonContentClick(Sender: TObject);
+begin
+  FActiveEditor.DoRedo;
+end;
+
+procedure TfrmMain.pmnuSelectAllClick(Sender: TObject);
+begin
+  FActiveEditor.SelectAll;
+end;
+
+procedure TfrmMain.pmnuUndoJsonContentClick(Sender: TObject);
+begin
+  FActiveEditor.DoUndo;
+end;
+
+procedure TfrmMain.PopupJsonContentPopup(Sender: TObject);
+begin
+  pmnuPasteJsonContent.Enabled := FActiveEditor.CanPaste;
+  pmnuUndoJsonContent.Enabled := FActiveEditor.CanUndo;
+  pmnuRedoJsonContent.Enabled := FActiveEditor.CanRedo;
+  if FActiveEditor.Highlighter.Name = 'JSON' then
+  begin
+    pmnuFormatCodeJsonContent.Visible := ivAlways;
+    pmnuCompactJson.Visible := ivAlways;
+  end
+  else
+  begin
+    pmnuFormatCodeJsonContent.Visible := ivNever;
+    pmnuCompactJson.Visible := ivNever
+  end;
+end;
+
+procedure TfrmMain.pmnuFormatCodeJsonContentClick(Sender: TObject);
 var
   ja: TJsonArray;
   jo: TJsonObject;
 begin
-  if EditorContent.Lines.Count > 0 then
+  if FActiveEditor.Lines.Count > 0 then
   begin
-    if Length(EditorContent.Lines[0]) > 0 then
+    if Length(FActiveEditor.Lines[0]) > 0 then
     begin
-      if EditorContent.Lines[0][1] = '{' then
+      if FActiveEditor.Lines[0][1] = '{' then
       begin
         jo := TJsonObject.Create;
         try
           try
-            jo.FromJSON(EditorContent.Lines.Text);
+            jo.FromJSON(FActiveEditor.Lines.Text);
           except
             on E: Exception do
             begin
               MessageDlg(E.Message, mtError, [mbOK], 0);
             end;
           end;
-          EditorContent.Lines.Clear;
-          jo.SaveToLines(EditorContent.Lines);
+          FActiveEditor.Lines.Clear;
+          FActiveEditor.Lines.Text := jo.ToJSON(False);
         finally
           jo.Free;
         end;
       end
       else
-      if EditorContent.Lines[0][1] = '[' then
+      if FActiveEditor.Lines[0][1] = '[' then
       begin
         ja := TJsonArray.Create;
         try
           try
-            ja.FromJSON(EditorContent.Lines.Text);
+            ja.FromJSON(FActiveEditor.Lines.Text);
           except
             on E: Exception do
             begin
               MessageDlg(E.Message, mtError, [mbOK], 0);
             end;
           end;
-          EditorContent.Lines.Clear;
-          ja.SaveToLines(EditorContent.Lines);
+          FActiveEditor.Lines.Clear;
+          FActiveEditor.Lines.Text := ja.ToJSON(False);
         finally
           ja.Free;
         end;
@@ -607,9 +774,10 @@ procedure TfrmMain.Run;
 var
   dmy: string;
   tick: Cardinal;
+  strstream: TStringStream;
 begin
   EditorContent.Lines.Clear;
-  EditorHeaders.Lines.Clear;
+  EditorResponseHeaders.Lines.Clear;
 
   tick := GetTickCount;
   try
@@ -638,19 +806,24 @@ begin
     if comboMethod.ItemIndex = 1 then
     begin
       // POST
-      HTTP.Request.ContentType := comboPostContentType.Text;
+      strstream := TStringStream.Create(EditorPostData.Lines.Text, TEncoding.UTF8);
       try
-        dmy := HTTP.Post(edtFullURL.Text, EditorPostData.Lines);
-      except
-        on E: Exception do
-        begin
-          MessageDlg(E.Message, mtError, [mbOK], 0);
+        HTTP.Request.ContentType := comboPostContentType.Text;
+        try
+          dmy := HTTP.Post(edtFullURL.Text, strstream);
+        except
+          on E: Exception do
+          begin
+            MessageDlg(E.Message, mtError, [mbOK], 0);
+          end;
         end;
+      finally
+        strstream.Free;
       end;
     end;
 
     EditorContent.Lines.Text := dmy;
-    EditorHeaders.Lines.Text := HTTP.Response.RawHeaders.Text;
+    EditorResponseHeaders.Lines.Text := HTTP.Response.RawHeaders.Text;
   finally
     dxStatusBar.Panels[1].Text := FormatFloat('Response Time: 0, ms', GetTickCount - tick);
   end;

部分文件因为文件数量过多而无法显示