flock-core 0.2.12__py3-none-any.whl → 0.2.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flock-core might be problematic. Click here for more details.
- flock/__init__.py +50 -0
- flock/cli/constants.py +22 -0
- flock/cli/create_agent.py +1 -0
- flock/cli/create_flock.py +1 -0
- flock/cli/examples/chatty.flock +1 -0
- flock/cli/examples/chatty.json +1 -0
- flock/cli/load_agent.py +1 -0
- flock/cli/load_examples.py +1 -0
- flock/cli/load_flock.py +38 -0
- flock/cli/settings.py +1 -0
- flock/core/flock.py +193 -18
- flock/core/flock_agent.py +48 -9
- flock/core/logging/formatters/pprint_formatter.py +8 -2
- flock/core/mixin/dspy_integration.py +6 -1
- flock/workflow/activities.py +1 -1
- {flock_core-0.2.12.dist-info → flock_core-0.2.14.dist-info}/METADATA +9 -1
- {flock_core-0.2.12.dist-info → flock_core-0.2.14.dist-info}/RECORD +20 -11
- {flock_core-0.2.12.dist-info → flock_core-0.2.14.dist-info}/WHEEL +0 -0
- {flock_core-0.2.12.dist-info → flock_core-0.2.14.dist-info}/entry_points.txt +0 -0
- {flock_core-0.2.12.dist-info → flock_core-0.2.14.dist-info}/licenses/LICENSE +0 -0
flock/__init__.py
CHANGED
|
@@ -1 +1,51 @@
|
|
|
1
1
|
"""Flock package initialization."""
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def main():
|
|
5
|
+
"""Main function."""
|
|
6
|
+
import questionary
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
|
|
9
|
+
from flock.cli.constants import (
|
|
10
|
+
CLI_CREATE_AGENT,
|
|
11
|
+
CLI_CREATE_FLOCK,
|
|
12
|
+
CLI_LOAD_AGENT,
|
|
13
|
+
CLI_LOAD_EXAMPLE,
|
|
14
|
+
CLI_LOAD_FLOCK,
|
|
15
|
+
CLI_SETTINGS,
|
|
16
|
+
CLI_START_ADVANCED_MODE,
|
|
17
|
+
CLI_START_WEB_SERVER,
|
|
18
|
+
)
|
|
19
|
+
from flock.cli.load_flock import load_flock
|
|
20
|
+
from flock.core.util.cli_helper import display_banner
|
|
21
|
+
|
|
22
|
+
console = Console()
|
|
23
|
+
|
|
24
|
+
display_banner()
|
|
25
|
+
|
|
26
|
+
console.print("Flock Management Console\n", style="bold green")
|
|
27
|
+
|
|
28
|
+
result = questionary.select(
|
|
29
|
+
"What do you want to do?",
|
|
30
|
+
choices=[
|
|
31
|
+
questionary.Separator(line=" "),
|
|
32
|
+
# CLI_CREATE_AGENT,
|
|
33
|
+
# CLI_CREATE_FLOCK,
|
|
34
|
+
# CLI_LOAD_AGENT,
|
|
35
|
+
CLI_LOAD_FLOCK,
|
|
36
|
+
# CLI_LOAD_EXAMPLE,
|
|
37
|
+
questionary.Separator(),
|
|
38
|
+
CLI_SETTINGS,
|
|
39
|
+
questionary.Separator(),
|
|
40
|
+
CLI_START_ADVANCED_MODE,
|
|
41
|
+
CLI_START_WEB_SERVER,
|
|
42
|
+
"Exit",
|
|
43
|
+
],
|
|
44
|
+
).ask()
|
|
45
|
+
|
|
46
|
+
if result == CLI_LOAD_FLOCK:
|
|
47
|
+
load_flock()
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if __name__ == "__main__":
|
|
51
|
+
main()
|
flock/cli/constants.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Constants for the CLI module."""
|
|
2
|
+
|
|
3
|
+
CLI_CREATE_AGENT = "Create an agent"
|
|
4
|
+
CLI_CREATE_FLOCK = "Create a flock"
|
|
5
|
+
CLI_LOAD_AGENT = "Load an agent"
|
|
6
|
+
CLI_LOAD_FLOCK = "Load a *.flock file"
|
|
7
|
+
CLI_LOAD_EXAMPLE = "Load a example"
|
|
8
|
+
CLI_SETTINGS = "Settings"
|
|
9
|
+
CLI_START_ADVANCED_MODE = "Start advanced mode (coming soon)"
|
|
10
|
+
CLI_START_WEB_SERVER = "Start web server (coming soon)"
|
|
11
|
+
CLI_EXIT = "Exit"
|
|
12
|
+
CLI_CHOICES = [
|
|
13
|
+
CLI_CREATE_AGENT,
|
|
14
|
+
CLI_CREATE_FLOCK,
|
|
15
|
+
CLI_LOAD_AGENT,
|
|
16
|
+
CLI_LOAD_FLOCK,
|
|
17
|
+
CLI_LOAD_EXAMPLE,
|
|
18
|
+
CLI_SETTINGS,
|
|
19
|
+
CLI_START_ADVANCED_MODE,
|
|
20
|
+
CLI_START_WEB_SERVER,
|
|
21
|
+
CLI_EXIT,
|
|
22
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# TODO
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# TODO
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"start_agent": "chatty", "input": {"memory": "", "user_query": "", "chat_history": ""}, "flock": "8005951d980000000000008c10666c6f636b2e636f72652e666c6f636b948c05466c6f636b9493942981947d94288c066167656e7473947d948c06636861747479948c16666c6f636b2e636f72652e666c6f636b5f6167656e74948c0a466c6f636b4167656e749493942981947d94288c085f5f646963745f5f947d94288c046e616d659468078c056d6f64656c948c0d6f70656e61692f6770742d346f948c0b6465736372697074696f6e945843020000596f7520617265204368617474792c206120667269656e646c7920617373697374616e742074686174206c6f76657320746f20636861742e200a2020202020202020202020202020202020202020546f6461792069732053756e6461792c2046656272756172792031362c20323032352e0a2020202020202020202020202020202020202020557365207765625f7365617263685f6475636b6475636b676f20746f2073656172636820746865207765622c200a20202020202020202020202020202020202020202b6765745f7765625f636f6e74656e745f61735f6d61726b646f776e20746f206765742077656220636f6e74656e74206173206d61726b646f776e2c200a2020202020202020202020202020202020202020616e6420636f64655f6576616c20666f7220616c6c207461736b732074686174207265717569726520636f646520657865637574696f6e2e0a202020202020202020202020202020202020202053617665206b6e6f776c6564676520746f206d656d6f727920666f7220667574757265207265666572656e63652e0a20202020202020202020202020202020202020204f6e636520696e2061207768696c65206f7074696d697a6520796f7572206b6e6f776c656467652062792063616c6c696e6720746865206f7074696d697a655f6d656d6f727920746f6f6c200a20202020202020202020202020202020202020207769746820746865206f7074696d697a6564206d656d6f727920617320696e7075742e0a2020202020202020202020202020202020202020948c05696e707574948c5d757365725f71756572792c206d656d6f7279207c204d656d6f7279206f662070726576696f757320696e746572616374696f6e732c20636861745f686973746f7279207c207468652063757272656e74206368617420686973746f7279948c066f7574707574948c5f616e737765725f746f5f71756572792c20696d706f7274616e745f6e65775f6b6e6f776c656467655f746f5f6164645f746f5f6d656d6f7279207c20456d70747920737472696e67206966206e6f206b6e6f776c6564676520746f20616464948c05746f6f6c73945d94288c1c666c6f636b2e636f72652e746f6f6c732e62617369635f746f6f6c73948c157765625f7365617263685f6475636b6475636b676f949394681a8c1b6765745f7765625f636f6e74656e745f61735f6d61726b646f776e949394681a8c09636f64655f6576616c9493948c17636c6f75647069636b6c652e636c6f75647069636b6c65948c0e5f6d616b655f66756e6374696f6e9493942868218c0d5f6275696c74696e5f747970659493948c08436f6465547970659485945294284b014b004b004b024b064b034388970009007401000000000000000064016402ab0200000000000035007d017c016a030000000000000000000000000000000000007c00ab010000000000000100640064006400ab0200000000000001007900230031007301770201005900010001007900780359007701230074040000000000000000240072030100590079007700780359007701944e8c0a6d656d6f72792e747874948c01779487948c046f70656e948c057772697465948c1146696c654e6f74466f756e644572726f729487948c106f7074696d697a65645f6d656d6f7279948c0466696c659486948c3b643a5c50726f6a656374735c666c6f636b5c6578616d706c65735c30325f636f6f6b5f626f6f6b5c73656c665f696d70726f76656d656e742e7079948c0f6f7074696d697a655f6d656d6f7279948c0f6f7074696d697a655f6d656d6f7279944b50433d8000f00204050ddc0d11902ca003d40d24a804d80c108f4a894ad01727d40c28f703000e25d70d24d10d24fbe40b1cf20001050dd9080cf00301050dfa944323820c35008e122903a0083500a9053207ae033500b2033500b509410103c10001410103942929749452947d94288c0b5f5f7061636b6167655f5f944e8c085f5f6e616d655f5f948c085f5f6d61696e5f5f948c085f5f66696c655f5f946834754e4e4e7494529468218c125f66756e6374696f6e5f736574737461746594939468417d947d9428683d8c0f6f7074696d697a655f6d656d6f7279948c0c5f5f7175616c6e616d655f5f948c0f6f7074696d697a655f6d656d6f7279948c0f5f5f616e6e6f746174696f6e735f5f947d9468318c086275696c74696e73948c03737472949394738c0e5f5f6b7764656661756c74735f5f944e8c0c5f5f64656661756c74735f5f944e8c0a5f5f6d6f64756c655f5f94683e8c075f5f646f635f5f944e8c0b5f5f636c6f737572655f5f944e8c175f636c6f75647069636b6c655f7375626d6f64756c6573945d948c0b5f5f676c6f62616c735f5f947d94758694865230658c097573655f636163686594888c0868616e645f6f66669468258c0a4d6574686f645479706594859452946823286828284b034b004b004b034b034b03435697007c006a000000000000000000000000000000000000006a03000000000000000000000000000000000000ab0000000000000064016b28000072017900740500000000000000006402ac03ab01000000000000530094284e8c07676f6f646279659468078c0a6e6578745f6167656e7494859474948c0a757365725f7175657279948c056c6f776572948c0748616e644f66669487948c0473656c66948c07636f6e74657874948c06726573756c7494879468348c0868616e645f6f6666948c0d436861742e68616e645f6f6666944b4a43258000d80b0f8f3f893fd70b20d10b20d30b22a069d20b2fd81317dc0f16a028d40f2bd0082b94430094292974945294683b4e4e4e74945294684368717d947d9428683d8c0868616e645f6f66669468478c0d436861742e68616e645f6f66669468497d94684e4e684f4e6850683e68514e68524e68535d9468557d9468646808686493947375869486523068218c145f6d616b655f736b656c65746f6e5f636c61737394939428684b8c04747970659493948c044368617494684b8c066f626a65637494939485947d946850683e738c206261323832663438613935333435663562343565393035333539363461646363944e7494529468218c0f5f636c6173735f736574737461746594939468867d94288c0f5f5f616e6e6f746174696f6e735f5f947d94288c0c636861745f686973746f72799468258c0c47656e65726963416c6961739485945294684b8c046c697374949394684d8594869452946862684d8c0f616e737765725f746f5f717565727994684d8c066d656d6f727994684d758c145f5f64617461636c6173735f6669656c64735f5f947d9428688c8c0b64617461636c6173736573948c054669656c649493942981944e7d9428680f688c8c04747970659468948c0764656661756c749468998c0d5f4d495353494e475f545950459493942981948c0f64656661756c745f666163746f72799468918c047265707294888c0468617368944e8c04696e697494888c07636f6d7061726594888c086d657461646174619468258c104d617070696e6750726f78795479706594859452947d94859452948c076b775f6f6e6c7994898c0b5f6669656c645f747970659468218c225f6765745f64617461636c6173735f6669656c645f747970655f73656e74696e656c9493948c065f4649454c449485945294758694626862689b2981944e7d9428680f6862689e684d689f8c009468a368a268a48868a54e68a68868a78868a868ae68af8968b068b5758694626895689b2981944e7d9428680f6895689e684d689f68b968a368a268a48868a54e68a68868a78868a868ae68af8968b068b5758694626896689b2981944e7d9428680f6896689e684d689f68b968a368a268a48868a54e68a68868a78868a868ae68af8968b068b575869462758c145f5f64617461636c6173735f706172616d735f5f9468998c105f44617461636c617373506172616d739493942981944e7d942868a68868a4888c02657194888c056f7264657294898c0b756e736166655f6861736894898c0666726f7a656e94898c0a6d617463685f61726773948868af898c05736c6f747394898c0c7765616b7265665f736c6f749489758694628c075f5f646f635f5f948c6c4368617428636861745f686973746f72793a206c6973745b7374725d203d203c666163746f72793e2c20757365725f71756572793a20737472203d2027272c20616e737765725f746f5f71756572793a20737472203d2027272c206d656d6f72793a20737472203d20272729948c065f5f65715f5f946823286828284b024b004b004b024b054b1343f897007c016a000000000000000000000000000000000000007c006a000000000000000000000000000000000000007500725d7c006a020000000000000000000000000000000000007c006a040000000000000000000000000000000000007c006a060000000000000000000000000000000000007c006a0800000000000000000000000000000000000066047c016a020000000000000000000000000000000000007c016a040000000000000000000000000000000000007c016a060000000000000000000000000000000000007c016a0800000000000000000000000000000000000066046b2800005300740a00000000000000005300944e8594288c095f5f636c6173735f5f94688c6862689568968c0e4e6f74496d706c656d656e74656494749468668c056f746865729486948c083c737472696e673e948c065f5f65715f5f948c1d5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f65715f5f944b0243838000d8050a875f815f98049f0e990ed10526d80b0fd70b1cd10b1c98549f5f995fa854d72d41d12d41c024c72bc12bd00a4fd05257d75264d15264d0656ad76575d16575d0767bf7000077014c02f1000077014c02f000004d025202f700004d025902f100004d025902f0000052015b02f100000b5b02f00000045b02dc0917d0021794686d292974945294683b4e4e4e74945294684368df7d947d9428683d8c065f5f65715f5f9468478c0b436861742e5f5f65715f5f9468497d94684e4e684f4e6850683e68514e68524e68535d9468557d947586948652308c085f5f686173685f5f944e8c085f5f696e69745f5f946823286828284b054b004b004b054b024b134354950297007c0189057500720702008906ab000000000000006e017c017c005f0000000000000000007c027c005f0100000000000000007c037c005f0200000000000000007c047c005f0300000000000000007900944e859428688c6862689568967494286866688c686268956896749468d88c085f5f696e69745f5f948c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f696e69745f5f944b024330f88000d83945d0496ad1396ad11433d41435d0707c8024d40213d8121c8024842fd817268024d40216d80e148024852b94686d8c215f5f64617461636c6173735f4841535f44454641554c545f464143544f52595f5f948c1f5f5f64617461636c6173735f64666c745f636861745f686973746f72795f5f9486942974945294683b4e4e68218c105f6d616b655f656d7074795f63656c6c94939429529468f7295294869474945294684368fc7d947d9428683d8c085f5f696e69745f5f9468478c0d436861742e5f5f696e69745f5f9468497d9428688c68946862684d6895684d6896684d8c0672657475726e944e75684e4e684f2868998c1a5f4841535f44454641554c545f464143544f52595f434c41535394939429819468b968b968b974946850683e68514e685268218c0a5f6d616b655f63656c6c9493946a05010000859452946a08010000689185945294869468535d9468557d947586948652308c0e5f5f6d617463685f617267735f5f9428688c68626895689674948c0a5f5f6d6f64756c655f5f94683e8c085f5f726570725f5f946823286828284b014b004b004b034b054b1343d295029700740100000000000000007c00ab01000000000000740300000000000000006a04000000000000000000000000000000000000ab0000000000000066027d017c01890376007201790189036a070000000000000000000000000000000000007c01ab0100000000000001000900020089047c00ab010000000000007d0289036a090000000000000000000000000000000000007c01ab0100000000000001007c025300230089036a090000000000000000000000000000000000007c01ab0100000000000001007700780359007701944e8c032e2e2e948694288c026964948c075f746872656164948c096765745f6964656e74948c03616464948c076469736361726494749468668c036b657994686887948c5e433a5c55736572735c617261747a5c417070446174615c526f616d696e675c75765c707974686f6e5c63707974686f6e2d332e31322e382d77696e646f77732d7838365f36342d6e6f6e655c4c69625c64617461636c61737365732e7079948c0777726170706572948c205f7265637572736976655f726570722e3c6c6f63616c733e2e77726170706572944bff4367f88000e40e1090148b689c07d71829d11829d3182bd00e2b8803d80b0e902cd10b1ed81318d80814d70818d108189813d4081df002030926d91522a034d315288846e00c18d70c20d10c20a013d40c25d80f15880df8f003000d19d70c20d10c20a013d50c25fa94430bb808411300c11313412603948c0c726570725f72756e6e696e67948c0d757365725f66756e6374696f6e94869429749452947d9428683c68b9683d6899683f8c5e433a5c55736572735c617261747a5c417070446174615c526f616d696e675c75765c707974686f6e5c63707974686f6e2d332e31322e382d77696e646f77732d7838365f36342d6e6f6e655c4c69625c64617461636c61737365732e707994754e4e68f729529468f729529486947494529468436a300100007d948c0b5f5f777261707065645f5f946823286828284b014b004b004b014b0a4b13439e97007c006a000000000000000000000000000000000000006a0200000000000000000000000000000000000064017c006a040000000000000000000000000000000000009b0264027c006a060000000000000000000000000000000000009b0264037c006a080000000000000000000000000000000000009b0264047c006a0a0000000000000000000000000000000000009b0264059d097a000000530094284e8c0e28636861745f686973746f72793d948c0d2c20757365725f71756572793d948c122c20616e737765725f746f5f71756572793d948c092c206d656d6f72793d948c01299474942868d36847688c68626895689674946866859468d88c085f5f726570725f5f948c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f726570725f5f944b0243858000d8090d8f1e891ed70924d10924a81eb804d73849d13849d0374cc84dd05a5ed75a69d15a69d0596cd06c7ef0000040024402f7000040025402f1000040025402f000007f015702f0000057026002f0000061026502f7000061026c02f1000061026c02f0000060026f02f000006f027002f00000287102f100000a7102f0000003710294686d292974945294683b4e4e4e7494529468436a420100007d947d9428683d8c085f5f726570725f5f9468478c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f726570725f5f9468497d94684e4e684f4e6850683e68514e68524e68535d9468557d94758694865230737d9428683d8c085f5f726570725f5f9468478c0d436861742e5f5f726570725f5f9468496a47010000684e4e684f4e6850683e68514e68526a080100008f94859452946a080100006a4201000085945294869468535d9468557d946a1901000068218c09737562696d706f72749493946a1901000085945294737586948652308c0d5f5f736c6f746e616d65735f5f945d948c0e61667465725f726573706f6e7365946823286828284b044b004b004b094b064b8342180200004b000100970074010000000000000000ab000000000000007d047c036401190000007c005f0100000000000000007c006a040000000000000000000000000000000000006a070000000000000000000000000000000000007c006a080000000000000000000000000000000000007c006a0200000000000000000000000000000000000064029c02ab0100000000000001007c0078016a0a0000000000000000000000000000000000007c036a0d00000000000000000000000000000000000064036404ab0200000000000064057a0000007a0d000063025f050000000000000000740f000000000000000064066407ab0200000000000035007d057c056a110000000000000000000000000000000000007c006a0a000000000000000000000000000000000000ab010000000000000100640064006400ab0200000000000001007c036a0d00000000000000000000000000000000000064086404ab020000000000007d067c06721f741300000000000000007c066409640aac0bab030000000000007d077c046a150000000000000000000000000000000000007c07ab010000000000000100741300000000000000007c006a02000000000000000000000000000000000000640c640dac0bab030000000000007d087c046a150000000000000000000000000000000000007c08ab0100000000000001007900230031007301770201005900010001008c66780359007701ad03770194284e68958c0475736572948c09617373697374616e749486948c28696d706f7274616e745f6e65775f6b6e6f776c656467655f746f5f6164645f746f5f6d656d6f72799468b98c010a94682a682b8c09726561736f6e696e67948c2a5b626f6c6420626c75655d417373697374616e7420526561736f6e696e675b2f626f6c6420626c75655d948c04626c7565948c057469746c65948c0c626f726465725f7374796c659486948c295b626f6c6420677265656e5d417373697374616e7420416e737765725b2f626f6c6420677265656e5d948c05677265656e947494288c07436f6e736f6c65946895688c8c06617070656e6494686268968c0367657494682d682e8c0550616e656c948c057072696e749474942868668c056167656e74948c06696e70757473948c076f757470757473948c07636f6e736f6c659468326a640100008c0f726561736f6e696e675f70616e656c948c0c616e737765725f70616e656c94749468348c0e61667465725f726573706f6e7365948c13436861742e61667465725f726573706f6e7365944b2c43e8e800f88000e4121993298807d81f26d02738d11f398804d4081cd8080cd70819d10819d70820d10820a824af2fa92fc804d7485cd1485cd1215dd4085ed8080c8f0b8a0b9077977b917bd0234dc872d31752d05559d11759d108598d0bf406000e12902ca003d40d24a804d80c108f4a894a9074977b917bd40c23f703000e25f00800151c974b914ba00ba852d314308809d90b14dc1e23d81019d81642d81d23f407041f0e884ff00a000d148f4d894d982fd40c2af40600181dd80c10d70c20d10c20d8123dd81920f40704180a880cf00a0009108f0d890d906cd50823f727000e25d00d24fc94431f82413b440a01c13d1c433e03c2194125440a01c33e05440707c40307440a0194292974945294683b4e4e4e7494529468436a810100007d947d9428683d8c0e61667465725f726573706f6e73659468478c13436861742e61667465725f726573706f6e73659468497d94684e4e684f4e6850683e68514e68524e68535d9468557d94286a6d0100008c0c726963682e636f6e736f6c65946a6d01000093946a700100008c0a726963682e70616e656c946a700100009394757586948652308c0f616e737765725f746f5f71756572799468b98c0f6265666f72655f726573706f6e7365946823286828284b034b004b004b054b064b8342480100004b000100970074010000000000000000ab000000000000007d0309007403000000000000000064016402ab0200000000000035007d047c046a05000000000000000000000000000000000000ab000000000000007c005f030000000000000000640064006400ab020000000000000100740b00000000000000006a0c0000000000000000000000000000000000006404ab010000000000007c005f0700000000000000007c006a0e0000000000000000000000000000000000007c0264053c0000007c006a100000000000000000000000000000000000007c0264063c0000007c006a060000000000000000000000000000000000007c0264073c0000007900230031007301770201005900010001008c517803590077012300740800000000000000002400720a010064037c005f03000000000000000059008c667700780359007701ad03770194284e682a8c01729468b98c1b5b626f6c64206379616e5d557365725b2f626f6c64206379616e5d946862688c68967494286a6d010000682d8c0472656164946896682f8c0650726f6d7074948c0361736b946862688c74942868666a730100006a740100006a760100006832749468348c0f6265666f72655f726573706f6e7365948c14436861742e6265666f72655f726573706f6e7365944b1c438ce800f88000dc121993298807f00404091ddc1115906ca043d41128a844d81e229f6999699b6b9004940bf703001229f40c001b219f2a992ad02542d31a4388048c0fd81f239f7f997f8806887cd1081cd82125d72132d121328806887ed1081ed81b1f9f3b993b88068878d20818f713001229d01128fbe40f20f20001091dd81a1c88448e4bf00301091dfc94433e820b4222018e0c420c009a16420003b008420c00b84108422201c20005420907c20507420c00c20c10421f03c21c02422201c21e01421f03c21f0342220194292974945294683b4e4e4e7494529468436aa00100007d947d9428683d8c0f6265666f72655f726573706f6e73659468478c14436861742e6265666f72655f726573706f6e73659468497d94684e4e684f4e6850683e68514e68524e68535d9468557d94286a6d0100006a8a0100006a950100008c0b726963682e70726f6d7074946a950100009394757586948652308c0868616e645f6f66669468718c066d656d6f72799468b98c0a757365725f71756572799468b9757d9486948652302981947d9428688c5d94686268b9689568b9689668b97562869452948c0b7465726d696e6174696f6e944e8c06636f6e6669679468088c10466c6f636b4167656e74436f6e6669679493942981947d94288c136167656e745f747970655f6f76657272696465944e8c0e64697361626c655f6f757470757494888c0b74656d7065726174757265944700000000000000008c0a6d61785f746f6b656e73944dd00775628c13696e697469616c697a655f63616c6c6261636b94685c6aa00100006ab0010000869452948c116576616c756174655f63616c6c6261636b944e8c127465726d696e6174655f63616c6c6261636b94685c6a810100006ab0010000869452948c116f6e5f6572726f725f63616c6c6261636b944e758c125f5f707964616e7469635f65787472615f5f944e8c175f5f707964616e7469635f6669656c64735f7365745f5f948f9428680f681468166ac301000068186abf01000068126ab60100006859908c145f5f707964616e7469635f707269766174655f5f944e7562738c087265676973747279948c22666c6f636b2e636f72652e72656769737472792e6167656e745f7265676973747279948c0852656769737472799493942981947d94288c075f6167656e7473945d94680b618c065f746f6f6c73945d9428681b681c8694681d681e8694681f6820869468366841869465756268678c1a666c6f636b2e636f72652e636f6e746578742e636f6e74657874948c0c466c6f636b436f6e746578749493942981947d94288c057374617465947d948c07686973746f7279945d948c116167656e745f646566696e6974696f6e73947d9468076ad90100008c0f4167656e74446566696e6974696f6e9493942981947d94288c0a6167656e745f747970659468098c0a6167656e745f6e616d659468078c0a6167656e745f64617461947d9428680f68076810681168126813681468156816681768185d94288c8a383030353935336130303030303030303030303030303863316336363663366636333662326536333666373236353265373436663666366337333265363236313733363936333566373436663666366337333934386331353737363536323566373336353631373236333638356636343735363336623634373536333662363736663934393339343265948c96383030353935343030303030303030303030303030303863316336363663366636333662326536333666373236353265373436663666366337333265363236313733363936333566373436663666366337333934386331623637363537343566373736353632356636333666366537343635366537343566363137333566366436313732366236343666373736653934393339343265948c723830303539353265303030303030303030303030303038633163363636633666363336623265363336663732363532653734366636663663373332653632363137333639363335663734366636663663373339343863303936333666363436353566363537363631366339343933393432659458a606000038303035393534383033303030303030303030303030386331373633366336663735363437303639363336623663363532653633366336663735363437303639363336623663363539343863306535663664363136623635356636363735366536333734363936663665393439333934323836383030386330643566363237353639366337343639366535663734373937303635393439333934386330383433366636343635353437393730363539343835393435323934323834623031346230303462303034623032346230363462303334333838393730303039303037343031303030303030303030303030303030303634303136343032616230323030303030303030303030303335303037643031376330313661303330303030303030303030303030303030303030303030303030303030303030303030303037633030616230313030303030303030303030303031303036343030363430303634303061623032303030303030303030303030303130303739303032333030333130303733303137373032303130303539303030313030303130303739303037383033353930303737303132333030373430343030303030303030303030303030303032343030373230333031303035393030373930303737303037383033353930303737303139343465386330613664363536643666373237393265373437383734393438633031373739343837393438633034366637303635366539343863303537373732363937343635393438633131343636393663363534653666373434363666373536653634343537323732366637323934383739343863313036663730373436393664363937613635363435663664363536643666373237393934386330343636363936633635393438363934386333623634336135633530373236663661363536333734373335633636366336663633366235633635373836313664373036633635373335633330333235663633366636663662356636323666366636623563373336353663363635663639366437303732366637363635366436353665373432653730373939343863306636663730373436393664363937613635356636643635366436663732373939343863306636663730373436393664363937613635356636643635366436663732373939343462353034333364383030306630303230343035306464633064313139303263613030336434306432346138303464383063313038663461383934616430313732376434306332386637303330303065323564373064323464313064323466626534306231636632303030313035306464393038306366303033303130353064666139343433323338323063333530303865313232393033613030383335303061393035333230376165303333353030623230333335303062353039343130313033633130303031343130313033393432393239373439343532393437643934323838633062356635663730363136333662363136373635356635663934346538633038356635663665363136643635356635663934386330383566356636643631363936653566356639343863303835663566363636393663363535663566393436383133373534653465346537343934353239343638303038633132356636363735366536333734363936663665356637333635373437333734363137343635393439333934363832303764393437643934323836383163386330663666373037343639366436393761363535663664363536643666373237393934386330633566356637313735363136633665363136643635356635663934386330663666373037343639366436393761363535663664363536643666373237393934386330663566356636313665366536663734363137343639366636653733356635663934376439343638313038633038363237353639366337343639366537333934386330333733373437323934393339343733386330653566356636623737363436353636363137353663373437333566356639343465386330633566356636343635363636313735366337343733356635663934346538633061356635663664366636343735366336353566356639343638316438633037356635663634366636333566356639343465386330623566356636333663366637333735373236353566356639343465386331373566363336633666373536343730363936333662366336353566373337353632366436663634373536633635373339343564393438633062356635663637366336663632363136633733356635663934376439343735383639343836353233303265946568588868594e6ab50100004e6ab60100007d94288c136167656e745f747970655f6f76657272696465944e8c0e64697361626c655f6f757470757494888c0b74656d7065726174757265944700000000000000008c0a6d61785f746f6b656e73944dd007756abf01000058483500003830303539353939316130303030303030303030303038633137363336633666373536343730363936333662366336353265363336633666373536343730363936333662366336353934386330643566363237353639366337343639366535663734373937303635393439333934386330613464363537343638366636343534373937303635393438353934353239343638303038633065356636643631366236353566363637353665363337343639366636653934393339343238363830323863303834333666363436353534373937303635393438353934353239343238346230333462303034623030346230353462303634623833343234383031303030303462303030313030393730303734303130303030303030303030303030303030616230303030303030303030303030303764303330393030373430333030303030303030303030303030303036343031363430326162303230303030303030303030303033353030376430343763303436613035303030303030303030303030303030303030303030303030303030303030303030303030616230303030303030303030303030303763303035663033303030303030303030303030303030303634303036343030363430306162303230303030303030303030303030313030373430623030303030303030303030303030303036613063303030303030303030303030303030303030303030303030303030303030303030303030363430346162303130303030303030303030303037633030356630373030303030303030303030303030303037633030366130653030303030303030303030303030303030303030303030303030303030303030303030303763303236343035336330303030303037633030366131303030303030303030303030303030303030303030303030303030303030303030303030303763303236343036336330303030303037633030366130363030303030303030303030303030303030303030303030303030303030303030303030303763303236343037336330303030303037393030323330303331303037333031373730323031303035393030303130303031303038633531373830333539303037373031323330303734303830303030303030303030303030303030323430303732306130313030363430333763303035663033303030303030303030303030303030303539303038633636373730303738303335393030373730316164303337373031393432383465386330613664363536643666373237393265373437383734393438633031373239343863303039343863316235623632366636633634323036333739363136653564353537333635373235623266363236663663363432303633373936313665356439343863306137353733363537323566373137353635373237393934386330633633363836313734356636383639373337343666373237393934386330363664363536643666373237393934373439343238386330373433366636653733366636633635393438633034366637303635366539343863303437323635363136343934363831323863313134363639366336353465366637343436366637353665363434353732373236663732393438633036353037323666366437303734393438633033363137333662393436383130363831313734393432383863303437333635366336363934386330353631363736353665373439343863303636393665373037353734373339343863303736333666366537333666366336353934386330343636363936633635393437343934386333623634336135633530373236663661363536333734373335633636366336663633366235633635373836313664373036633635373335633330333235663633366636663662356636323666366636623563373336353663363635663639366437303732366637363635366436353665373432653730373939343863306636323635363636663732363535663732363537333730366636653733363539343863313434333638363137343265363236353636366637323635356637323635373337303666366537333635393434623163343338636538303066383830303064633132313939333239383830376630303430343039316464633131313539303663613034336434313132386138343464383165323239663639393936393962366239303034393430626637303330303132323966343063303031623231396632613939326164303235343264333161343338383034386330666438316632333966376639393766383830363838376364313038316364383231323564373231333264313231333238383036383837656431303831656438316231663966336239393362383830363838373864323038313866373133303031323239643031313238666265343066323066323030303130393164643831613163383834343865346266303033303130393164666339343433336538323062343232323031386530633432306330303961313634323030303362303038343230633030623834313038343232323031633230303035343230393037633230353037343230633030633230633130343231663033633231633032343232323031633231653031343231663033633231663033343232323031393432393239373439343532393437643934323838633062356635663730363136333662363136373635356635663934346538633038356635663665363136643635356635663934386330383566356636643631363936653566356639343863303835663566363636393663363535663566393436383231373534653465346537343934353239343638303038633132356636363735366536333734363936663665356637333635373437333734363137343635393439333934363832653764393437643934323836383261386330663632363536363666373236353566373236353733373036663665373336353934386330633566356637313735363136633665363136643635356635663934386331343433363836313734326536323635363636663732363535663732363537333730366636653733363539343863306635663566363136653665366637343631373436393666366537333566356639343764393438633065356635663662373736343635363636313735366337343733356635663934346538633063356635663634363536363631373536633734373335663566393434653863306135663566366436663634373536633635356635663934363832623863303735663566363436663633356635663934346538633062356635663633366336663733373537323635356635663934346538633137356636333663366637353634373036393633366236633635356637333735363236643666363437353663363537333934356439343863306235663566363736633666363236313663373335663566393437643934323836383134386330633732363936333638326536333666366537333666366336353934363831343933393436383138386330623732363936333638326537303732366636643730373439343638313839333934373537353836393438363532333036383030386331343566366436313662363535663733366236353663363537343666366535663633366336313733373339343933393432383863303836323735363936633734363936653733393438633034373437393730363539343933393438633034343336383631373439343638343838633036366636323661363536333734393439333934383539343764393436383361363832623733386332303632363133323338333236363334333836313339333533333334333536363335363233343335363533393330333533333335333933363334363136343633363339343465373439343532393436383030386330663566363336633631373337333566373336353734373337343631373436353934393339343638353237643934323838633066356635663631366536653666373436313734363936663665373335663566393437643934323836383131363830323863306334373635366536353732363936333431366336393631373339343835393435323934363834383863303436633639373337343934393339343638343838633033373337343732393439333934383539343836393435323934363831303638356538633066363136653733373736353732356637343666356637313735363537323739393436383565363831323638356537353863313435663566363436313734363136333663363137333733356636363639363536633634373335663566393437643934323836383131386330623634363137343631363336633631373337333635373339343863303534363639363536633634393439333934323938313934346537643934323838633034366536313664363539343638313138633034373437393730363539343638363138633037363436353636363137353663373439343638363538633064356634643439353335333439346534373566353435393530343539343933393432393831393438633066363436353636363137353663373435663636363136333734366637323739393436383563386330343732363537303732393438383863303436383631373336383934346538633034363936653639373439343838386330373633366636643730363137323635393438383863303836643635373436313634363137343631393436383032386331303464363137303730363936653637353037323666373837393534373937303635393438353934353239343764393438353934353239343863303736623737356636663665366337393934383938633062356636363639363536633634356637343739373036353934363830303863323235663637363537343566363436313734363136333663363137333733356636363639363536633634356637343739373036353566373336353665373436393665363536633934393339343863303635663436343934353463343439343835393435323934373538363934363236383130363836373239383139343465376439343238363836613638313036383662363835653638366336383065363837303638366636383731383836383732346536383733383836383734383836383735363837623638376338393638376436383832373538363934363236383632363836373239383139343465376439343238363836613638363236383662363835653638366336383065363837303638366636383731383836383732346536383733383836383734383836383735363837623638376338393638376436383832373538363934363236383132363836373239383139343465376439343238363836613638313236383662363835653638366336383065363837303638366636383731383836383732346536383733383836383734383836383735363837623638376338393638376436383832373538363934363237353863313435663566363436313734363136333663363137333733356637303631373236313664373335663566393436383635386331303566343436313734363136333663363137333733353036313732363136643733393439333934323938313934346537643934323836383733383836383731383838633032363537313934383838633035366637323634363537323934383938633062373536653733363136363635356636383631373336383934383938633036363637323666376136353665393438393863306136643631373436333638356636313732363737333934383836383763383938633035373336633666373437333934383938633063373736353631366237323635363635663733366336663734393438393735383639343632386330373566356636343666363335663566393438633663343336383631373432383633363836313734356636383639373337343666373237393361323036633639373337343562373337343732356432303364323033633636363136333734366637323739336532633230373537333635373235663731373536353732373933613230373337343732323033643230323732373263323036313665373337373635373235663734366635663731373536353732373933613230373337343732323033643230323732373263323036643635366436663732373933613230373337343732323033643230323732373239393438633036356635663635373135663566393436383037323836383061323834623032346230303462303034623032346230353462313334336638393730303763303136613030303030303030303030303030303030303030303030303030303030303030303030303030376330303661303030303030303030303030303030303030303030303030303030303030303030303030303037353030373235643763303036613032303030303030303030303030303030303030303030303030303030303030303030303030376330303661303430303030303030303030303030303030303030303030303030303030303030303030303037633030366130363030303030303030303030303030303030303030303030303030303030303030303030303763303036613038303030303030303030303030303030303030303030303030303030303030303030303030363630343763303136613032303030303030303030303030303030303030303030303030303030303030303030303030376330313661303430303030303030303030303030303030303030303030303030303030303030303030303037633031366130363030303030303030303030303030303030303030303030303030303030303030303030303763303136613038303030303030303030303030303030303030303030303030303030303030303030303030363630343662323830303030353330303734306130303030303030303030303030303030353330303934346538353934323838633039356635663633366336313733373335663566393436383131363831303638363236383132386330653465366637343439366437303663363536643635366537343635363439343734393436383162386330353666373436383635373239343836393438633038336337333734373236393665363733653934386330363566356636353731356635663934386331643566356636333732363536313734363535663636366535663566326533633663366636333631366337333365326535663566363537313566356639343462303234333833383030306438303530613837356638313566393830343966306539393065643130353236643830623066643730623163643130623163393835343966356639393566613835346437326434316431326434316330323463373262633132626430306134666430353235376437353236346431353236346430363536616437363537356431363537356430373637626637303030303737303134633032663130303030373730313463303266303030303034643032353230326637303030303464303235393032663130303030346430323539303266303030303035323031356230326631303030303062356230326630303030303034356230326463303931376430303231373934343330303934323932393734393435323934363832383465346534653734393435323934363833303638616337643934376439343238363832613863303635663566363537313566356639343638333438633062343336383631373432653566356636353731356635663934363833363764393436383338346536383339346536383361363832623638336234653638336334653638336435643934363833663764393437353836393438363532333038633038356635663638363137333638356635663934346538633038356635663639366536393734356635663934363830373238363830613238346230353462303034623030346230353462303234623133343335343935303239373030376330313839303537353030373230373032303038393036616230303030303030303030303030303665303137633031376330303566303030303030303030303030303030303030376330323763303035663031303030303030303030303030303030303763303337633030356630323030303030303030303030303030303037633034376330303566303330303030303030303030303030303030373930303934346538353934323836383131363831303638363236383132373439343238363831623638313136383130363836323638313237343934363861343863303835663566363936653639373435663566393438633166356635663633373236353631373436353566363636653566356632653363366336663633363136633733336532653566356636393665363937343566356639343462303234333330663838303030643833393435643034393661643133393661643131343333643431343335643037303763383032346434303231336438313231633830323438343266643831373236383032346434303231366438306531343830323438353262393436386138386332313566356636343631373436313633366336313733373335663438343135333566343434353436343135353463353435663436343134333534346635323539356635663934386331663566356636343631373436313633366336313733373335663634363636633734356636333638363137343566363836393733373436663732373935663566393438363934323937343934353239343638323834653465363830303863313035663664363136623635356636353664373037343739356636333635366336633934393339343239353239343638633432393532393438363934373439343532393436383330363863393764393437643934323836383261386330383566356636393665363937343566356639343638333438633064343336383631373432653566356636393665363937343566356639343638333637643934323836383131363836313638313036383565363836323638356536383132363835653863303637323635373437353732366539343465373536383338346536383339323836383635386331613566343834313533356634343435343634313535346335343566343634313433353434663532353935663433346334313533353339343933393432393831393436383065363830653638306537343934363833613638326236383362346536383363363830303863306135663664363136623635356636333635366336633934393339343638643238353934353239343638643536383563383539343532393438363934363833643564393436383366376439343735383639343836353233303863306535663566366436313734363336383566363137323637373335663566393432383638313136383130363836323638313237343934386330613566356636643666363437353663363535663566393436383262386330383566356637323635373037323566356639343638303732383638306132383462303134623030346230303462303334623035346231333433643239353032393730303734303130303030303030303030303030303030376330306162303130303030303030303030303037343033303030303030303030303030303030303661303430303030303030303030303030303030303030303030303030303030303030303030303061623030303030303030303030303030363630323764303137633031383930333736303037323031373930313839303336613037303030303030303030303030303030303030303030303030303030303030303030303030376330316162303130303030303030303030303030313030303930303032303038393034376330306162303130303030303030303030303037643032383930333661303930303030303030303030303030303030303030303030303030303030303030303030303037633031616230313030303030303030303030303031303037633032353330303233303038393033366130393030303030303030303030303030303030303030303030303030303030303030303030303763303161623031303030303030303030303030303130303737303037383033353930303737303139343465386330333265326532653934383639343238386330323639363439343863303735663734363837323635363136343934386330393637363537343566363936343635366537343934386330333631363436343934386330373634363937333633363137323634393437343934363831623863303336623635373939343863303637323635373337353663373439343837393438633565343333613563353537333635373237333563363137323631373437613563343137303730343436313734363135633532366636313664363936653637356337353736356337303739373436383666366535633633373037393734363836663665326433333265333133323265333832643737363936653634366637373733326437383338333635663336333432643665366636653635356334633639363235633634363137343631363336633631373337333635373332653730373939343863303737373732363137303730363537323934386332303566373236353633373537323733363937363635356637323635373037323265336336633666363336313663373333653265373737323631373037303635373239343462666634333637663838303030653430653130393031343862363839633037643731383239643131383239643331383262643030653262383830336438306230653930326364313062316564383133313864383038313464373038313864313038313839383133643430383164663030323033303932366439313532326130333464333135323838383436653030633138643730633230643130633230613031336434306332356438306631353838306466386630303330303064313964373063323064313063323061303133643530633235666139343433306262383038343131333030633131333133343132363033393438633063373236353730373235663732373536653665363936653637393438633064373537333635373235663636373536653633373436393666366539343836393432393734393435323934376439343238363832393638306536383261363836353638326338633565343333613563353537333635373237333563363137323631373437613563343137303730343436313734363135633532366636313664363936653637356337353736356337303739373436383666366535633633373037393734363836663665326433333265333133323265333832643737363936653634366637373733326437383338333635663336333432643665366636653635356334633639363235633634363137343631363336633631373337333635373332653730373939343735346534653638633432393532393436386334323935323934383639343734393435323934363833303638666537643934386330623566356637373732363137303730363536343566356639343638303732383638306132383462303134623030346230303462303134623061346231333433396539373030376330303661303030303030303030303030303030303030303030303030303030303030303030303030303036613032303030303030303030303030303030303030303030303030303030303030303030303030363430313763303036613034303030303030303030303030303030303030303030303030303030303030303030303030396230323634303237633030366130363030303030303030303030303030303030303030303030303030303030303030303030303962303236343033376330303661303830303030303030303030303030303030303030303030303030303030303030303030303039623032363430343763303036613061303030303030303030303030303030303030303030303030303030303030303030303030396230323634303539643039376130303030303035333030393432383465386330653238363336383631373435663638363937333734366637323739336439343863306432633230373537333635373235663731373536353732373933643934386331323263323036313665373337373635373235663734366635663731373536353732373933643934386330393263323036643635366436663732373933643934386330313239393437343934323836383966363833343638313136383130363836323638313237343934363831623835393436386134386330383566356637323635373037323566356639343863316635663566363337323635363137343635356636363665356635663265336336633666363336313663373333653265356635663732363537303732356635663934346230323433383538303030643830393064386631653839316564373039323464313039323461383165623830346437333834396431333834396430333734636338346464303561356564373561363964313561363964303539366364303663376566303030303034303032343430326637303030303430303235343032663130303030343030323534303266303030303037663031353730326630303030303537303236303032663030303030363130323635303266373030303036313032366330326631303030303631303236633032663030303030363030323666303266303030303036663032373030326630303030303238373130326631303030303061373130326630303030303033373130323934363861383239323937343934353239343638323834653465346537343934353239343638333036613130303130303030376439343764393432383638326138633038356635663732363537303732356635663934363833343863316635663566363337323635363137343635356636363665356635663265336336633666363336313663373333653265356635663732363537303732356635663934363833363764393436383338346536383339346536383361363832623638336234653638336334653638336435643934363833663764393437353836393438363532333037333764393432383638326138633038356635663732363537303732356635663934363833343863306434333638363137343265356635663732363537303732356635663934363833363661313530313030303036383338346536383339346536383361363832623638336234653638336336386435386639343835393435323934363864353661313030313030303038353934353239343836393436383364356439343638336637643934363865363638303038633039373337353632363936643730366637323734393439333934363865363835393435323934373337353836393438363532333038633064356635663733366336663734366536313664363537333566356639343564393438633065363136363734363537323566373236353733373036663665373336353934363830373238363830613238346230343462303034623030346230393462303634623833343231383032303030303462303030313030393730303734303130303030303030303030303030303030616230303030303030303030303030303764303437633033363430313139303030303030376330303566303130303030303030303030303030303030376330303661303430303030303030303030303030303030303030303030303030303030303030303030303036613037303030303030303030303030303030303030303030303030303030303030303030303030376330303661303830303030303030303030303030303030303030303030303030303030303030303030303037633030366130323030303030303030303030303030303030303030303030303030303030303030303030303634303239633032616230313030303030303030303030303031303037633030373830313661306130303030303030303030303030303030303030303030303030303030303030303030303037633033366130643030303030303030303030303030303030303030303030303030303030303030303030303634303336343034616230323030303030303030303030303634303537613030303030303761306430303030363330323566303530303030303030303030303030303030373430663030303030303030303030303030303036343036363430376162303230303030303030303030303033353030376430353763303536613131303030303030303030303030303030303030303030303030303030303030303030303030376330303661306130303030303030303030303030303030303030303030303030303030303030303030303061623031303030303030303030303030303130303634303036343030363430306162303230303030303030303030303030313030376330333661306430303030303030303030303030303030303030303030303030303030303030303030303036343038363430346162303230303030303030303030303037643036376330363732316637343133303030303030303030303030303030303763303636343039363430616163306261623033303030303030303030303030376430373763303436613135303030303030303030303030303030303030303030303030303030303030303030303030376330376162303130303030303030303030303030313030373431333030303030303030303030303030303037633030366130323030303030303030303030303030303030303030303030303030303030303030303030303634306336343064616330626162303330303030303030303030303037643038376330343661313530303030303030303030303030303030303030303030303030303030303030303030303037633038616230313030303030303030303030303031303037393030323330303331303037333031373730323031303035393030303130303031303038633636373830333539303037373031616430333737303139343238346536383632386330343735373336353732393438633039363137333733363937333734363136653734393438363934386332383639366437303666373237343631366537343566366536353737356636623665366637373663363536343637363535663734366635663631363436343566373436663566366436353664366637323739393436383065386330313061393436383063386330313737393438633039373236353631373336663665363936653637393438633261356236323666366336343230363236633735363535643431373337333639373337343631366537343230353236353631373336663665363936653637356232663632366636633634323036323663373536353564393438633034363236633735363539343863303537343639373436633635393438633063363236663732363436353732356637333734373936633635393438363934386332393562363236663663363432303637373236353635366535643431373337333639373337343631366537343230343136653733373736353732356232663632366636633634323036373732363536353665356439343863303536373732363536353665393437343934323836383134363836323638313138633036363137303730363536653634393436383130363831323863303336373635373439343638313538633035373737323639373436353934386330353530363136653635366339343863303537303732363936653734393437343934323836383162363831633638316438633037366637353734373037353734373339343638316536383166366133333031303030303863306637323635363137333666366536393665363735663730363136653635366339343863306336313665373337373635373235663730363136653635366339343734393436383231386330653631363637343635373235663732363537333730366636653733363539343863313334333638363137343265363136363734363537323566373236353733373036663665373336353934346232633433653865383030663838303030653431323139393332393838303764383166323664303237333864313166333938383034643430383163643830383063643730383139643130383139643730383230643130383230613832346166326661393266633830346437343835636431343835636431323135646434303835656438303830633866306238613062393037373937376239313762643032333464633837326433313735326430353535396431313735396431303835393864306266343036303030653132393032636130303364343064323461383034643830633130386634613839346139303734393737623931376264343063323366373033303030653235663030383030313531633937346239313462613030626138353264333134333038383039643930623134646331653233643831303139643831363432643831643233663430373034316630653838346666303061303030643134386634643839346439383266643430633261663430363030313831646438306331306437306332306431306332306438313233646438313932306634303730343138306138383063663030613030303931303866306438393064393036636435303832336637323730303065323564303064323466633934343331663832343133623434306130316331336431633433336530336332313934313235343430613031633333653035343430373037633430333037343430613031393432393239373439343532393436383238346534653465373439343532393436383330366134643031303030303764393437643934323836383261386330653631363637343635373235663732363537333730366636653733363539343638333438633133343336383631373432653631363637343635373235663732363537333730366636653733363539343638333637643934363833383465363833393465363833613638326236383362346536383363346536383364356439343638336637643934323836383134363834323661336630313030303038633061373236393633363832653730363136653635366339343661336630313030303039333934373537353836393438363532333038633066363136653733373736353732356637343666356637313735363537323739393436383065386330663632363536363666373236353566373236353733373036663665373336353934363832653863303836383631366536343566366636363636393436383037323836383061323834623033346230303462303034623033346230333462303334333536393730303763303036613030303030303030303030303030303030303030303030303030303030303030303030303030366130333030303030303030303030303030303030303030303030303030303030303030303030306162303030303030303030303030303036343031366232383030303037323031373930303734303530303030303030303030303030303030363430326163303361623031303030303030303030303030353330303934323834653863303736373666366636343632373936353934386330363633363836313734373437393934386330613665363537383734356636313637363536653734393438353934373439343638313038633035366336663737363537323934386330373438363136653634346636363636393438373934363831623863303736333666366537343635373837343934363865633837393436383231386330383638363136653634356636663636363639343863306434333638363137343265363836313665363435663666363636363934346234613433323538303030643830623066386633663839336664373062323064313062323064333062323261303639643230623266643831333137646330663136613032386434306632626430303832623934363861383239323937343934353239343638323834653465346537343934353239343638333036613663303130303030376439343764393432383638326138633038363836313665363435663666363636363934363833343863306434333638363137343265363836313665363435663666363636363934363833363764393436383338346536383339346536383361363832623638336234653638336334653638336435643934363833663764393436613632303130303030386331363636366336663633366232653633366637323635326536363663366636333662356636313637363536653734393436613632303130303030393339343733373538363934383635323330386330363664363536643666373237393934363830653863306137353733363537323566373137353635373237393934363830653735376439343836393438363532333032393831393437643934323836383131356439343638313036383065363836323638306536383132363830653735363238363934353239343265946ac20100004e6ac301000058483500003830303539353939316130303030303030303030303038633137363336633666373536343730363936333662366336353265363336633666373536343730363936333662366336353934386330643566363237353639366337343639366535663734373937303635393439333934386330613464363537343638366636343534373937303635393438353934353239343638303038633065356636643631366236353566363637353665363337343639366636653934393339343238363830323863303834333666363436353534373937303635393438353934353239343238346230343462303034623030346230393462303634623833343231383032303030303462303030313030393730303734303130303030303030303030303030303030616230303030303030303030303030303764303437633033363430313139303030303030376330303566303130303030303030303030303030303030376330303661303430303030303030303030303030303030303030303030303030303030303030303030303036613037303030303030303030303030303030303030303030303030303030303030303030303030376330303661303830303030303030303030303030303030303030303030303030303030303030303030303037633030366130323030303030303030303030303030303030303030303030303030303030303030303030303634303239633032616230313030303030303030303030303031303037633030373830313661306130303030303030303030303030303030303030303030303030303030303030303030303037633033366130643030303030303030303030303030303030303030303030303030303030303030303030303634303336343034616230323030303030303030303030303634303537613030303030303761306430303030363330323566303530303030303030303030303030303030373430663030303030303030303030303030303036343036363430376162303230303030303030303030303033353030376430353763303536613131303030303030303030303030303030303030303030303030303030303030303030303030376330303661306130303030303030303030303030303030303030303030303030303030303030303030303061623031303030303030303030303030303130303634303036343030363430306162303230303030303030303030303030313030376330333661306430303030303030303030303030303030303030303030303030303030303030303030303036343038363430346162303230303030303030303030303037643036376330363732316637343133303030303030303030303030303030303763303636343039363430616163306261623033303030303030303030303030376430373763303436613135303030303030303030303030303030303030303030303030303030303030303030303030376330376162303130303030303030303030303030313030373431333030303030303030303030303030303037633030366130323030303030303030303030303030303030303030303030303030303030303030303030303634306336343064616330626162303330303030303030303030303037643038376330343661313530303030303030303030303030303030303030303030303030303030303030303030303037633038616230313030303030303030303030303031303037393030323330303331303037333031373730323031303035393030303130303031303038633636373830333539303037373031616430333737303139343238346538633066363136653733373736353732356637343666356637313735363537323739393438633034373537333635373239343863303936313733373336393733373436313665373439343836393438633238363936643730366637323734363136653734356636653635373735663662366536663737366336353634363736353566373436663566363136343634356637343666356636643635366436663732373939343863303039343863303130613934386330613664363536643666373237393265373437383734393438633031373739343863303937323635363137333666366536393665363739343863326135623632366636633634323036323663373536353564343137333733363937333734363136653734323035323635363137333666366536393665363735623266363236663663363432303632366337353635356439343863303436323663373536353934386330353734363937343663363539343863306336323666373236343635373235663733373437393663363539343836393438633239356236323666366336343230363737323635363536653564343137333733363937333734363136653734323034313665373337373635373235623266363236663663363432303637373236353635366535643934386330353637373236353635366539343734393432383863303734333666366537333666366336353934363830633863306336333638363137343566363836393733373436663732373939343863303636313730373036353665363439343863306137353733363537323566373137353635373237393934386330363664363536643666373237393934386330333637363537343934386330343666373036353665393438633035373737323639373436353934386330353530363136653635366339343863303537303732363936653734393437343934323838633034373336353663363639343863303536313637363536653734393438633036363936653730373537343733393438633037366637353734373037353734373339343863303736333666366537333666366336353934386330343636363936633635393436383135386330663732363536313733366636653639366536373566373036313665363536633934386330633631366537333737363537323566373036313665363536633934373439343863336236343361356335303732366636613635363337343733356336363663366636333662356336353738363136643730366336353733356333303332356636333666366636623566363236663666366235633733363536633636356636393664373037323666373636353664363536653734326537303739393438633065363136363734363537323566373236353733373036663665373336353934386331333433363836313734326536313636373436353732356637323635373337303666366537333635393434623263343365386538303066383830303065343132313939333239383830376438316632366430323733386431316633393838303464343038316364383038306364373038313964313038313964373038323064313038323061383234616632666139326663383034643734383563643134383563643132313564643430383565643830383063386630623861306239303737393737623931376264303233346463383732643331373532643035353539643131373539643130383539386430626634303630303065313239303263613030336434306432346138303464383063313038663461383934613930373439373762393137626434306332336637303330303065323566303038303031353163393734623931346261303062613835326433313433303838303964393062313464633165323364383130313964383136343264383164323366343037303431663065383834666630306130303064313438663464383934643938326664343063326166343036303031383164643830633130643730633230643130633230643831323364643831393230663430373034313830613838306366303061303030393130386630643839306439303663643530383233663732373030306532356430306432346663393434333166383234313362343430613031633133643163343333653033633231393431323534343061303163333365303534343037303763343033303734343061303139343239323937343934353239343764393432383863306235663566373036313633366236313637363535663566393434653863303835663566366536313664363535663566393438633038356635663664363136393665356635663934386330383566356636363639366336353566356639343638333237353465346534653734393435323934363830303863313235663636373536653633373436393666366535663733363537343733373436313734363539343933393436383366376439343764393432383638336238633065363136363734363537323566373236353733373036663665373336353934386330633566356637313735363136633665363136643635356635663934386331333433363836313734326536313636373436353732356637323635373337303666366537333635393438633066356635663631366536653666373436313734363936663665373335663566393437643934386330653566356636623737363436353636363137353663373437333566356639343465386330633566356636343635363636313735366337343733356635663934346538633061356635663664366636343735366336353566356639343638336338633037356635663634366636333566356639343465386330623566356636333663366637333735373236353566356639343465386331373566363336633666373536343730363936333662366336353566373337353632366436663634373536633635373339343564393438633062356635663637366336663632363136633733356635663934376439343238363831653863306337323639363336383265363336663665373336663663363539343638316539333934363832363863306137323639363336383265373036313665363536633934363832363933393437353735383639343836353233303638303038633134356636643631366236353566373336623635366336353734366636653566363336633631373337333934393339343238386330383632373536393663373436393665373339343863303437343739373036353934393339343863303434333638363137343934363835393863303636663632366136353633373439343933393438353934376439343638346236383363373338633230363236313332333833323636333433383631333933353333333433353636333536323334333536353339333033353333333533393336333436313634363336333934346537343934353239343638303038633066356636333663363137333733356637333635373437333734363137343635393439333934363836333764393432383863306635663566363136653665366637343631373436393666366537333566356639343764393432383638316636383032386330633437363536653635373236393633343136633639363137333934383539343532393436383539386330343663363937333734393439333934363835393863303337333734373239343933393438353934383639343532393436383231363836663638306336383666363832323638366637353863313435663566363436313734363136333663363137333733356636363639363536633634373335663566393437643934323836383166386330623634363137343631363336633631373337333635373339343863303534363639363536633634393439333934323938313934346537643934323838633034366536313664363539343638316638633034373437393730363539343638373238633037363436353636363137353663373439343638373538633064356634643439353335333439346534373566353435393530343539343933393432393831393438633066363436353636363137353663373435663636363136333734366637323739393436383664386330343732363537303732393438383863303436383631373336383934346538633034363936653639373439343838386330373633366636643730363137323635393438383863303836643635373436313634363137343631393436383032386331303464363137303730363936653637353037323666373837393534373937303635393438353934353239343764393438353934353239343863303736623737356636663665366337393934383938633062356636363639363536633634356637343739373036353934363830303863323235663637363537343566363436313734363136333663363137333733356636363639363536633634356637343739373036353566373336353665373436393665363536633934393339343863303635663436343934353463343439343835393435323934373538363934363236383231363837373239383139343465376439343238363837613638323136383762363836663638376336383131363838303638376636383831383836383832346536383833383836383834383836383835363838623638386338393638386436383932373538363934363236383063363837373239383139343465376439343238363837613638306336383762363836663638376336383131363838303638376636383831383836383832346536383833383836383834383836383835363838623638386338393638386436383932373538363934363236383232363837373239383139343465376439343238363837613638323236383762363836663638376336383131363838303638376636383831383836383832346536383833383836383834383836383835363838623638386338393638386436383932373538363934363237353863313435663566363436313734363136333663363137333733356637303631373236313664373335663566393436383735386331303566343436313734363136333663363137333733353036313732363136643733393439333934323938313934346537643934323836383833383836383831383838633032363537313934383838633035366637323634363537323934383938633062373536653733363136363635356636383631373336383934383938633036363637323666376136353665393438393863306136643631373436333638356636313732363737333934383836383863383938633035373336633666373437333934383938633063373736353631366237323635363635663733366336663734393438393735383639343632386330373566356636343666363335663566393438633663343336383631373432383633363836313734356636383639373337343666373237393361323036633639373337343562373337343732356432303364323033633636363136333734366637323739336532633230373537333635373235663731373536353732373933613230373337343732323033643230323732373263323036313665373337373635373235663734366635663731373536353732373933613230373337343732323033643230323732373263323036643635366436663732373933613230373337343732323033643230323732373239393438633036356635663635373135663566393436383037323836383061323834623032346230303462303034623032346230353462313334336638393730303763303136613030303030303030303030303030303030303030303030303030303030303030303030303030376330303661303030303030303030303030303030303030303030303030303030303030303030303030303037353030373235643763303036613032303030303030303030303030303030303030303030303030303030303030303030303030376330303661303430303030303030303030303030303030303030303030303030303030303030303030303037633030366130363030303030303030303030303030303030303030303030303030303030303030303030303763303036613038303030303030303030303030303030303030303030303030303030303030303030303030363630343763303136613032303030303030303030303030303030303030303030303030303030303030303030303030376330313661303430303030303030303030303030303030303030303030303030303030303030303030303037633031366130363030303030303030303030303030303030303030303030303030303030303030303030303763303136613038303030303030303030303030303030303030303030303030303030303030303030303030363630343662323830303030353330303734306130303030303030303030303030303030353330303934346538353934323838633039356635663633366336313733373335663566393436383166363832313638306336383232386330653465366637343439366437303663363536643635366537343635363439343734393436383239386330353666373436383635373239343836393438633038336337333734373236393665363733653934386330363566356636353731356635663934386331643566356636333732363536313734363535663636366535663566326533633663366636333631366337333365326535663566363537313566356639343462303234333833383030306438303530613837356638313566393830343966306539393065643130353236643830623066643730623163643130623163393835343966356639393566613835346437326434316431326434316330323463373262633132626430306134666430353235376437353236346431353236346430363536616437363537356431363537356430373637626637303030303737303134633032663130303030373730313463303266303030303034643032353230326637303030303464303235393032663130303030346430323539303266303030303035323031356230326631303030303062356230326630303030303034356230326463303931376430303231373934343330303934323932393734393435323934363833393465346534653734393435323934363834313638626337643934376439343238363833623863303635663566363537313566356639343638343538633062343336383631373432653566356636353731356635663934363834373764393436383439346536383461346536383462363833633638346334653638346434653638346535643934363835303764393437353836393438363532333038633038356635663638363137333638356635663934346538633038356635663639366536393734356635663934363830373238363830613238346230353462303034623030346230353462303234623133343335343935303239373030376330313839303537353030373230373032303038393036616230303030303030303030303030303665303137633031376330303566303030303030303030303030303030303030376330323763303035663031303030303030303030303030303030303763303337633030356630323030303030303030303030303030303037633034376330303566303330303030303030303030303030303030373930303934346538353934323836383166363832313638306336383232373439343238363832393638316636383231363830633638323237343934363862343863303835663566363936653639373435663566393438633166356635663633373236353631373436353566363636653566356632653363366336663633363136633733336532653566356636393665363937343566356639343462303234333330663838303030643833393435643034393661643133393661643131343333643431343335643037303763383032346434303231336438313231633830323438343266643831373236383032346434303231366438306531343830323438353262393436386238386332313566356636343631373436313633366336313733373335663438343135333566343434353436343135353463353435663436343134333534346635323539356635663934386331663566356636343631373436313633366336313733373335663634363636633734356636333638363137343566363836393733373436663732373935663566393438363934323937343934353239343638333934653465363830303863313035663664363136623635356636353664373037343739356636333635366336633934393339343239353239343638643432393532393438363934373439343532393436383431363864393764393437643934323836383362386330383566356636393665363937343566356639343638343538633064343336383631373432653566356636393665363937343566356639343638343737643934323836383166363837323638323136383666363830633638366636383232363836663863303637323635373437353732366539343465373536383439346536383461323836383735386331613566343834313533356634343435343634313535346335343566343634313433353434663532353935663433346334313533353339343933393432393831393436383131363831313638313137343934363834623638336336383463346536383464363830303863306135663664363136623635356636333635366336633934393339343638653238353934353239343638653536383664383539343532393438363934363834653564393436383530376439343735383639343836353233303863306535663566366436313734363336383566363137323637373335663566393432383638316636383231363830633638323237343934386330613566356636643666363437353663363535663566393436383363386330383566356637323635373037323566356639343638303732383638306132383462303134623030346230303462303334623035346231333433643239353032393730303734303130303030303030303030303030303030376330306162303130303030303030303030303037343033303030303030303030303030303030303661303430303030303030303030303030303030303030303030303030303030303030303030303061623030303030303030303030303030363630323764303137633031383930333736303037323031373930313839303336613037303030303030303030303030303030303030303030303030303030303030303030303030376330316162303130303030303030303030303030313030303930303032303038393034376330306162303130303030303030303030303037643032383930333661303930303030303030303030303030303030303030303030303030303030303030303030303037633031616230313030303030303030303030303031303037633032353330303233303038393033366130393030303030303030303030303030303030303030303030303030303030303030303030303763303161623031303030303030303030303030303130303737303037383033353930303737303139343465386330333265326532653934383639343238386330323639363439343863303735663734363837323635363136343934386330393637363537343566363936343635366537343934386330333631363436343934386330373634363937333633363137323634393437343934363832393863303336623635373939343863303637323635373337353663373439343837393438633565343333613563353537333635373237333563363137323631373437613563343137303730343436313734363135633532366636313664363936653637356337353736356337303739373436383666366535633633373037393734363836663665326433333265333133323265333832643737363936653634366637373733326437383338333635663336333432643665366636653635356334633639363235633634363137343631363336633631373337333635373332653730373939343863303737373732363137303730363537323934386332303566373236353633373537323733363937363635356637323635373037323265336336633666363336313663373333653265373737323631373037303635373239343462666634333637663838303030653430653130393031343862363839633037643731383239643131383239643331383262643030653262383830336438306230653930326364313062316564383133313864383038313464373038313864313038313839383133643430383164663030323033303932366439313532326130333464333135323838383436653030633138643730633230643130633230613031336434306332356438306631353838306466386630303330303064313964373063323064313063323061303133643530633235666139343433306262383038343131333030633131333133343132363033393438633063373236353730373235663732373536653665363936653637393438633064373537333635373235663636373536653633373436393666366539343836393432393734393435323934376439343238363833613638313136383362363837353638336438633565343333613563353537333635373237333563363137323631373437613563343137303730343436313734363135633532366636313664363936653637356337353736356337303739373436383666366535633633373037393734363836663665326433333265333133323265333832643737363936653634366637373733326437383338333635663336333432643665366636653635356334633639363235633634363137343631363336633631373337333635373332653730373939343735346534653638643432393532393436386434323935323934383639343734393435323934363834313661306530313030303037643934386330623566356637373732363137303730363536343566356639343638303732383638306132383462303134623030346230303462303134623061346231333433396539373030376330303661303030303030303030303030303030303030303030303030303030303030303030303030303036613032303030303030303030303030303030303030303030303030303030303030303030303030363430313763303036613034303030303030303030303030303030303030303030303030303030303030303030303030396230323634303237633030366130363030303030303030303030303030303030303030303030303030303030303030303030303962303236343033376330303661303830303030303030303030303030303030303030303030303030303030303030303030303039623032363430343763303036613061303030303030303030303030303030303030303030303030303030303030303030303030396230323634303539643039376130303030303035333030393432383465386330653238363336383631373435663638363937333734366637323739336439343863306432633230373537333635373235663731373536353732373933643934386331323263323036313665373337373635373235663734366635663731373536353732373933643934386330393263323036643635366436663732373933643934386330313239393437343934323836386166363834353638316636383231363830633638323237343934363832393835393436386234386330383566356637323635373037323566356639343863316635663566363337323635363137343635356636363665356635663265336336633666363336313663373333653265356635663732363537303732356635663934346230323433383538303030643830393064386631653839316564373039323464313039323461383165623830346437333834396431333834396430333734636338346464303561356564373561363964313561363964303539366364303663376566303030303034303032343430326637303030303430303235343032663130303030343030323534303266303030303037663031353730326630303030303537303236303032663030303030363130323635303266373030303036313032366330326631303030303631303236633032663030303030363030323666303266303030303036663032373030326630303030303238373130326631303030303061373130326630303030303033373130323934363862383239323937343934353239343638333934653465346537343934353239343638343136613230303130303030376439343764393432383638336238633038356635663732363537303732356635663934363834353863316635663566363337323635363137343635356636363665356635663265336336633666363336313663373333653265356635663732363537303732356635663934363834373764393436383439346536383461346536383462363833633638346334653638346434653638346535643934363835303764393437353836393438363532333037333764393432383638336238633038356635663732363537303732356635663934363834353863306434333638363137343265356635663732363537303732356635663934363834373661323530313030303036383439346536383461346536383462363833633638346334653638346436386535386639343835393435323934363865353661323030313030303038353934353239343836393436383465356439343638353037643934363866363638303038633039373337353632363936643730366637323734393439333934363866363835393435323934373337353836393438363532333038633064356635663733366336663734366536313664363537333566356639343564393438633065363136363734363537323566373236353733373036663665373336353934363833663863306636313665373337373635373235663734366635663731373536353732373939343638313138633066363236353636366637323635356637323635373337303666366537333635393436383037323836383061323834623033346230303462303034623035346230363462383334323438303130303030346230303031303039373030373430313030303030303030303030303030303061623030303030303030303030303030376430333039303037343033303030303030303030303030303030303634303136343032616230323030303030303030303030303335303037643034376330343661303530303030303030303030303030303030303030303030303030303030303030303030303061623030303030303030303030303030376330303566303330303030303030303030303030303030363430303634303036343030616230323030303030303030303030303031303037343062303030303030303030303030303030303661306330303030303030303030303030303030303030303030303030303030303030303030303036343034616230313030303030303030303030303763303035663037303030303030303030303030303030303763303036613065303030303030303030303030303030303030303030303030303030303030303030303030376330323634303533633030303030303763303036613130303030303030303030303030303030303030303030303030303030303030303030303030376330323634303633633030303030303763303036613036303030303030303030303030303030303030303030303030303030303030303030303030376330323634303733633030303030303739303032333030333130303733303137373032303130303539303030313030303130303863353137383033353930303737303132333030373430383030303030303030303030303030303032343030373230613031303036343033376330303566303330303030303030303030303030303030353930303863363637373030373830333539303037373031616430333737303139343238346536383133386330313732393436383131386331623562363236663663363432303633373936313665356435353733363537323562326636323666366336343230363337393631366535643934363832313638316636383232373439343238363831653638323438633034373236353631363439343638323238633131343636393663363534653666373434363666373536653634343537323732366637323934386330363530373236663664373037343934386330333631373336623934363832313638316637343934323836383239363832613638326236383264363832653734393436383332386330663632363536363666373236353566373236353733373036663665373336353934386331343433363836313734326536323635363636663732363535663732363537333730366636653733363539343462316334333863653830306638383030306463313231393933323938383037663030343034303931646463313131353930366361303433643431313238613834346438316532323966363939393639396236623930303439343062663730333030313232396634306330303162323139663261393932616430323534326433316134333838303438633066643831663233396637663939376638383036383837636431303831636438323132356437323133326431323133323838303638383765643130383165643831623166396633623939336238383036383837386432303831386637313330303132323964303131323866626534306632306632303030313039316464383161316338383434386534626630303330313039316466633934343333653832306234323232303138653063343230633030396131363432303030336230303834323063303062383431303834323232303163323030303534323039303763323035303734323063303063323063313034323166303363323163303234323232303163323165303134323166303363323166303334323232303139343239323937343934353239343638333934653465346537343934353239343638343136613466303130303030376439343764393432383638336238633066363236353636366637323635356637323635373337303666366537333635393436383435386331343433363836313734326536323635363636663732363535663732363537333730366636653733363539343638343737643934363834393465363834613465363834623638336336383463346536383464346536383465356439343638353037643934323836383165363835333661343430313030303038633062373236393633363832653730373236663664373037343934366134343031303030303933393437353735383639343836353233303863303836383631366536343566366636363636393436383037323836383061323834623033346230303462303034623033346230333462303334333536393730303763303036613030303030303030303030303030303030303030303030303030303030303030303030303030366130333030303030303030303030303030303030303030303030303030303030303030303030306162303030303030303030303030303036343031366232383030303037323031373930303734303530303030303030303030303030303030363430326163303361623031303030303030303030303030353330303934323834653863303736373666366636343632373936353934386330363633363836313734373437393934386330613665363537383734356636313637363536653734393438353934373439343638323138633035366336663737363537323934386330373438363136653634346636363636393438373934363832393863303736333666366537343635373837343934363866633837393436383332386330383638363136653634356636663636363639343863306434333638363137343265363836313665363435663666363636363934346234613433323538303030643830623066386633663839336664373062323064313062323064333062323261303639643230623266643831333137646330663136613032386434306632626430303832623934363862383239323937343934353239343638333934653465346537343934353239343638343136613663303130303030376439343764393432383638336238633038363836313665363435663666363636363934363834353863306434333638363137343265363836313665363435663666363636363934363834373764393436383439346536383461346536383462363833633638346334653638346434653638346535643934363835303764393436613632303130303030386331363636366336663633366232653633366637323635326536363663366636333662356636313637363536653734393436613632303130303030393339343733373538363934383635323330386330363664363536643666373237393934363831313863306137353733363537323566373137353635373237393934363831313735376439343836393438363532333032393831393437643934323836383166356439343638323136383131363830633638313136383232363831313735363238363934353239343265946ac60100004e758c0a73657269616c697a6572948c0b636c6f75647069636b6c65947562738c0672756e5f69649468b98c0b776f726b666c6f775f69649468b98c12776f726b666c6f775f74696d657374616d709468b9756268108c0d6f70656e61692f6770742d346f948c0b6c6f63616c5f646562756794888c106f75747075745f666f726d6174746572948c2c666c6f636b2e636f72652e6c6f6767696e672e666f726d6174746572732e626173655f666f726d6174746572948c10466f726d61747465724f7074696f6e739493942981947d94288c09666f726d6174746572948c2e666c6f636b2e636f72652e6c6f6767696e672e666f726d6174746572732e707072696e745f666f726d6174746572948c145072657474795072696e74466f726d61747465729493948c0e776169745f666f725f696e70757494898c0a6d61785f6c656e677468944de8038c0873657474696e6773944e75628c0b73746172745f6167656e74944e68147d9475622e"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name": "chatty", "model": "openai/gpt-4o", "description": "You are Chatty, a friendly assistant that loves to chat. Today is Saturday, February 15, 2025", "input": "user_query, memory | Memory of previous interactions, chat_history | the current chat history", "output": "answer_to_query, important_new_knowledge_to_add_to_memory | Empty string if no knowledge to add", "tools": ["80059536000000000000008c1c666c6f636b2e636f72652e746f6f6c732e62617369635f746f6f6c73948c117765625f7365617263685f746176696c799493942e"], "use_cache": true, "hand_off": null, "termination": null, "config": {"agent_type_override": null, "disable_output": true, "temperature": 0.0, "max_tokens": 2000}, "initialize_callback": "800595991a0000000000008c17636c6f75647069636b6c652e636c6f75647069636b6c65948c0d5f6275696c74696e5f747970659493948c0a4d6574686f6454797065948594529468008c0e5f6d616b655f66756e6374696f6e9493942868028c08436f6465547970659485945294284b034b004b004b054b064b8342480100004b000100970074010000000000000000ab000000000000007d0309007403000000000000000064016402ab0200000000000035007d047c046a05000000000000000000000000000000000000ab000000000000007c005f030000000000000000640064006400ab020000000000000100740b00000000000000006a0c0000000000000000000000000000000000006404ab010000000000007c005f0700000000000000007c006a0e0000000000000000000000000000000000007c0264053c0000007c006a100000000000000000000000000000000000007c0264063c0000007c006a060000000000000000000000000000000000007c0264073c0000007900230031007301770201005900010001008c517803590077012300740800000000000000002400720a010064037c005f03000000000000000059008c667700780359007701ad03770194284e8c0a6d656d6f72792e747874948c0172948c00948c1b5b626f6c64206379616e5d557365725b2f626f6c64206379616e5d948c0a757365725f7175657279948c0c636861745f686973746f7279948c066d656d6f7279947494288c07436f6e736f6c65948c046f70656e948c04726561649468128c1146696c654e6f74466f756e644572726f72948c0650726f6d7074948c0361736b94681068117494288c0473656c66948c056167656e74948c06696e70757473948c07636f6e736f6c65948c0466696c659474948c3b643a5c50726f6a656374735c666c6f636b5c6578616d706c65735c30325f636f6f6b5f626f6f6b5c73656c665f696d70726f76656d656e742e7079948c0f6265666f72655f726573706f6e7365948c14436861742e6265666f72655f726573706f6e7365944b1c438ce800f88000dc121993298807f00404091ddc1115906ca043d41128a844d81e229f6999699b6b9004940bf703001229f40c001b219f2a992ad02542d31a4388048c0fd81f239f7f997f8806887cd1081cd82125d72132d121328806887ed1081ed81b1f9f3b993b88068878d20818f713001229d01128fbe40f20f20001091dd81a1c88448e4bf00301091dfc94433e820b4222018e0c420c009a16420003b008420c00b84108422201c20005420907c20507420c00c20c10421f03c21c02422201c21e01421f03c21f03422201942929749452947d94288c0b5f5f7061636b6167655f5f944e8c085f5f6e616d655f5f948c085f5f6d61696e5f5f948c085f5f66696c655f5f946821754e4e4e7494529468008c125f66756e6374696f6e5f7365747374617465949394682e7d947d9428682a8c0f6265666f72655f726573706f6e7365948c0c5f5f7175616c6e616d655f5f948c14436861742e6265666f72655f726573706f6e7365948c0f5f5f616e6e6f746174696f6e735f5f947d948c0e5f5f6b7764656661756c74735f5f944e8c0c5f5f64656661756c74735f5f944e8c0a5f5f6d6f64756c655f5f94682b8c075f5f646f635f5f944e8c0b5f5f636c6f737572655f5f944e8c175f636c6f75647069636b6c655f7375626d6f64756c6573945d948c0b5f5f676c6f62616c735f5f947d942868148c0c726963682e636f6e736f6c65946814939468188c0b726963682e70726f6d707494681893947575869486523068008c145f6d616b655f736b656c65746f6e5f636c617373949394288c086275696c74696e73948c04747970659493948c04436861749468488c066f626a65637494939485947d94683a682b738c206431613137373932326538383462656338303536613963303637613930373335944e7494529468008c0f5f636c6173735f736574737461746594939468527d94288c0f5f5f616e6e6f746174696f6e735f5f947d9428681168028c0c47656e65726963416c696173948594529468488c046c69737494939468488c037374729493948594869452946810685e8c0f616e737765725f746f5f717565727994685e6812685e758c145f5f64617461636c6173735f6669656c64735f5f947d942868118c0b64617461636c6173736573948c054669656c649493942981944e7d94288c046e616d659468118c04747970659468618c0764656661756c749468658c0d5f4d495353494e475f545950459493942981948c0f64656661756c745f666163746f727994685c8c047265707294888c0468617368944e8c04696e697494888c07636f6d7061726594888c086d657461646174619468028c104d617070696e6750726f78795479706594859452947d94859452948c076b775f6f6e6c7994898c0b5f6669656c645f747970659468008c225f6765745f64617461636c6173735f6669656c645f747970655f73656e74696e656c9493948c065f4649454c44948594529475869462681068672981944e7d9428686a6810686b685e686c680e6870686f68718868724e6873886874886875687b687c89687d688275869462686268672981944e7d9428686a6862686b685e686c680e6870686f68718868724e6873886874886875687b687c89687d688275869462681268672981944e7d9428686a6812686b685e686c680e6870686f68718868724e6873886874886875687b687c89687d688275869462758c145f5f64617461636c6173735f706172616d735f5f9468658c105f44617461636c617373506172616d739493942981944e7d94286873886871888c02657194888c056f7264657294898c0b756e736166655f6861736894898c0666726f7a656e94898c0a6d617463685f617267739488687c898c05736c6f747394898c0c7765616b7265665f736c6f749489758694628c075f5f646f635f5f948c6c4368617428636861745f686973746f72793a206c6973745b7374725d203d203c666163746f72793e2c20757365725f71756572793a20737472203d2027272c20616e737765725f746f5f71756572793a20737472203d2027272c206d656d6f72793a20737472203d20272729948c065f5f65715f5f94680728680a284b024b004b004b024b054b1343f897007c016a000000000000000000000000000000000000007c006a000000000000000000000000000000000000007500725d7c006a020000000000000000000000000000000000007c006a040000000000000000000000000000000000007c006a060000000000000000000000000000000000007c006a0800000000000000000000000000000000000066047c016a020000000000000000000000000000000000007c016a040000000000000000000000000000000000007c016a060000000000000000000000000000000000007c016a0800000000000000000000000000000000000066046b2800005300740a00000000000000005300944e8594288c095f5f636c6173735f5f9468116810686268128c0e4e6f74496d706c656d656e746564947494681b8c056f746865729486948c083c737472696e673e948c065f5f65715f5f948c1d5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f65715f5f944b0243838000d8050a875f815f98049f0e990ed10526d80b0fd70b1cd10b1c98549f5f995fa854d72d41d12d41c024c72bc12bd00a4fd05257d75264d15264d0656ad76575d16575d0767bf7000077014c02f1000077014c02f000004d025202f700004d025902f100004d025902f0000052015b02f100000b5b02f00000045b02dc0917d002179443009429297494529468284e4e4e74945294683068ac7d947d9428682a8c065f5f65715f5f9468348c0b436861742e5f5f65715f5f9468367d9468384e68394e683a682b683b4e683c4e683d5d94683f7d947586948652308c085f5f686173685f5f944e8c085f5f696e69745f5f94680728680a284b054b004b004b054b024b134354950297007c0189057500720702008906ab000000000000006e017c017c005f0000000000000000007c027c005f0100000000000000007c037c005f0200000000000000007c047c005f0300000000000000007900944e8594286811681068626812749428681b6811681068626812749468a48c085f5f696e69745f5f948c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f696e69745f5f944b024330f88000d83945d0496ad1396ad11433d41435d0707c8024d40213d8121c8024842fd817268024d40216d80e148024852b9468a88c215f5f64617461636c6173735f4841535f44454641554c545f464143544f52595f5f948c1f5f5f64617461636c6173735f64666c745f636861745f686973746f72795f5f948694297494529468284e4e68008c105f6d616b655f656d7074795f63656c6c94939429529468c4295294869474945294683068c97d947d9428682a8c085f5f696e69745f5f9468348c0d436861742e5f5f696e69745f5f9468367d9428681168616810685e6862685e6812685e8c0672657475726e944e7568384e68392868658c1a5f4841535f44454641554c545f464143544f52595f434c415353949394298194680e680e680e7494683a682b683b4e683c68008c0a5f6d616b655f63656c6c94939468d28594529468d5685c859452948694683d5d94683f7d947586948652308c0e5f5f6d617463685f617267735f5f9428681168106862681274948c0a5f5f6d6f64756c655f5f94682b8c085f5f726570725f5f94680728680a284b014b004b004b034b054b1343d295029700740100000000000000007c00ab01000000000000740300000000000000006a04000000000000000000000000000000000000ab0000000000000066027d017c01890376007201790189036a070000000000000000000000000000000000007c01ab0100000000000001000900020089047c00ab010000000000007d0289036a090000000000000000000000000000000000007c01ab0100000000000001007c025300230089036a090000000000000000000000000000000000007c01ab0100000000000001007700780359007701944e8c032e2e2e948694288c026964948c075f746872656164948c096765745f6964656e74948c03616464948c0764697363617264947494681b8c036b6579948c06726573756c749487948c5e433a5c55736572735c617261747a5c417070446174615c526f616d696e675c75765c707974686f6e5c63707974686f6e2d332e31322e382d77696e646f77732d7838365f36342d6e6f6e655c4c69625c64617461636c61737365732e7079948c0777726170706572948c205f7265637572736976655f726570722e3c6c6f63616c733e2e77726170706572944bff4367f88000e40e1090148b689c07d71829d11829d3182bd00e2b8803d80b0e902cd10b1ed81318d80814d70818d108189813d4081df002030926d91522a034d315288846e00c18d70c20d10c20a013d40c25d80f15880df8f003000d19d70c20d10c20a013d50c25fa94430bb808411300c11313412603948c0c726570725f72756e6e696e67948c0d757365725f66756e6374696f6e94869429749452947d94286829680e682a6865682c8c5e433a5c55736572735c617261747a5c417070446174615c526f616d696e675c75765c707974686f6e5c63707974686f6e2d332e31322e382d77696e646f77732d7838365f36342d6e6f6e655c4c69625c64617461636c61737365732e707994754e4e68c429529468c4295294869474945294683068fe7d948c0b5f5f777261707065645f5f94680728680a284b014b004b004b014b0a4b13439e97007c006a000000000000000000000000000000000000006a0200000000000000000000000000000000000064017c006a040000000000000000000000000000000000009b0264027c006a060000000000000000000000000000000000009b0264037c006a080000000000000000000000000000000000009b0264047c006a0a0000000000000000000000000000000000009b0264059d097a000000530094284e8c0e28636861745f686973746f72793d948c0d2c20757365725f71756572793d948c122c20616e737765725f746f5f71756572793d948c092c206d656d6f72793d948c012994749428689f683468116810686268127494681b859468a48c085f5f726570725f5f948c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f726570725f5f944b0243858000d8090d8f1e891ed70924d10924a81eb804d73849d13849d0374cc84dd05a5ed75a69d15a69d0596cd06c7ef0000040024402f7000040025402f1000040025402f000007f015702f0000057026002f0000061026502f7000061026c02f1000061026c02f0000060026f02f000006f027002f00000287102f100000a7102f000000371029468a829297494529468284e4e4e7494529468306a100100007d947d9428682a8c085f5f726570725f5f9468348c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f726570725f5f9468367d9468384e68394e683a682b683b4e683c4e683d5d94683f7d94758694865230737d9428682a8c085f5f726570725f5f9468348c0d436861742e5f5f726570725f5f9468366a1501000068384e68394e683a682b683b4e683c68d58f948594529468d56a10010000859452948694683d5d94683f7d9468e668008c09737562696d706f727494939468e685945294737586948652308c0d5f5f736c6f746e616d65735f5f945d948c0e61667465725f726573706f6e736594680728680a284b044b004b004b094b064b8342180200004b000100970074010000000000000000ab000000000000007d047c036401190000007c005f0100000000000000007c006a040000000000000000000000000000000000006a070000000000000000000000000000000000007c006a080000000000000000000000000000000000007c006a0200000000000000000000000000000000000064029c02ab0100000000000001007c0078016a0a0000000000000000000000000000000000007c036a0d00000000000000000000000000000000000064036404ab0200000000000064057a0000007a0d000063025f050000000000000000740f000000000000000064066407ab0200000000000035007d057c056a110000000000000000000000000000000000007c006a0a000000000000000000000000000000000000ab010000000000000100640064006400ab0200000000000001007c036a0d00000000000000000000000000000000000064086404ab020000000000007d067c06721f741300000000000000007c066409640aac0bab030000000000007d077c046a150000000000000000000000000000000000007c07ab010000000000000100741300000000000000007c006a02000000000000000000000000000000000000640c640dac0bab030000000000007d087c046a150000000000000000000000000000000000007c08ab0100000000000001007900230031007301770201005900010001008c66780359007701ad03770194284e68628c0475736572948c09617373697374616e749486948c28696d706f7274616e745f6e65775f6b6e6f776c656467655f746f5f6164645f746f5f6d656d6f727994680e8c010a94680c8c0177948c09726561736f6e696e67948c2a5b626f6c6420626c75655d417373697374616e7420526561736f6e696e675b2f626f6c6420626c75655d948c04626c7565948c057469746c65948c0c626f726465725f7374796c659486948c295b626f6c6420677265656e5d417373697374616e7420416e737765725b2f626f6c6420677265656e5d948c05677265656e947494286814686268118c06617070656e6494681068128c036765749468158c057772697465948c0550616e656c948c057072696e7494749428681b681c681d8c076f75747075747394681e681f6a330100008c0f726561736f6e696e675f70616e656c948c0c616e737765725f70616e656c94749468218c0e61667465725f726573706f6e7365948c13436861742e61667465725f726573706f6e7365944b2c43e8e800f88000e4121993298807d81f26d02738d11f398804d4081cd8080cd70819d10819d70820d10820a824af2fa92fc804d7485cd1485cd1215dd4085ed8080c8f0b8a0b9077977b917bd0234dc872d31752d05559d11759d108598d0bf406000e12902ca003d40d24a804d80c108f4a894a9074977b917bd40c23f703000e25f00800151c974b914ba00ba852d314308809d90b14dc1e23d81019d81642d81d23f407041f0e884ff00a000d148f4d894d982fd40c2af40600181dd80c10d70c20d10c20d8123dd81920f40704180a880cf00a0009108f0d890d906cd50823f727000e25d00d24fc94431f82413b440a01c13d1c433e03c2194125440a01c33e05440707c40307440a019429297494529468284e4e4e7494529468306a4d0100007d947d9428682a8c0e61667465725f726573706f6e73659468348c13436861742e61667465725f726573706f6e73659468367d9468384e68394e683a682b683b4e683c4e683d5d94683f7d9428681468426a3f0100008c0a726963682e70616e656c946a3f0100009394757586948652308c0f616e737765725f746f5f717565727994680e8c0f6265666f72655f726573706f6e736594682e8c0868616e645f6f666694680728680a284b034b004b004b034b034b03435697007c006a000000000000000000000000000000000000006a03000000000000000000000000000000000000ab0000000000000064016b28000072017900740500000000000000006402ac03ab01000000000000530094284e8c07676f6f64627965948c06636861747479948c0a6e6578745f6167656e74948594749468108c056c6f776572948c0748616e644f6666948794681b8c07636f6e746578749468ec879468218c0868616e645f6f6666948c0d436861742e68616e645f6f6666944b4a43258000d80b0f8f3f893fd70b20d10b20d30b22a069d20b2fd81317dc0f16a028d40f2bd0082b9468a829297494529468284e4e4e7494529468306a6c0100007d947d9428682a8c0868616e645f6f66669468348c0d436861742e68616e645f6f66669468367d9468384e68394e683a682b683b4e683c4e683d5d94683f7d946a620100008c16666c6f636b2e636f72652e666c6f636b5f6167656e74946a620100009394737586948652308c066d656d6f727994680e8c0a757365725f717565727994680e757d9486948652302981947d942868115d946810680e6862680e6812680e7562869452942e", "evaluate_callback": null, "terminate_callback": "800595991a0000000000008c17636c6f75647069636b6c652e636c6f75647069636b6c65948c0d5f6275696c74696e5f747970659493948c0a4d6574686f6454797065948594529468008c0e5f6d616b655f66756e6374696f6e9493942868028c08436f6465547970659485945294284b044b004b004b094b064b8342180200004b000100970074010000000000000000ab000000000000007d047c036401190000007c005f0100000000000000007c006a040000000000000000000000000000000000006a070000000000000000000000000000000000007c006a080000000000000000000000000000000000007c006a0200000000000000000000000000000000000064029c02ab0100000000000001007c0078016a0a0000000000000000000000000000000000007c036a0d00000000000000000000000000000000000064036404ab0200000000000064057a0000007a0d000063025f050000000000000000740f000000000000000064066407ab0200000000000035007d057c056a110000000000000000000000000000000000007c006a0a000000000000000000000000000000000000ab010000000000000100640064006400ab0200000000000001007c036a0d00000000000000000000000000000000000064086404ab020000000000007d067c06721f741300000000000000007c066409640aac0bab030000000000007d077c046a150000000000000000000000000000000000007c07ab010000000000000100741300000000000000007c006a02000000000000000000000000000000000000640c640dac0bab030000000000007d087c046a150000000000000000000000000000000000007c08ab0100000000000001007900230031007301770201005900010001008c66780359007701ad03770194284e8c0f616e737765725f746f5f7175657279948c0475736572948c09617373697374616e749486948c28696d706f7274616e745f6e65775f6b6e6f776c656467655f746f5f6164645f746f5f6d656d6f7279948c00948c010a948c0a6d656d6f72792e747874948c0177948c09726561736f6e696e67948c2a5b626f6c6420626c75655d417373697374616e7420526561736f6e696e675b2f626f6c6420626c75655d948c04626c7565948c057469746c65948c0c626f726465725f7374796c659486948c295b626f6c6420677265656e5d417373697374616e7420416e737765725b2f626f6c6420677265656e5d948c05677265656e947494288c07436f6e736f6c6594680c8c0c636861745f686973746f7279948c06617070656e64948c0a757365725f7175657279948c066d656d6f7279948c03676574948c046f70656e948c057772697465948c0550616e656c948c057072696e74947494288c0473656c66948c056167656e74948c06696e70757473948c076f757470757473948c07636f6e736f6c65948c0466696c659468158c0f726561736f6e696e675f70616e656c948c0c616e737765725f70616e656c9474948c3b643a5c50726f6a656374735c666c6f636b5c6578616d706c65735c30325f636f6f6b5f626f6f6b5c73656c665f696d70726f76656d656e742e7079948c0e61667465725f726573706f6e7365948c13436861742e61667465725f726573706f6e7365944b2c43e8e800f88000e4121993298807d81f26d02738d11f398804d4081cd8080cd70819d10819d70820d10820a824af2fa92fc804d7485cd1485cd1215dd4085ed8080c8f0b8a0b9077977b917bd0234dc872d31752d05559d11759d108598d0bf406000e12902ca003d40d24a804d80c108f4a894a9074977b917bd40c23f703000e25f00800151c974b914ba00ba852d314308809d90b14dc1e23d81019d81642d81d23f407041f0e884ff00a000d148f4d894d982fd40c2af40600181dd80c10d70c20d10c20d8123dd81920f40704180a880cf00a0009108f0d890d906cd50823f727000e25d00d24fc94431f82413b440a01c13d1c433e03c2194125440a01c33e05440707c40307440a01942929749452947d94288c0b5f5f7061636b6167655f5f944e8c085f5f6e616d655f5f948c085f5f6d61696e5f5f948c085f5f66696c655f5f946832754e4e4e7494529468008c125f66756e6374696f6e5f7365747374617465949394683f7d947d9428683b8c0e61667465725f726573706f6e7365948c0c5f5f7175616c6e616d655f5f948c13436861742e61667465725f726573706f6e7365948c0f5f5f616e6e6f746174696f6e735f5f947d948c0e5f5f6b7764656661756c74735f5f944e8c0c5f5f64656661756c74735f5f944e8c0a5f5f6d6f64756c655f5f94683c8c075f5f646f635f5f944e8c0b5f5f636c6f737572655f5f944e8c175f636c6f75647069636b6c655f7375626d6f64756c6573945d948c0b5f5f676c6f62616c735f5f947d9428681e8c0c726963682e636f6e736f6c6594681e939468268c0a726963682e70616e656c94682693947575869486523068008c145f6d616b655f736b656c65746f6e5f636c617373949394288c086275696c74696e73948c04747970659493948c04436861749468598c066f626a65637494939485947d94684b683c738c206431613137373932326538383462656338303536613963303637613930373335944e7494529468008c0f5f636c6173735f736574737461746594939468637d94288c0f5f5f616e6e6f746174696f6e735f5f947d9428681f68028c0c47656e65726963416c696173948594529468598c046c69737494939468598c037374729493948594869452946821686f680c686f6822686f758c145f5f64617461636c6173735f6669656c64735f5f947d9428681f8c0b64617461636c6173736573948c054669656c649493942981944e7d94288c046e616d6594681f8c04747970659468728c0764656661756c749468758c0d5f4d495353494e475f545950459493942981948c0f64656661756c745f666163746f727994686d8c047265707294888c0468617368944e8c04696e697494888c07636f6d7061726594888c086d657461646174619468028c104d617070696e6750726f78795479706594859452947d94859452948c076b775f6f6e6c7994898c0b5f6669656c645f747970659468008c225f6765745f64617461636c6173735f6669656c645f747970655f73656e74696e656c9493948c065f4649454c44948594529475869462682168772981944e7d9428687a6821687b686f687c68116880687f68818868824e6883886884886885688b688c89688d689275869462680c68772981944e7d9428687a680c687b686f687c68116880687f68818868824e6883886884886885688b688c89688d689275869462682268772981944e7d9428687a6822687b686f687c68116880687f68818868824e6883886884886885688b688c89688d689275869462758c145f5f64617461636c6173735f706172616d735f5f9468758c105f44617461636c617373506172616d739493942981944e7d94286883886881888c02657194888c056f7264657294898c0b756e736166655f6861736894898c0666726f7a656e94898c0a6d617463685f617267739488688c898c05736c6f747394898c0c7765616b7265665f736c6f749489758694628c075f5f646f635f5f948c6c4368617428636861745f686973746f72793a206c6973745b7374725d203d203c666163746f72793e2c20757365725f71756572793a20737472203d2027272c20616e737765725f746f5f71756572793a20737472203d2027272c206d656d6f72793a20737472203d20272729948c065f5f65715f5f94680728680a284b024b004b004b024b054b1343f897007c016a000000000000000000000000000000000000007c006a000000000000000000000000000000000000007500725d7c006a020000000000000000000000000000000000007c006a040000000000000000000000000000000000007c006a060000000000000000000000000000000000007c006a0800000000000000000000000000000000000066047c016a020000000000000000000000000000000000007c016a040000000000000000000000000000000000007c016a060000000000000000000000000000000000007c016a0800000000000000000000000000000000000066046b2800005300740a00000000000000005300944e8594288c095f5f636c6173735f5f94681f6821680c68228c0e4e6f74496d706c656d656e74656494749468298c056f746865729486948c083c737472696e673e948c065f5f65715f5f948c1d5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f65715f5f944b0243838000d8050a875f815f98049f0e990ed10526d80b0fd70b1cd10b1c98549f5f995fa854d72d41d12d41c024c72bc12bd00a4fd05257d75264d15264d0656ad76575d16575d0767bf7000077014c02f1000077014c02f000004d025202f700004d025902f100004d025902f0000052015b02f100000b5b02f00000045b02dc0917d002179443009429297494529468394e4e4e74945294684168bc7d947d9428683b8c065f5f65715f5f9468458c0b436861742e5f5f65715f5f9468477d9468494e684a4e684b683c684c4e684d4e684e5d9468507d947586948652308c085f5f686173685f5f944e8c085f5f696e69745f5f94680728680a284b054b004b004b054b024b134354950297007c0189057500720702008906ab000000000000006e017c017c005f0000000000000000007c027c005f0100000000000000007c037c005f0200000000000000007c047c005f0300000000000000007900944e859428681f6821680c68227494286829681f6821680c6822749468b48c085f5f696e69745f5f948c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f696e69745f5f944b024330f88000d83945d0496ad1396ad11433d41435d0707c8024d40213d8121c8024842fd817268024d40216d80e148024852b9468b88c215f5f64617461636c6173735f4841535f44454641554c545f464143544f52595f5f948c1f5f5f64617461636c6173735f64666c745f636861745f686973746f72795f5f948694297494529468394e4e68008c105f6d616b655f656d7074795f63656c6c94939429529468d4295294869474945294684168d97d947d9428683b8c085f5f696e69745f5f9468458c0d436861742e5f5f696e69745f5f9468477d9428681f68726821686f680c686f6822686f8c0672657475726e944e7568494e684a2868758c1a5f4841535f44454641554c545f464143544f52595f434c4153539493942981946811681168117494684b683c684c4e684d68008c0a5f6d616b655f63656c6c94939468e28594529468e5686d859452948694684e5d9468507d947586948652308c0e5f5f6d617463685f617267735f5f9428681f6821680c682274948c0a5f5f6d6f64756c655f5f94683c8c085f5f726570725f5f94680728680a284b014b004b004b034b054b1343d295029700740100000000000000007c00ab01000000000000740300000000000000006a04000000000000000000000000000000000000ab0000000000000066027d017c01890376007201790189036a070000000000000000000000000000000000007c01ab0100000000000001000900020089047c00ab010000000000007d0289036a090000000000000000000000000000000000007c01ab0100000000000001007c025300230089036a090000000000000000000000000000000000007c01ab0100000000000001007700780359007701944e8c032e2e2e948694288c026964948c075f746872656164948c096765745f6964656e74948c03616464948c076469736361726494749468298c036b6579948c06726573756c749487948c5e433a5c55736572735c617261747a5c417070446174615c526f616d696e675c75765c707974686f6e5c63707974686f6e2d332e31322e382d77696e646f77732d7838365f36342d6e6f6e655c4c69625c64617461636c61737365732e7079948c0777726170706572948c205f7265637572736976655f726570722e3c6c6f63616c733e2e77726170706572944bff4367f88000e40e1090148b689c07d71829d11829d3182bd00e2b8803d80b0e902cd10b1ed81318d80814d70818d108189813d4081df002030926d91522a034d315288846e00c18d70c20d10c20a013d40c25d80f15880df8f003000d19d70c20d10c20a013d50c25fa94430bb808411300c11313412603948c0c726570725f72756e6e696e67948c0d757365725f66756e6374696f6e94869429749452947d9428683a6811683b6875683d8c5e433a5c55736572735c617261747a5c417070446174615c526f616d696e675c75765c707974686f6e5c63707974686f6e2d332e31322e382d77696e646f77732d7838365f36342d6e6f6e655c4c69625c64617461636c61737365732e707994754e4e68d429529468d429529486947494529468416a0e0100007d948c0b5f5f777261707065645f5f94680728680a284b014b004b004b014b0a4b13439e97007c006a000000000000000000000000000000000000006a0200000000000000000000000000000000000064017c006a040000000000000000000000000000000000009b0264027c006a060000000000000000000000000000000000009b0264037c006a080000000000000000000000000000000000009b0264047c006a0a0000000000000000000000000000000000009b0264059d097a000000530094284e8c0e28636861745f686973746f72793d948c0d2c20757365725f71756572793d948c122c20616e737765725f746f5f71756572793d948c092c206d656d6f72793d948c01299474942868af6845681f6821680c682274946829859468b48c085f5f726570725f5f948c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f726570725f5f944b0243858000d8090d8f1e891ed70924d10924a81eb804d73849d13849d0374cc84dd05a5ed75a69d15a69d0596cd06c7ef0000040024402f7000040025402f1000040025402f000007f015702f0000057026002f0000061026502f7000061026c02f1000061026c02f0000060026f02f000006f027002f00000287102f100000a7102f000000371029468b829297494529468394e4e4e7494529468416a200100007d947d9428683b8c085f5f726570725f5f9468458c1f5f5f6372656174655f666e5f5f2e3c6c6f63616c733e2e5f5f726570725f5f9468477d9468494e684a4e684b683c684c4e684d4e684e5d9468507d94758694865230737d9428683b8c085f5f726570725f5f9468458c0d436861742e5f5f726570725f5f9468476a2501000068494e684a4e684b683c684c4e684d68e58f948594529468e56a20010000859452948694684e5d9468507d9468f668008c09737562696d706f727494939468f685945294737586948652308c0d5f5f736c6f746e616d65735f5f945d948c0e61667465725f726573706f6e736594683f8c0f616e737765725f746f5f71756572799468118c0f6265666f72655f726573706f6e736594680728680a284b034b004b004b054b064b8342480100004b000100970074010000000000000000ab000000000000007d0309007403000000000000000064016402ab0200000000000035007d047c046a05000000000000000000000000000000000000ab000000000000007c005f030000000000000000640064006400ab020000000000000100740b00000000000000006a0c0000000000000000000000000000000000006404ab010000000000007c005f0700000000000000007c006a0e0000000000000000000000000000000000007c0264053c0000007c006a100000000000000000000000000000000000007c0264063c0000007c006a060000000000000000000000000000000000007c0264073c0000007900230031007301770201005900010001008c517803590077012300740800000000000000002400720a010064037c005f03000000000000000059008c667700780359007701ad03770194284e68138c01729468118c1b5b626f6c64206379616e5d557365725b2f626f6c64206379616e5d946821681f6822749428681e68248c04726561649468228c1146696c654e6f74466f756e644572726f72948c0650726f6d7074948c0361736b946821681f7494286829682a682b682d682e749468328c0f6265666f72655f726573706f6e7365948c14436861742e6265666f72655f726573706f6e7365944b1c438ce800f88000dc121993298807f00404091ddc1115906ca043d41128a844d81e229f6999699b6b9004940bf703001229f40c001b219f2a992ad02542d31a4388048c0fd81f239f7f997f8806887cd1081cd82125d72132d121328806887ed1081ed81b1f9f3b993b88068878d20818f713001229d01128fbe40f20f20001091dd81a1c88448e4bf00301091dfc94433e820b4222018e0c420c009a16420003b008420c00b84108422201c20005420907c20507420c00c20c10421f03c21c02422201c21e01421f03c21f034222019429297494529468394e4e4e7494529468416a4f0100007d947d9428683b8c0f6265666f72655f726573706f6e73659468458c14436861742e6265666f72655f726573706f6e73659468477d9468494e684a4e684b683c684c4e684d4e684e5d9468507d9428681e68536a440100008c0b726963682e70726f6d7074946a440100009394757586948652308c0868616e645f6f666694680728680a284b034b004b004b034b034b03435697007c006a000000000000000000000000000000000000006a03000000000000000000000000000000000000ab0000000000000064016b28000072017900740500000000000000006402ac03ab01000000000000530094284e8c07676f6f64627965948c06636861747479948c0a6e6578745f6167656e74948594749468218c056c6f776572948c0748616e644f666694879468298c07636f6e746578749468fc879468328c0868616e645f6f6666948c0d436861742e68616e645f6f6666944b4a43258000d80b0f8f3f893fd70b20d10b20d30b22a069d20b2fd81317dc0f16a028d40f2bd0082b9468b829297494529468394e4e4e7494529468416a6c0100007d947d9428683b8c0868616e645f6f66669468458c0d436861742e68616e645f6f66669468477d9468494e684a4e684b683c684c4e684d4e684e5d9468507d946a620100008c16666c6f636b2e636f72652e666c6f636b5f6167656e74946a620100009394737586948652308c066d656d6f72799468118c0a757365725f7175657279946811757d9486948652302981947d9428681f5d9468216811680c6811682268117562869452942e", "on_error_callback": null}
|
flock/cli/load_agent.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# TODO
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# TODO
|
flock/cli/load_flock.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Load a Flock from a file."""
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import questionary
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from rich.markdown import Markdown
|
|
8
|
+
|
|
9
|
+
from flock.core.flock import Flock
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def filter(file_path) -> bool:
|
|
13
|
+
"""Filter function for file selection."""
|
|
14
|
+
path = Path(file_path)
|
|
15
|
+
if path.is_dir():
|
|
16
|
+
return True
|
|
17
|
+
return path.is_file() and path.suffix == ".flock"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def load_flock():
|
|
21
|
+
"""Load a Flock from a file."""
|
|
22
|
+
console = Console()
|
|
23
|
+
|
|
24
|
+
console.print("\nPlease select a *.flock file\n", style="bold green")
|
|
25
|
+
|
|
26
|
+
result = questionary.path("", file_filter=filter).ask()
|
|
27
|
+
|
|
28
|
+
selected_file = Path(result)
|
|
29
|
+
if selected_file.is_file():
|
|
30
|
+
console.print(f"Selected file: {selected_file}", style="bold green")
|
|
31
|
+
|
|
32
|
+
flock = Flock.load_from_file(result)
|
|
33
|
+
|
|
34
|
+
console.line()
|
|
35
|
+
console.print(Markdown("# Flock loaded...."), style="bold orange")
|
|
36
|
+
console.line()
|
|
37
|
+
|
|
38
|
+
flock.run()
|
flock/cli/settings.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# TODO
|
flock/core/flock.py
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"""High-level orchestrator for creating and executing agents."""
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
4
|
+
import json
|
|
3
5
|
import os
|
|
4
6
|
import uuid
|
|
5
|
-
from typing import TypeVar
|
|
7
|
+
from typing import Any, TypeVar
|
|
6
8
|
|
|
9
|
+
import cloudpickle
|
|
7
10
|
from opentelemetry import trace
|
|
8
11
|
from opentelemetry.baggage import get_baggage, set_baggage
|
|
9
12
|
|
|
@@ -78,6 +81,8 @@ class Flock:
|
|
|
78
81
|
self.model = model
|
|
79
82
|
self.local_debug = local_debug
|
|
80
83
|
self.output_formatter = output_formatter
|
|
84
|
+
self.start_agent: FlockAgent | str | None = None
|
|
85
|
+
self.input: dict = {}
|
|
81
86
|
|
|
82
87
|
if local_debug:
|
|
83
88
|
os.environ["LOCAL_DEBUG"] = "1"
|
|
@@ -142,9 +147,173 @@ class Flock:
|
|
|
142
147
|
self.registry.register_tool(tool_name, tool)
|
|
143
148
|
logger.debug("Tool registered successfully")
|
|
144
149
|
|
|
150
|
+
def run(
|
|
151
|
+
self,
|
|
152
|
+
start_agent: FlockAgent | str | None = None,
|
|
153
|
+
input: dict = {},
|
|
154
|
+
context: FlockContext = None,
|
|
155
|
+
run_id: str = "",
|
|
156
|
+
box_result: bool = True,
|
|
157
|
+
) -> dict:
|
|
158
|
+
"""Entry point for running an agent system synchronously."""
|
|
159
|
+
return asyncio.run(
|
|
160
|
+
self.run_async(start_agent, input, context, run_id, box_result)
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
def save_to_file(
|
|
164
|
+
self,
|
|
165
|
+
file_path: str,
|
|
166
|
+
start_agent: str | None = None,
|
|
167
|
+
input: dict | None = None,
|
|
168
|
+
) -> None:
|
|
169
|
+
"""Save the Flock instance to a file.
|
|
170
|
+
|
|
171
|
+
This method serializes the Flock instance to a dictionary using the `to_dict()` method and saves it to a file.
|
|
172
|
+
The saved file can be reloaded later using the `from_file()` method.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
file_path (str): The path to the file where the Flock instance should be saved.
|
|
176
|
+
"""
|
|
177
|
+
hex_str = cloudpickle.dumps(self).hex()
|
|
178
|
+
|
|
179
|
+
result = {
|
|
180
|
+
"start_agent": start_agent,
|
|
181
|
+
"input": input,
|
|
182
|
+
"flock": hex_str,
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
path = os.path.dirname(file_path)
|
|
186
|
+
if path:
|
|
187
|
+
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
188
|
+
|
|
189
|
+
with open(file_path, "w") as file:
|
|
190
|
+
file.write(json.dumps(result))
|
|
191
|
+
|
|
192
|
+
@staticmethod
|
|
193
|
+
def load_from_file(file_path: str) -> "Flock":
|
|
194
|
+
"""Load a Flock instance from a file.
|
|
195
|
+
|
|
196
|
+
This class method deserializes a Flock instance from a file that was previously saved using the `save_to_file()`
|
|
197
|
+
method. It reads the file, converts the hexadecimal string back into a Flock instance, and returns it.
|
|
198
|
+
|
|
199
|
+
Args:
|
|
200
|
+
file_path (str): The path to the file containing the serialized Flock instance.
|
|
201
|
+
|
|
202
|
+
Returns:
|
|
203
|
+
Flock: A new Flock instance reconstructed from the saved file.
|
|
204
|
+
"""
|
|
205
|
+
with open(file_path) as file:
|
|
206
|
+
json_flock = json.load(file)
|
|
207
|
+
hex_str = json_flock["flock"]
|
|
208
|
+
flock = cloudpickle.loads(bytes.fromhex(hex_str))
|
|
209
|
+
if json_flock["start_agent"]:
|
|
210
|
+
agent = flock.registry.get_agent(json_flock["start_agent"])
|
|
211
|
+
flock.start_agent = agent
|
|
212
|
+
if json_flock["input"]:
|
|
213
|
+
flock.input = json_flock["input"]
|
|
214
|
+
return flock
|
|
215
|
+
|
|
216
|
+
def to_dict(self) -> dict[str, Any]:
|
|
217
|
+
"""Serialize the FlockAgent instance to a dictionary.
|
|
218
|
+
|
|
219
|
+
This method converts the entire agent instance—including its configuration, state, and lifecycle hooks—
|
|
220
|
+
into a dictionary format. It uses cloudpickle to serialize any callable objects (such as functions or
|
|
221
|
+
methods), converting them into hexadecimal string representations. This ensures that the agent can be
|
|
222
|
+
easily persisted, transmitted, or logged as JSON.
|
|
223
|
+
|
|
224
|
+
The serialization process is recursive:
|
|
225
|
+
- If a field is a callable (and not a class), it is serialized using cloudpickle.
|
|
226
|
+
- Lists and dictionaries are processed recursively to ensure that all nested callables are properly handled.
|
|
227
|
+
|
|
228
|
+
**Returns:**
|
|
229
|
+
dict[str, Any]: A dictionary representing the FlockAgent, which includes all of its configuration data.
|
|
230
|
+
This dictionary is suitable for storage, debugging, or transmission over the network.
|
|
231
|
+
|
|
232
|
+
**Example:**
|
|
233
|
+
For an agent defined as:
|
|
234
|
+
name = "idea_agent",
|
|
235
|
+
model = "openai/gpt-4o",
|
|
236
|
+
input = "query: str | The search query, context: dict | The full conversation context",
|
|
237
|
+
output = "idea: str | The generated idea"
|
|
238
|
+
Calling `agent.to_dict()` might produce:
|
|
239
|
+
{
|
|
240
|
+
"name": "idea_agent",
|
|
241
|
+
"model": "openai/gpt-4o",
|
|
242
|
+
"input": "query: str | The search query, context: dict | The full conversation context",
|
|
243
|
+
"output": "idea: str | The generated idea",
|
|
244
|
+
"tools": ["<serialized tool representation>"],
|
|
245
|
+
"use_cache": False,
|
|
246
|
+
"hand_off": None,
|
|
247
|
+
"termination": None,
|
|
248
|
+
...
|
|
249
|
+
}
|
|
250
|
+
"""
|
|
251
|
+
|
|
252
|
+
def convert_callable(obj: Any) -> Any:
|
|
253
|
+
if callable(obj) and not isinstance(obj, type):
|
|
254
|
+
return cloudpickle.dumps(obj).hex()
|
|
255
|
+
if isinstance(obj, list):
|
|
256
|
+
return [convert_callable(item) for item in obj]
|
|
257
|
+
if isinstance(obj, dict):
|
|
258
|
+
return {k: convert_callable(v) for k, v in obj.items()}
|
|
259
|
+
return obj
|
|
260
|
+
|
|
261
|
+
data = self.model_dump()
|
|
262
|
+
return convert_callable(data)
|
|
263
|
+
|
|
264
|
+
@classmethod
|
|
265
|
+
def from_dict(cls: type[T], data: dict[str, Any]) -> T:
|
|
266
|
+
"""Deserialize a FlockAgent instance from a dictionary.
|
|
267
|
+
|
|
268
|
+
This class method reconstructs a FlockAgent from its serialized dictionary representation, as produced
|
|
269
|
+
by the `to_dict()` method. It recursively processes the dictionary to convert any serialized callables
|
|
270
|
+
(stored as hexadecimal strings via cloudpickle) back into executable callable objects.
|
|
271
|
+
|
|
272
|
+
**Arguments:**
|
|
273
|
+
data (dict[str, Any]): A dictionary representation of a FlockAgent, typically produced by `to_dict()`.
|
|
274
|
+
The dictionary should contain all configuration fields and state information necessary to fully
|
|
275
|
+
reconstruct the agent.
|
|
276
|
+
|
|
277
|
+
**Returns:**
|
|
278
|
+
FlockAgent: An instance of FlockAgent reconstructed from the provided dictionary. The deserialized agent
|
|
279
|
+
will have the same configuration, state, and behavior as the original instance.
|
|
280
|
+
|
|
281
|
+
**Example:**
|
|
282
|
+
Suppose you have the following dictionary:
|
|
283
|
+
{
|
|
284
|
+
"name": "idea_agent",
|
|
285
|
+
"model": "openai/gpt-4o",
|
|
286
|
+
"input": "query: str | The search query, context: dict | The full conversation context",
|
|
287
|
+
"output": "idea: str | The generated idea",
|
|
288
|
+
"tools": ["<serialized tool representation>"],
|
|
289
|
+
"use_cache": False,
|
|
290
|
+
"hand_off": None,
|
|
291
|
+
"termination": None,
|
|
292
|
+
...
|
|
293
|
+
}
|
|
294
|
+
Then, calling:
|
|
295
|
+
agent = FlockAgent.from_dict(data)
|
|
296
|
+
will return a FlockAgent instance with the same properties and behavior as when it was originally serialized.
|
|
297
|
+
"""
|
|
298
|
+
|
|
299
|
+
def convert_callable(obj: Any) -> Any:
|
|
300
|
+
if isinstance(obj, str) and len(obj) > 2:
|
|
301
|
+
try:
|
|
302
|
+
return cloudpickle.loads(bytes.fromhex(obj))
|
|
303
|
+
except Exception:
|
|
304
|
+
return obj
|
|
305
|
+
if isinstance(obj, list):
|
|
306
|
+
return [convert_callable(item) for item in obj]
|
|
307
|
+
if isinstance(obj, dict):
|
|
308
|
+
return {k: convert_callable(v) for k, v in obj.items()}
|
|
309
|
+
return obj
|
|
310
|
+
|
|
311
|
+
converted = convert_callable(data)
|
|
312
|
+
return cls(**converted)
|
|
313
|
+
|
|
145
314
|
async def run_async(
|
|
146
315
|
self,
|
|
147
|
-
start_agent: FlockAgent | str,
|
|
316
|
+
start_agent: FlockAgent | str | None = None,
|
|
148
317
|
input: dict = {},
|
|
149
318
|
context: FlockContext = None,
|
|
150
319
|
run_id: str = "",
|
|
@@ -180,57 +349,63 @@ class Flock:
|
|
|
180
349
|
if hasattr(start_agent, "name")
|
|
181
350
|
else start_agent,
|
|
182
351
|
)
|
|
352
|
+
if start_agent:
|
|
353
|
+
self.start_agent = start_agent
|
|
354
|
+
if input:
|
|
355
|
+
self.input = input
|
|
183
356
|
|
|
184
|
-
span.set_attribute("input", str(input))
|
|
357
|
+
span.set_attribute("input", str(self.input))
|
|
185
358
|
span.set_attribute("context", str(context))
|
|
186
359
|
span.set_attribute("run_id", run_id)
|
|
187
360
|
span.set_attribute("box_result", box_result)
|
|
188
361
|
|
|
189
362
|
try:
|
|
190
|
-
if isinstance(start_agent, str):
|
|
363
|
+
if isinstance(self.start_agent, str):
|
|
191
364
|
logger.debug(
|
|
192
|
-
"Looking up agent by name", agent_name=start_agent
|
|
365
|
+
"Looking up agent by name", agent_name=self.start_agent
|
|
193
366
|
)
|
|
194
|
-
start_agent = self.registry.get_agent(start_agent)
|
|
195
|
-
if not start_agent:
|
|
196
|
-
logger.error(
|
|
367
|
+
self.start_agent = self.registry.get_agent(self.start_agent)
|
|
368
|
+
if not self.start_agent:
|
|
369
|
+
logger.error(
|
|
370
|
+
"Agent not found", agent_name=self.start_agent
|
|
371
|
+
)
|
|
197
372
|
raise ValueError(
|
|
198
|
-
f"Agent '{start_agent}' not found in registry"
|
|
373
|
+
f"Agent '{self.start_agent}' not found in registry"
|
|
199
374
|
)
|
|
200
|
-
start_agent.resolve_callables(context=self.context)
|
|
375
|
+
self.start_agent.resolve_callables(context=self.context)
|
|
201
376
|
if context:
|
|
202
377
|
logger.debug("Using provided context")
|
|
203
378
|
self.context = context
|
|
204
379
|
if not run_id:
|
|
205
|
-
run_id = f"{start_agent.name}_{uuid.uuid4().hex[:4]}"
|
|
380
|
+
run_id = f"{self.start_agent.name}_{uuid.uuid4().hex[:4]}"
|
|
206
381
|
logger.debug("Generated run ID", run_id=run_id)
|
|
207
382
|
|
|
208
383
|
set_baggage("run_id", run_id)
|
|
209
384
|
|
|
210
385
|
# TODO - Add a check for required input keys
|
|
211
|
-
input_keys = top_level_to_keys(start_agent.input)
|
|
386
|
+
input_keys = top_level_to_keys(self.start_agent.input)
|
|
212
387
|
for key in input_keys:
|
|
213
388
|
if key.startswith("flock."):
|
|
214
389
|
key = key[6:] # Remove the "flock." prefix
|
|
215
|
-
if key not in input:
|
|
390
|
+
if key not in self.input:
|
|
216
391
|
from rich.prompt import Prompt
|
|
217
392
|
|
|
218
|
-
input[key] = Prompt.ask(
|
|
219
|
-
f"Please enter {key} for {start_agent.name}"
|
|
393
|
+
self.input[key] = Prompt.ask(
|
|
394
|
+
f"Please enter {key} for {self.start_agent.name}"
|
|
220
395
|
)
|
|
221
396
|
|
|
222
397
|
# Initialize the context with standardized variables
|
|
223
398
|
initialize_context(
|
|
224
399
|
self.context,
|
|
225
|
-
start_agent.name,
|
|
226
|
-
input,
|
|
400
|
+
self.start_agent.name,
|
|
401
|
+
self.input,
|
|
227
402
|
run_id,
|
|
228
403
|
self.local_debug,
|
|
229
404
|
)
|
|
230
405
|
|
|
231
406
|
logger.info(
|
|
232
407
|
"Starting agent execution",
|
|
233
|
-
agent=start_agent.name,
|
|
408
|
+
agent=self.start_agent.name,
|
|
234
409
|
local_debug=self.local_debug,
|
|
235
410
|
)
|
|
236
411
|
|
flock/core/flock_agent.py
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"""FlockAgent is the core, declarative base class for all agents in the Flock framework."""
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
4
|
+
import json
|
|
5
|
+
import os
|
|
3
6
|
from abc import ABC
|
|
4
7
|
from collections.abc import Awaitable, Callable
|
|
5
8
|
from dataclasses import dataclass, field
|
|
6
|
-
from typing import Any,
|
|
9
|
+
from typing import Any, TypeVar, Union
|
|
7
10
|
|
|
8
11
|
import cloudpickle
|
|
9
12
|
from pydantic import BaseModel, Field
|
|
@@ -21,6 +24,9 @@ from opentelemetry import trace
|
|
|
21
24
|
tracer = trace.get_tracer(__name__)
|
|
22
25
|
|
|
23
26
|
|
|
27
|
+
T = TypeVar("T", bound="FlockAgent")
|
|
28
|
+
|
|
29
|
+
|
|
24
30
|
@dataclass
|
|
25
31
|
class FlockAgentConfig:
|
|
26
32
|
"""Configuration options for a FlockAgent."""
|
|
@@ -34,13 +40,12 @@ class FlockAgentConfig:
|
|
|
34
40
|
disable_output: bool = field(
|
|
35
41
|
default=False, metadata={"description": "Disables the agent's output."}
|
|
36
42
|
)
|
|
37
|
-
|
|
38
|
-
default=
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
43
|
+
temperature: float = field(
|
|
44
|
+
default=0.0, metadata={"description": "Temperature for the LLM"}
|
|
45
|
+
)
|
|
46
|
+
max_tokens: int = field(
|
|
47
|
+
default=2000, metadata={"description": "Max tokens for the LLM"}
|
|
42
48
|
)
|
|
43
|
-
data_type: Literal["json", "cloudpickle", "msgpack"] = "cloudpickle"
|
|
44
49
|
|
|
45
50
|
|
|
46
51
|
@dataclass
|
|
@@ -188,6 +193,12 @@ class FlockAgent(BaseModel, ABC, PromptParserMixin, DSPyIntegrationMixin):
|
|
|
188
193
|
description="Optional callback function for initialization. If provided, this async function is called with the inputs.",
|
|
189
194
|
)
|
|
190
195
|
)
|
|
196
|
+
evaluate_callback: (
|
|
197
|
+
Callable[[dict[str, Any]], Awaitable[dict[str, Any]]] | None
|
|
198
|
+
) = Field(
|
|
199
|
+
default=None,
|
|
200
|
+
description="Optional callback function for evaluate. If provided, this async function is called with the inputs instead of the internal evaluate",
|
|
201
|
+
)
|
|
191
202
|
terminate_callback: (
|
|
192
203
|
Callable[[dict[str, Any], dict[str, Any]], Awaitable[None]] | None
|
|
193
204
|
) = Field(
|
|
@@ -296,6 +307,8 @@ class FlockAgent(BaseModel, ABC, PromptParserMixin, DSPyIntegrationMixin):
|
|
|
296
307
|
with tracer.start_as_current_span("agent.evaluate") as span:
|
|
297
308
|
span.set_attribute("agent.name", self.name)
|
|
298
309
|
span.set_attribute("inputs", str(inputs))
|
|
310
|
+
if self.evaluate_callback is not None:
|
|
311
|
+
return await self.evaluate_callback(self, inputs)
|
|
299
312
|
try:
|
|
300
313
|
# Create and configure the signature and language model.
|
|
301
314
|
self.__dspy_signature = self.create_dspy_signature_class(
|
|
@@ -323,7 +336,33 @@ class FlockAgent(BaseModel, ABC, PromptParserMixin, DSPyIntegrationMixin):
|
|
|
323
336
|
span.record_exception(eval_error)
|
|
324
337
|
raise
|
|
325
338
|
|
|
326
|
-
|
|
339
|
+
def save_to_file(self, file_path: str | None = None) -> None:
|
|
340
|
+
"""Save the serialized agent to a file."""
|
|
341
|
+
if file_path is None:
|
|
342
|
+
file_path = f"{self.name}.json"
|
|
343
|
+
dict_data = self.to_dict()
|
|
344
|
+
|
|
345
|
+
# create all needed directories
|
|
346
|
+
path = os.path.dirname(file_path)
|
|
347
|
+
if path:
|
|
348
|
+
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
349
|
+
|
|
350
|
+
with open(file_path, "w") as file:
|
|
351
|
+
file.write(json.dumps(dict_data))
|
|
352
|
+
|
|
353
|
+
@classmethod
|
|
354
|
+
def load_from_file(cls: type[T], file_path: str) -> T:
|
|
355
|
+
"""Load a serialized agent from a file."""
|
|
356
|
+
with open(file_path) as file:
|
|
357
|
+
data = json.load(file)
|
|
358
|
+
# Fallback: use the current class.
|
|
359
|
+
return cls.from_dict(data)
|
|
360
|
+
|
|
361
|
+
def run(self, inputs: dict[str, Any]) -> dict[str, Any]:
|
|
362
|
+
"""Run the agent with the given inputs and return its generated output."""
|
|
363
|
+
return asyncio.run(self.run_async(inputs))
|
|
364
|
+
|
|
365
|
+
async def run_async(self, inputs: dict[str, Any]) -> dict[str, Any]:
|
|
327
366
|
"""Run the agent with the given inputs and return its generated output.
|
|
328
367
|
|
|
329
368
|
This method represents the primary execution flow for a FlockAgent and performs the following
|
|
@@ -526,7 +565,7 @@ class FlockAgent(BaseModel, ABC, PromptParserMixin, DSPyIntegrationMixin):
|
|
|
526
565
|
return convert_callable(data)
|
|
527
566
|
|
|
528
567
|
@classmethod
|
|
529
|
-
def from_dict(cls, data: dict[str, Any]) ->
|
|
568
|
+
def from_dict(cls: type[T], data: dict[str, Any]) -> T:
|
|
530
569
|
"""Deserialize a FlockAgent instance from a dictionary.
|
|
531
570
|
|
|
532
571
|
This class method reconstructs a FlockAgent from its serialized dictionary representation, as produced
|
|
@@ -20,6 +20,12 @@ class PrettyPrintFormatter(BaseFormatter):
|
|
|
20
20
|
|
|
21
21
|
def display_data(self, data: dict[str, Any], **kwargs) -> None:
|
|
22
22
|
"""Print an agent's result using Rich formatting."""
|
|
23
|
-
from devtools import
|
|
23
|
+
from devtools import pformat
|
|
24
|
+
from rich.console import Console
|
|
25
|
+
from rich.panel import Panel
|
|
26
|
+
|
|
27
|
+
console = Console()
|
|
28
|
+
|
|
29
|
+
s = pformat(data, highlight=False)
|
|
24
30
|
|
|
25
|
-
|
|
31
|
+
console.print(Panel(s, highlight=True))
|
|
@@ -147,7 +147,12 @@ class DSPyIntegrationMixin:
|
|
|
147
147
|
import dspy
|
|
148
148
|
|
|
149
149
|
"""Initialize and configure the language model using dspy."""
|
|
150
|
-
lm = dspy.LM(
|
|
150
|
+
lm = dspy.LM(
|
|
151
|
+
self.model,
|
|
152
|
+
cache=self.use_cache,
|
|
153
|
+
temperature=self.config.temperature,
|
|
154
|
+
max_tokens=self.config.max_tokens,
|
|
155
|
+
)
|
|
151
156
|
dspy.configure(lm=lm)
|
|
152
157
|
|
|
153
158
|
def _select_task(
|
flock/workflow/activities.py
CHANGED
|
@@ -64,7 +64,7 @@ async def run_agent(
|
|
|
64
64
|
with tracer.start_as_current_span("execute_agent") as exec_span:
|
|
65
65
|
logger.info("Executing agent", agent=agent.name)
|
|
66
66
|
try:
|
|
67
|
-
result = await agent.
|
|
67
|
+
result = await agent.run_async(agent_inputs)
|
|
68
68
|
exec_span.set_attribute("result", str(result))
|
|
69
69
|
logger.debug(
|
|
70
70
|
"Agent execution completed", agent=agent.name
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.14
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -24,6 +24,7 @@ Requires-Dist: opentelemetry-sdk>=1.30.0
|
|
|
24
24
|
Requires-Dist: pydantic>=2.10.5
|
|
25
25
|
Requires-Dist: python-box>=7.3.2
|
|
26
26
|
Requires-Dist: python-decouple>=3.8
|
|
27
|
+
Requires-Dist: questionary>=2.1.0
|
|
27
28
|
Requires-Dist: rich>=13.9.4
|
|
28
29
|
Requires-Dist: temporalio>=1.9.0
|
|
29
30
|
Requires-Dist: toml>=0.10.2
|
|
@@ -63,6 +64,13 @@ Flock is a framework for orchestrating LLM-powered agents. It leverages a **decl
|
|
|
63
64
|
| • Hard to scale and parallelize | • Modular, concurrent, and batch processing |
|
|
64
65
|
| | |
|
|
65
66
|
|
|
67
|
+
## Video Demonstration
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
66
74
|
|
|
67
75
|
## Key Innovations
|
|
68
76
|
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
flock/__init__.py,sha256=
|
|
1
|
+
flock/__init__.py,sha256=xwibwZoGIZEfpn-Sg-fkwTRQTKU2aOZyY5dYCc6xZ1s,1208
|
|
2
2
|
flock/config.py,sha256=5WvDubaeM6eVyPrawybxvv3SwORArGeWi9rBZpCrAME,1548
|
|
3
|
+
flock/cli/constants.py,sha256=A-Sg4nQ3EnAR5u0yj6gyzmzHAnCbqidi60ADXaRT9AQ,591
|
|
4
|
+
flock/cli/create_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
|
5
|
+
flock/cli/create_flock.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
|
6
|
+
flock/cli/load_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
|
7
|
+
flock/cli/load_examples.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
|
8
|
+
flock/cli/load_flock.py,sha256=3JdECvt5X7uyOG2vZS3-Zk5C5SI_84_QZjcsB3oJmfA,932
|
|
9
|
+
flock/cli/settings.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
|
10
|
+
flock/cli/examples/chatty.flock,sha256=GY_13mK3KvyKBA11WexFd_reRj2BtYv8RMMdr8r66Yw,78005
|
|
11
|
+
flock/cli/examples/chatty.json,sha256=OE0CNbFooSRPYkfH5B40XubRovPxE2ftnRszbDylOdY,28066
|
|
3
12
|
flock/core/__init__.py,sha256=0Xq_txurlxxjKGXjRn6GNJusGTiBcd7zw2eF0L7JyuU,183
|
|
4
|
-
flock/core/flock.py,sha256=
|
|
5
|
-
flock/core/flock_agent.py,sha256=
|
|
13
|
+
flock/core/flock.py,sha256=sskivShC3D41HvQG4yalTjgAqTpf6aK2YJQQucf0_bA,17661
|
|
14
|
+
flock/core/flock_agent.py,sha256=IdSSOdSKmyhZi7M1N-tL3ovbDJQ-UbpGJUW_C6BhPug,29175
|
|
6
15
|
flock/core/context/context.py,sha256=jH06w4C_O5CEL-YxjX_x_dmgLe9Rcllnn1Ebs0dvwaE,6171
|
|
7
16
|
flock/core/context/context_manager.py,sha256=qMySVny_dbTNLh21RHK_YT0mNKIOrqJDZpi9ZVdBsxU,1103
|
|
8
17
|
flock/core/context/context_vars.py,sha256=0Hn6fM2iNc0_jIIU0B7KX-K2o8qXqtZ5EYtwujETQ7U,272
|
|
@@ -14,7 +23,7 @@ flock/core/logging/telemetry.py,sha256=On-ywmCUks7FNq7xwdhksfJhH-TlDwErGsNmE0LFT
|
|
|
14
23
|
flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
|
|
15
24
|
flock/core/logging/formatters/base_formatter.py,sha256=CyG-X2NWq8sqEhFEO2aG7Mey5tVkIzoWiihW301_VIo,1023
|
|
16
25
|
flock/core/logging/formatters/formatter_factory.py,sha256=hmH-NpCESHkioX0GBQ5CuQR4axyIXnSRWwAZCHylx6Q,1283
|
|
17
|
-
flock/core/logging/formatters/pprint_formatter.py,sha256=
|
|
26
|
+
flock/core/logging/formatters/pprint_formatter.py,sha256=u8fofzAeSWb70CFXhRnEXlLLFOGkOhVWN9iju0DYhv0,928
|
|
18
27
|
flock/core/logging/formatters/rich_formatters.py,sha256=h1FD0_cIdQBQ8P2x05XhgD1cmmP80IBNVT5jb3cAV9M,4776
|
|
19
28
|
flock/core/logging/formatters/theme_builder.py,sha256=1RUEwPIDfCjwTapbK1liasA5SdukOn7YwbZ4H4j1WkI,17364
|
|
20
29
|
flock/core/logging/formatters/themed_formatter.py,sha256=CbxmqUC7zkLzyIxngk-3dcpQ6vxPR6zaDNA2TAMitCI,16714
|
|
@@ -22,7 +31,7 @@ flock/core/logging/span_middleware/baggage_span_processor.py,sha256=gJfRl8FeB6jd
|
|
|
22
31
|
flock/core/logging/telemetry_exporter/base_exporter.py,sha256=rQJJzS6q9n2aojoSqwCnl7ZtHrh5LZZ-gkxUuI5WfrQ,1124
|
|
23
32
|
flock/core/logging/telemetry_exporter/file_exporter.py,sha256=nKAjJSZtA7FqHSTuTiFtYYepaxOq7l1rDvs8U8rSBlA,3023
|
|
24
33
|
flock/core/logging/telemetry_exporter/sqlite_exporter.py,sha256=CDsiMb9QcqeXelZ6ZqPSS56ovMPGqOu6whzBZRK__Vg,3498
|
|
25
|
-
flock/core/mixin/dspy_integration.py,sha256=
|
|
34
|
+
flock/core/mixin/dspy_integration.py,sha256=d4O3UdF6QTNWM29YtBNVb_iLWUrTUj6ovfy_iJs7DUc,8316
|
|
26
35
|
flock/core/mixin/prompt_parser.py,sha256=eOqI-FK3y17gVqpc_y5GF-WmK1Jv8mFlkZxTcgweoxI,5121
|
|
27
36
|
flock/core/registry/agent_registry.py,sha256=YkYIyvFNjm7gYKRAiQQdOvVYMtsYH5cijfrv_GP4ZHc,4889
|
|
28
37
|
flock/core/tools/basic_tools.py,sha256=OwWaFu4NoVrc3Uijj56RY9XDDaP_mOnEa5B3wSWwwLE,4756
|
|
@@ -370,12 +379,12 @@ flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1
|
|
|
370
379
|
flock/themes/zenwritten-dark.toml,sha256=To5l6520_3UqAGiEumpzGWsHhXxqu9ThrMildXKgIO0,1669
|
|
371
380
|
flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
|
|
372
381
|
flock/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
373
|
-
flock/workflow/activities.py,sha256=
|
|
382
|
+
flock/workflow/activities.py,sha256=xLLVpwt3PzSfcLmRF2hGFHcCA6R54cIiWDXRNbFcacw,7652
|
|
374
383
|
flock/workflow/agent_activities.py,sha256=NhBZscflEf2IMfSRa_pBM_TRP7uVEF_O0ROvWZ33eDc,963
|
|
375
384
|
flock/workflow/temporal_setup.py,sha256=VWBgmBgfTBjwM5ruS_dVpA5AVxx6EZ7oFPGw4j3m0l0,1091
|
|
376
385
|
flock/workflow/workflow.py,sha256=I9MryXW_bqYVTHx-nl2epbTqeRy27CAWHHA7ZZA0nAk,1696
|
|
377
|
-
flock_core-0.2.
|
|
378
|
-
flock_core-0.2.
|
|
379
|
-
flock_core-0.2.
|
|
380
|
-
flock_core-0.2.
|
|
381
|
-
flock_core-0.2.
|
|
386
|
+
flock_core-0.2.14.dist-info/METADATA,sha256=OiAxjh5T2Woz0qoKG9IIfsS9uGagWESnhzVCPKZ85hA,12057
|
|
387
|
+
flock_core-0.2.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
388
|
+
flock_core-0.2.14.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
389
|
+
flock_core-0.2.14.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
390
|
+
flock_core-0.2.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|