repoburg 1.3.8 → 1.3.10
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.
- package/backend/dist/bin/grammar/tree-sitter-bash.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-css.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-html.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-javascript.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-json.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-python.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-rust.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-toml.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-tsx.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-typescript.wasm +0 -0
- package/backend/dist/bin/grammar/tree-sitter-yaml.wasm +0 -0
- package/backend/dist/packages/tokenpatch/index.d.ts +1 -0
- package/backend/dist/packages/tokenpatch/index.js +52 -0
- package/backend/dist/packages/tokenpatch/index.js.map +1 -0
- package/backend/dist/packages/tokenpatch/parser.d.ts +2 -0
- package/backend/dist/packages/tokenpatch/parser.js +17 -0
- package/backend/dist/packages/tokenpatch/parser.js.map +1 -0
- package/backend/dist/packages/tokenpatch/patcher.d.ts +11 -0
- package/backend/dist/packages/tokenpatch/patcher.js +189 -0
- package/backend/dist/packages/tokenpatch/patcher.js.map +1 -0
- package/backend/dist/packages/tokenpatch/tokens.d.ts +6 -0
- package/backend/dist/packages/tokenpatch/tokens.js +49 -0
- package/backend/dist/packages/tokenpatch/tokens.js.map +1 -0
- package/backend/dist/packages/tokenpatch/types.d.ts +8 -0
- package/backend/dist/packages/tokenpatch/types.js +3 -0
- package/backend/dist/packages/tokenpatch/types.js.map +1 -0
- package/backend/dist/src/ai-actions/ai-actions.service.d.ts +1 -0
- package/backend/dist/src/ai-actions/ai-actions.service.js +2 -0
- package/backend/dist/src/ai-actions/ai-actions.service.js.map +1 -1
- package/backend/dist/src/llm-orchestration/action-handlers/apply-diff.handler.js +6 -3
- package/backend/dist/src/llm-orchestration/action-handlers/apply-diff.handler.js.map +1 -1
- package/backend/dist/src/llm-orchestration/action-handlers/dto/patch.args.dto.d.ts +4 -0
- package/backend/dist/src/llm-orchestration/action-handlers/dto/patch.args.dto.js +29 -0
- package/backend/dist/src/llm-orchestration/action-handlers/dto/patch.args.dto.js.map +1 -0
- package/backend/dist/src/llm-orchestration/action-handlers/patch.handler.d.ts +12 -0
- package/backend/dist/src/llm-orchestration/action-handlers/patch.handler.js +142 -0
- package/backend/dist/src/llm-orchestration/action-handlers/patch.handler.js.map +1 -0
- package/backend/dist/src/llm-orchestration/llm-orchestration.module.js +2 -0
- package/backend/dist/src/llm-orchestration/llm-orchestration.module.js.map +1 -1
- package/backend/dist/src/llm-orchestration/llm-turn-processor.service.js +1 -0
- package/backend/dist/src/llm-orchestration/llm-turn-processor.service.js.map +1 -1
- package/backend/dist/src/seeding/data/system-prompts/experimental_master-agent.d.ts +1 -1
- package/backend/dist/src/seeding/data/system-prompts/experimental_master-agent.js +13 -13
- package/backend/dist/src/seeding/data/system-prompts/experimental_patch_master-agent.d.ts +2 -0
- package/backend/dist/src/seeding/data/system-prompts/experimental_patch_master-agent.js +463 -0
- package/backend/dist/src/seeding/data/system-prompts/experimental_patch_master-agent.js.map +1 -0
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/backend/package.json +6 -3
- package/backend/packages/tokenpatch/grammar/tree-sitter-tsx.wasm +0 -0
- package/backend/packages/tokenpatch/grammar/tree-sitter-typescript.wasm +0 -0
- package/backend/packages/tokenpatch/index.spec.ts +579 -0
- package/backend/packages/tokenpatch/index.ts +80 -0
- package/backend/packages/tokenpatch/parser.ts +18 -0
- package/backend/packages/tokenpatch/patcher.spec.ts +194 -0
- package/backend/packages/tokenpatch/patcher.ts +300 -0
- package/backend/packages/tokenpatch/tokens.spec.ts +84 -0
- package/backend/packages/tokenpatch/tokens.ts +50 -0
- package/backend/packages/tokenpatch/types.ts +9 -0
- package/package.json +13 -12
- package/backend/coverage/clover.xml +0 -3434
- package/backend/coverage/coverage-final.json +0 -120
- package/backend/coverage/lcov-report/base.css +0 -224
- package/backend/coverage/lcov-report/block-navigation.js +0 -87
- package/backend/coverage/lcov-report/favicon.png +0 -0
- package/backend/coverage/lcov-report/index.html +0 -701
- package/backend/coverage/lcov-report/prettify.css +0 -1
- package/backend/coverage/lcov-report/prettify.js +0 -2
- package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/backend/coverage/lcov-report/sorter.js +0 -196
- package/backend/coverage/lcov-report/src/action-execution/action-execution.module.ts.html +0 -109
- package/backend/coverage/lcov-report/src/action-execution/action-execution.service.ts.html +0 -448
- package/backend/coverage/lcov-report/src/action-execution/index.html +0 -131
- package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -940
- package/backend/coverage/lcov-report/src/ai-actions/ai-action-creation.service.ts.html +0 -1243
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -664
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -154
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -859
- package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -176
- package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
- package/backend/coverage/lcov-report/src/app.module.ts.html +0 -373
- package/backend/coverage/lcov-report/src/app.service.ts.html +0 -196
- package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -319
- package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -439
- package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -161
- package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -103
- package/backend/coverage/lcov-report/src/application-state/dto/set-orchestration-timeout.dto.ts.html +0 -103
- package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -106
- package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -103
- package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
- package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
- package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1348
- package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -289
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -136
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -400
- package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
- package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
- package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -397
- package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -136
- package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -835
- package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -358
- package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
- package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -241
- package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -115
- package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -145
- package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -130
- package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -223
- package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -136
- package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -157
- package/backend/coverage/lcov-report/src/core-entities/index.html +0 -281
- package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -118
- package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -130
- package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -289
- package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -280
- package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -148
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -277
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
- package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
- package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
- package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -292
- package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
- package/backend/coverage/lcov-report/src/events/index.html +0 -131
- package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
- package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
- package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
- package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
- package/backend/coverage/lcov-report/src/index.html +0 -191
- package/backend/coverage/lcov-report/src/llm-response-parser/dto/ai-action.dto.ts.html +0 -400
- package/backend/coverage/lcov-report/src/llm-response-parser/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/llm-response-parser/errors/index.html +0 -116
- package/backend/coverage/lcov-report/src/llm-response-parser/errors/parsing.error.ts.html +0 -118
- package/backend/coverage/lcov-report/src/llm-response-parser/index.html +0 -146
- package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.module.ts.html +0 -109
- package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.service.ts.html +0 -808
- package/backend/coverage/lcov-report/src/llm-response-parser/parsing.constants.ts.html +0 -139
- package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -172
- package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -154
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -166
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -787
- package/backend/coverage/lcov-report/src/main.ts.html +0 -382
- package/backend/coverage/lcov-report/src/orchestration/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/orchestration/dto/orchestration.dto.ts.html +0 -169
- package/backend/coverage/lcov-report/src/orchestration/index.html +0 -191
- package/backend/coverage/lcov-report/src/orchestration/orchestration-fs.service.ts.html +0 -595
- package/backend/coverage/lcov-report/src/orchestration/orchestration-parser.service.ts.html +0 -142
- package/backend/coverage/lcov-report/src/orchestration/orchestration.controller.ts.html +0 -406
- package/backend/coverage/lcov-report/src/orchestration/orchestration.module.ts.html +0 -169
- package/backend/coverage/lcov-report/src/orchestration/orchestration.service.ts.html +0 -1093
- package/backend/coverage/lcov-report/src/orchestration/orchestration.types.ts.html +0 -175
- package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -154
- package/backend/coverage/lcov-report/src/projects/index.html +0 -146
- package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -232
- package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -223
- package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -355
- package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -136
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -247
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -190
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/pm-context.ts.html +0 -250
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/pr-description.ts.html +0 -186
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/sample_focused-tree.ts.html +0 -124
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -236
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/codebase-explorer.ts.html +0 -331
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_multi-file-action-generator-with-requester.ts.html +0 -675
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -160
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/multi-file-action-generator.ts.html +0 -550
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/packup.ts.html +0 -184
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/refactor-split.ts.html +0 -244
- package/backend/coverage/lcov-report/src/seeding/index.html +0 -176
- package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -145
- package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -151
- package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -289
- package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
- package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
- package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -670
- package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -247
- package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -161
- package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -763
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -337
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -205
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1621
- package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
- package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -172
- package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -574
- package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -340
- package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
- package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -457
- package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -214
- package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -844
- package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -217
- package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -298
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -127
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -352
- package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
- package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
- package/backend/coverage/lcov-report/src/utils/index.html +0 -131
- package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -88
- package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
- package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
- package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -247
- package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
- package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -745
- package/backend/coverage/lcov.info +0 -5590
|
@@ -1,1093 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/orchestration/orchestration.service.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/orchestration</a> orchestration.service.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">87.24% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>130/149</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">78.26% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>36/46</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">81.81% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>18/22</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">90.51% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>124/137</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line high'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">8x</span>
|
|
403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
406
|
-
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
408
|
-
<span class="cline-any cline-neutral"> </span>
|
|
409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
410
|
-
<span class="cline-any cline-yes">8x</span>
|
|
411
|
-
<span class="cline-any cline-yes">8x</span>
|
|
412
|
-
<span class="cline-any cline-yes">8x</span>
|
|
413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
418
|
-
<span class="cline-any cline-yes">8x</span>
|
|
419
|
-
<span class="cline-any cline-yes">8x</span>
|
|
420
|
-
<span class="cline-any cline-yes">8x</span>
|
|
421
|
-
<span class="cline-any cline-yes">8x</span>
|
|
422
|
-
<span class="cline-any cline-yes">8x</span>
|
|
423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-yes">8x</span>
|
|
426
|
-
<span class="cline-any cline-yes">21x</span>
|
|
427
|
-
<span class="cline-any cline-yes">21x</span>
|
|
428
|
-
<span class="cline-any cline-yes">21x</span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-yes">21x</span>
|
|
432
|
-
<span class="cline-any cline-yes">21x</span>
|
|
433
|
-
<span class="cline-any cline-yes">21x</span>
|
|
434
|
-
<span class="cline-any cline-yes">21x</span>
|
|
435
|
-
<span class="cline-any cline-yes">21x</span>
|
|
436
|
-
<span class="cline-any cline-yes">21x</span>
|
|
437
|
-
<span class="cline-any cline-yes">21x</span>
|
|
438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
439
|
-
<span class="cline-any cline-yes">21x</span>
|
|
440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
444
|
-
<span class="cline-any cline-yes">23x</span>
|
|
445
|
-
<span class="cline-any cline-yes">23x</span>
|
|
446
|
-
<span class="cline-any cline-yes">16x</span>
|
|
447
|
-
<span class="cline-any cline-yes">16x</span>
|
|
448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-yes">1x</span>
|
|
454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-yes">1x</span>
|
|
457
|
-
<span class="cline-any cline-yes">1x</span>
|
|
458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-yes">1x</span>
|
|
460
|
-
<span class="cline-any cline-yes">1x</span>
|
|
461
|
-
<span class="cline-any cline-yes">1x</span>
|
|
462
|
-
<span class="cline-any cline-yes">15x</span>
|
|
463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-yes">15x</span>
|
|
471
|
-
<span class="cline-any cline-yes">15x</span>
|
|
472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
480
|
-
<span class="cline-any cline-yes">29x</span>
|
|
481
|
-
<span class="cline-any cline-yes">29x</span>
|
|
482
|
-
<span class="cline-any cline-yes">29x</span>
|
|
483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-yes">29x</span>
|
|
485
|
-
<span class="cline-any cline-yes">5x</span>
|
|
486
|
-
<span class="cline-any cline-yes">5x</span>
|
|
487
|
-
<span class="cline-any cline-yes">5x</span>
|
|
488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
489
|
-
<span class="cline-any cline-yes">24x</span>
|
|
490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-yes">29x</span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
495
|
-
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
498
|
-
<span class="cline-any cline-yes">32x</span>
|
|
499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-yes">52x</span>
|
|
503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-yes">53x</span>
|
|
507
|
-
<span class="cline-any cline-yes">52x</span>
|
|
508
|
-
<span class="cline-any cline-yes">52x</span>
|
|
509
|
-
<span class="cline-any cline-yes">52x</span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-yes">21x</span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-yes">7x</span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-no"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
526
|
-
<span class="cline-any cline-no"> </span>
|
|
527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-yes">7x</span>
|
|
533
|
-
<span class="cline-any cline-yes">7x</span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-yes">7x</span>
|
|
536
|
-
<span class="cline-any cline-yes">7x</span>
|
|
537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
538
|
-
<span class="cline-any cline-yes">7x</span>
|
|
539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
540
|
-
<span class="cline-any cline-neutral"> </span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-yes">7x</span>
|
|
553
|
-
<span class="cline-any cline-yes">7x</span>
|
|
554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-yes">7x</span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
559
|
-
<span class="cline-any cline-yes">7x</span>
|
|
560
|
-
<span class="cline-any cline-no"> </span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-yes">10x</span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-yes">10x</span>
|
|
572
|
-
<span class="cline-any cline-no"> </span>
|
|
573
|
-
<span class="cline-any cline-no"> </span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-yes">10x</span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-yes">10x</span>
|
|
580
|
-
<span class="cline-any cline-yes">10x</span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-yes">10x</span>
|
|
583
|
-
<span class="cline-any cline-yes">2x</span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-yes">2x</span>
|
|
587
|
-
<span class="cline-any cline-yes">2x</span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-yes">8x</span>
|
|
591
|
-
<span class="cline-any cline-yes">8x</span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-yes">8x</span>
|
|
594
|
-
<span class="cline-any cline-yes">8x</span>
|
|
595
|
-
<span class="cline-any cline-yes">8x</span>
|
|
596
|
-
<span class="cline-any cline-yes">8x</span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-yes">8x</span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-yes">8x</span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-yes">8x</span>
|
|
609
|
-
<span class="cline-any cline-yes">8x</span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-yes">8x</span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-yes">8x</span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-yes">8x</span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-yes">8x</span>
|
|
629
|
-
<span class="cline-any cline-yes">2x</span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-no"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-yes">10x</span>
|
|
639
|
-
<span class="cline-any cline-yes">7x</span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-yes">7x</span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-yes">7x</span>
|
|
647
|
-
<span class="cline-any cline-yes">1x</span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-yes">3x</span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-yes">2x</span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-yes">1x</span>
|
|
663
|
-
<span class="cline-any cline-yes">1x</span>
|
|
664
|
-
<span class="cline-any cline-yes">1x</span>
|
|
665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-neutral"> </span>
|
|
669
|
-
<span class="cline-any cline-yes">3x</span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-yes">2x</span>
|
|
674
|
-
<span class="cline-any cline-yes">2x</span>
|
|
675
|
-
<span class="cline-any cline-yes">2x</span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-yes">1x</span>
|
|
681
|
-
<span class="cline-any cline-yes">1x</span>
|
|
682
|
-
<span class="cline-any cline-yes">1x</span>
|
|
683
|
-
<span class="cline-any cline-yes">1x</span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-yes">9x</span>
|
|
691
|
-
<span class="cline-any cline-yes">5x</span>
|
|
692
|
-
<span class="cline-any cline-yes">5x</span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-yes">6x</span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-yes">6x</span>
|
|
701
|
-
<span class="cline-any cline-yes">1x</span>
|
|
702
|
-
<span class="cline-any cline-yes">1x</span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-yes">5x</span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-yes">1x</span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-yes">1x</span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-yes">4x</span>
|
|
713
|
-
<span class="cline-any cline-yes">1x</span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-yes">1x</span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-yes">3x</span>
|
|
720
|
-
<span class="cline-any cline-yes">3x</span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-yes">3x</span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-yes">3x</span>
|
|
727
|
-
<span class="cline-any cline-yes">3x</span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-yes">3x</span>
|
|
732
|
-
<span class="cline-any cline-yes">3x</span>
|
|
733
|
-
<span class="cline-any cline-yes">3x</span>
|
|
734
|
-
<span class="cline-any cline-yes">3x</span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
739
|
-
Injectable,
|
|
740
|
-
Logger,
|
|
741
|
-
Scope,
|
|
742
|
-
Inject,
|
|
743
|
-
forwardRef,
|
|
744
|
-
BadRequestException,
|
|
745
|
-
} from '@nestjs/common';
|
|
746
|
-
import { OrchestrationFsService } from './orchestration-fs.service';
|
|
747
|
-
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
748
|
-
import {
|
|
749
|
-
OrchestrationMode,
|
|
750
|
-
OrchestrationRunState,
|
|
751
|
-
OrchestrationStatus,
|
|
752
|
-
} from './orchestration.types';
|
|
753
|
-
import { StartOrchestrationDto } from './dto/orchestration.dto';
|
|
754
|
-
import { randomUUID } from 'crypto';
|
|
755
|
-
import { EventsGateway } from '../events/events.gateway';
|
|
756
|
-
import { SessionInputsService } from '../session-inputs/session-inputs.service';
|
|
757
|
-
import { SessionsService } from '../sessions/sessions.service';
|
|
758
|
-
import { OrchestrationParserService } from './orchestration-parser.service';
|
|
759
|
-
|
|
760
|
-
@Injectable({ scope: Scope.DEFAULT }) // Singleton
|
|
761
|
-
export class OrchestrationService {
|
|
762
|
-
private readonly logger = new Logger(OrchestrationService.name);
|
|
763
|
-
private activeRun: OrchestrationRunState | null = null;
|
|
764
|
-
private timeoutTimer: NodeJS.Timeout | null = null;
|
|
765
|
-
|
|
766
|
-
constructor(
|
|
767
|
-
private readonly fsService: OrchestrationFsService,
|
|
768
|
-
private readonly appStateService: ApplicationStateService,
|
|
769
|
-
private readonly eventsGateway: EventsGateway,
|
|
770
|
-
private readonly parserService: OrchestrationParserService,
|
|
771
|
-
@Inject(forwardRef(() => SessionInputsService))
|
|
772
|
-
private readonly sessionInputsService: SessionInputsService,
|
|
773
|
-
private readonly sessionsService: SessionsService,
|
|
774
|
-
) {
|
|
775
|
-
this.loadStateFromPersistence();
|
|
776
|
-
}
|
|
777
|
-
|
|
778
|
-
private async loadStateFromPersistence() {
|
|
779
|
-
const persistedState =
|
|
780
|
-
await this.appStateService.getOrchestrationRunState();
|
|
781
|
-
if (persistedState) {
|
|
782
|
-
this.logger.log('Loading persisted orchestration state:', persistedState);
|
|
783
|
-
if (
|
|
784
|
-
[
|
|
785
|
-
OrchestrationStatus.RUNNING,
|
|
786
|
-
OrchestrationStatus.WAITING_FOR_LLM_RESPONSE,
|
|
787
|
-
].includes(persistedState.status)
|
|
788
|
-
) {
|
|
789
|
-
this.logger.warn(
|
|
790
|
-
`Server restarted during an active orchestration run (${persistedState.runId}). Setting status to FAILED.`,
|
|
791
|
-
);
|
|
792
|
-
persistedState.status = OrchestrationStatus.FAILED;
|
|
793
|
-
persistedState.error =
|
|
794
|
-
'Orchestration failed due to an unexpected server restart.';
|
|
795
|
-
this.activeRun = persistedState;
|
|
796
|
-
await this.persistState();
|
|
797
|
-
this.emitStatus();
|
|
798
|
-
} else if (
|
|
799
|
-
[
|
|
800
|
-
OrchestrationStatus.COMPLETED,
|
|
801
|
-
OrchestrationStatus.FAILED,
|
|
802
|
-
OrchestrationStatus.STOPPED,
|
|
803
|
-
].includes(persistedState.status)
|
|
804
|
-
) {
|
|
805
|
-
// If the server restarts after a terminal state, load it so the user can dismiss it.
|
|
806
|
-
this.activeRun = persistedState;
|
|
807
|
-
this.emitStatus();
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
private async setState(
|
|
813
|
-
status: OrchestrationStatus,
|
|
814
|
-
newState?: Partial<Omit<OrchestrationRunState, 'status'>>,
|
|
815
|
-
) {
|
|
816
|
-
if (this.activeRun) {
|
|
817
|
-
this.activeRun.status = status;
|
|
818
|
-
Object.assign(this.activeRun, newState);
|
|
819
|
-
|
|
820
|
-
if (status === OrchestrationStatus.IDLE) {
|
|
821
|
-
this.activeRun = null;
|
|
822
|
-
await this.appStateService.setOrchestrationRunState(null);
|
|
823
|
-
if (this.timeoutTimer) clearTimeout(this.timeoutTimer);
|
|
824
|
-
} else {
|
|
825
|
-
await this.persistState();
|
|
826
|
-
}
|
|
827
|
-
this.emitStatus();
|
|
828
|
-
} else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span><span class="missing-if-branch" title="else path not taken" >E</span>if (status !== OrchestrationStatus.IDLE) {</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(`Cannot set status to ${status} without an active run.`);</span>
|
|
830
|
-
}
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
private async persistState() {
|
|
834
|
-
await this.appStateService.setOrchestrationRunState(this.activeRun);
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
private emitStatus() {
|
|
838
|
-
this.eventsGateway.sendToAll('orchestration_status_update', this.activeRun);
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
private log(message: string) {
|
|
842
|
-
if (!this.activeRun) return;
|
|
843
|
-
this.logger.log(`[Run ${this.activeRun.runId}] ${message}`);
|
|
844
|
-
this.activeRun.log.push(`${new Date().toISOString()} - ${message}`);
|
|
845
|
-
this.eventsGateway.sendToAll('orchestration_log', { message });
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
getActiveRun(): OrchestrationRunState | null {
|
|
849
|
-
return this.activeRun;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
async start(dto: StartOrchestrationDto): Promise<void> {
|
|
853
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.activeRun) {
|
|
854
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
855
|
-
this.activeRun.scriptName === dto.scriptName &&
|
|
856
|
-
this.activeRun.status === OrchestrationStatus.STOPPED
|
|
857
|
-
) {
|
|
858
|
-
<span class="cstat-no" title="statement not covered" > this.log('Resuming stopped orchestration.');</span>
|
|
859
|
-
<span class="cstat-no" title="statement not covered" > this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>rror) => <span class="cstat-no" title="statement not covered" >this.fail(error.message))</span>;</span>
|
|
860
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
861
|
-
}
|
|
862
|
-
<span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
|
|
863
|
-
`An orchestration is already running or paused: "${this.activeRun.scriptName}" is in state "${this.activeRun.status}".`,
|
|
864
|
-
);
|
|
865
|
-
}
|
|
866
|
-
|
|
867
|
-
// Clone the script for a fresh run
|
|
868
|
-
await this.fsService.cloneScriptForRun(dto.scriptName);
|
|
869
|
-
const runScriptContent = await this.fsService.readRunScript(dto.scriptName);
|
|
870
|
-
const initialChunks =
|
|
871
|
-
await this.parserService.parseScript(runScriptContent);
|
|
872
|
-
const timeoutMs = await this.appStateService.getOrchestrationTimeoutMs();
|
|
873
|
-
|
|
874
|
-
this.activeRun = {
|
|
875
|
-
runId: randomUUID(),
|
|
876
|
-
status: OrchestrationStatus.RUNNING,
|
|
877
|
-
mode: dto.mode,
|
|
878
|
-
scriptName: dto.scriptName,
|
|
879
|
-
sessionId: dto.sessionId,
|
|
880
|
-
currentStep: 0,
|
|
881
|
-
totalSteps: initialChunks.length,
|
|
882
|
-
waitStartTime: null,
|
|
883
|
-
waitingOnInputId: null,
|
|
884
|
-
error: null,
|
|
885
|
-
log: [],
|
|
886
|
-
timeoutMs,
|
|
887
|
-
};
|
|
888
|
-
await this.persistState();
|
|
889
|
-
this.log(
|
|
890
|
-
`Orchestration started in ${dto.mode} mode with ${initialChunks.length} total steps. Timeout is ${timeoutMs / 1000}s.`,
|
|
891
|
-
);
|
|
892
|
-
this.emitStatus();
|
|
893
|
-
|
|
894
|
-
// Non-blocking execution
|
|
895
|
-
this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>rror) => {
|
|
896
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
897
|
-
`Unhandled error in orchestration execution: ${error.message}`,
|
|
898
|
-
error.stack,
|
|
899
|
-
);
|
|
900
|
-
<span class="cstat-no" title="statement not covered" > this.fail(`Unhandled error: ${error.message}`);</span>
|
|
901
|
-
});
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
private async execute() {
|
|
905
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.activeRun) <span class="cstat-no" title="statement not covered" >return;</span>
|
|
906
|
-
|
|
907
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.activeRun.status === OrchestrationStatus.STOPPING) {
|
|
908
|
-
<span class="cstat-no" title="statement not covered" > this.log('Execution loop halted due to STOPPING state.');</span>
|
|
909
|
-
<span class="cstat-no" title="statement not covered" > this.setState(OrchestrationStatus.STOPPED);</span>
|
|
910
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
const { scriptName, mode, sessionId } = this.activeRun;
|
|
914
|
-
|
|
915
|
-
const runScriptContent = await this.fsService.readRunScript(scriptName);
|
|
916
|
-
const chunks = await this.parserService.parseScript(runScriptContent);
|
|
917
|
-
|
|
918
|
-
if (chunks.length === 0) {
|
|
919
|
-
this.log(
|
|
920
|
-
'Orchestration completed successfully: No more chunks to process.',
|
|
921
|
-
);
|
|
922
|
-
this.setState(OrchestrationStatus.COMPLETED);
|
|
923
|
-
return;
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
const nextPrompt = chunks[0];
|
|
927
|
-
const session = await this.sessionsService.findOne(sessionId);
|
|
928
|
-
|
|
929
|
-
try {
|
|
930
|
-
const totalSteps = this.activeRun.totalSteps;
|
|
931
|
-
const completedSteps = totalSteps - chunks.length;
|
|
932
|
-
this.activeRun.currentStep = completedSteps + 1;
|
|
933
|
-
|
|
934
|
-
this.setState(OrchestrationStatus.RUNNING, {
|
|
935
|
-
currentStep: this.activeRun.currentStep,
|
|
936
|
-
});
|
|
937
|
-
|
|
938
|
-
this.log(
|
|
939
|
-
`Executing step ${
|
|
940
|
-
this.activeRun.currentStep
|
|
941
|
-
}/${totalSteps}: ${nextPrompt.substring(0, 100)}...`,
|
|
942
|
-
);
|
|
943
|
-
|
|
944
|
-
const existingInputsCount = session.sessionInputs?.length || 0;
|
|
945
|
-
const isFirstPromptInSession = existingInputsCount === 0;
|
|
946
|
-
|
|
947
|
-
const context_template_id = isFirstPromptInSession
|
|
948
|
-
? session.default_initial_context_template_id
|
|
949
|
-
: session.default_followup_context_template_id;
|
|
950
|
-
|
|
951
|
-
this.log(
|
|
952
|
-
`Session has ${existingInputsCount} existing inputs. Using ${
|
|
953
|
-
isFirstPromptInSession ? 'initial' : 'follow-up'
|
|
954
|
-
} context template.`,
|
|
955
|
-
);
|
|
956
|
-
|
|
957
|
-
await this.sessionInputsService.prepareLlmInput(sessionId, {
|
|
958
|
-
user_prompt: nextPrompt,
|
|
959
|
-
execution_strategy:
|
|
960
|
-
mode === OrchestrationMode.AUTO ? 'auto_apply' : 'review_first',
|
|
961
|
-
context_template_id: context_template_id,
|
|
962
|
-
});
|
|
963
|
-
|
|
964
|
-
if (mode === OrchestrationMode.INTERACTIVE) {
|
|
965
|
-
this.setState(OrchestrationStatus.PAUSED_INTERACTIVE);
|
|
966
|
-
}
|
|
967
|
-
// In both modes, we wait for onPromptPrepared to be called, which will change the state.
|
|
968
|
-
} catch (error) {
|
|
969
|
-
<span class="cstat-no" title="statement not covered" > await this.fail(error.message);</span>
|
|
970
|
-
}
|
|
971
|
-
}
|
|
972
|
-
|
|
973
|
-
onPromptPrepared(inputId: string) {
|
|
974
|
-
if (this.activeRun?.status === OrchestrationStatus.RUNNING) {
|
|
975
|
-
this.log(
|
|
976
|
-
`[onPromptPrepared] Prompt prepared for input ${inputId}. Awaiting LLM response.`,
|
|
977
|
-
);
|
|
978
|
-
this.setState(OrchestrationStatus.WAITING_FOR_LLM_RESPONSE, {
|
|
979
|
-
waitingOnInputId: inputId,
|
|
980
|
-
waitStartTime: Date.now(),
|
|
981
|
-
});
|
|
982
|
-
this.timeoutTimer = setTimeout(() => {
|
|
983
|
-
this.fail('Orchestration timed out waiting for LLM response.');
|
|
984
|
-
}, this.activeRun.timeoutMs);
|
|
985
|
-
} else {
|
|
986
|
-
this.logger.warn(
|
|
987
|
-
`[onPromptPrepared] Called but active run status is not 'RUNNING'. Current status: ${this.activeRun?.status}`,
|
|
988
|
-
);
|
|
989
|
-
}
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
async stop(): Promise<void> {
|
|
993
|
-
if (
|
|
994
|
-
this.activeRun &&
|
|
995
|
-
(this.activeRun.status === OrchestrationStatus.RUNNING ||
|
|
996
|
-
this.activeRun.status === OrchestrationStatus.WAITING_FOR_LLM_RESPONSE)
|
|
997
|
-
) {
|
|
998
|
-
this.log('Graceful stop requested.');
|
|
999
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.timeoutTimer) <span class="cstat-no" title="statement not covered" >clearTimeout(this.timeoutTimer);</span>
|
|
1000
|
-
this.setState(OrchestrationStatus.STOPPING);
|
|
1001
|
-
}
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
async proceed(): Promise<void> {
|
|
1005
|
-
if (
|
|
1006
|
-
this.activeRun &&
|
|
1007
|
-
this.activeRun.status === OrchestrationStatus.PAUSED_INTERACTIVE
|
|
1008
|
-
) {
|
|
1009
|
-
this.log('Proceeding to next step...');
|
|
1010
|
-
await this.fsService.consumeNextChunk(this.activeRun.scriptName);
|
|
1011
|
-
this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>) => <span class="cstat-no" title="statement not covered" >this.fail(e.message))</span>;
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
|
|
1015
|
-
async emergencyStop(): Promise<void> {
|
|
1016
|
-
if (this.activeRun) {
|
|
1017
|
-
this.log('Emergency stop triggered!');
|
|
1018
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.timeoutTimer) <span class="cstat-no" title="statement not covered" >clearTimeout(this.timeoutTimer);</span>
|
|
1019
|
-
this.setState(OrchestrationStatus.FAILED, {
|
|
1020
|
-
error: 'Forcefully stopped by user.',
|
|
1021
|
-
});
|
|
1022
|
-
}
|
|
1023
|
-
}
|
|
1024
|
-
|
|
1025
|
-
async clearActiveRun(): Promise<void> {
|
|
1026
|
-
if (this.activeRun) {
|
|
1027
|
-
this.log('Clearing active run state.');
|
|
1028
|
-
this.setState(OrchestrationStatus.IDLE);
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
async resumeFromInput(inputId: string): Promise<void> {
|
|
1033
|
-
this.log(
|
|
1034
|
-
`[resumeFromInput] Attempting to resume for completed input ID: ${inputId}`,
|
|
1035
|
-
);
|
|
1036
|
-
if (!this.activeRun) {
|
|
1037
|
-
this.logger.warn('[resumeFromInput] Cannot resume, no active run.');
|
|
1038
|
-
return;
|
|
1039
|
-
}
|
|
1040
|
-
if (
|
|
1041
|
-
this.activeRun.status !== OrchestrationStatus.WAITING_FOR_LLM_RESPONSE
|
|
1042
|
-
) {
|
|
1043
|
-
this.logger.warn(
|
|
1044
|
-
`[resumeFromInput] Cannot resume, status is '${this.activeRun.status}', not 'waiting_for_llm_response'.`,
|
|
1045
|
-
);
|
|
1046
|
-
return;
|
|
1047
|
-
}
|
|
1048
|
-
if (this.activeRun.waitingOnInputId !== inputId) {
|
|
1049
|
-
this.logger.warn(
|
|
1050
|
-
`[resumeFromInput] Mismatched input ID. Expected '${this.activeRun.waitingOnInputId}', but got '${inputId}'.`,
|
|
1051
|
-
);
|
|
1052
|
-
return;
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
if (this.timeoutTimer) clearTimeout(this.timeoutTimer);
|
|
1056
|
-
this.log(
|
|
1057
|
-
`[resumeFromInput] Resuming orchestration after receiving response for ${inputId}`,
|
|
1058
|
-
);
|
|
1059
|
-
|
|
1060
|
-
await this.fsService.consumeNextChunk(this.activeRun.scriptName);
|
|
1061
|
-
|
|
1062
|
-
this.log(`[resumeFromInput] Re-triggering execution loop.`);
|
|
1063
|
-
this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>) => <span class="cstat-no" title="statement not covered" >this.fail(e.message))</span>;
|
|
1064
|
-
}
|
|
1065
|
-
|
|
1066
|
-
async fail(error: string): Promise<void> {
|
|
1067
|
-
if (this.activeRun) {
|
|
1068
|
-
this.logger.error(`Orchestration failed: ${error}`);
|
|
1069
|
-
if (this.timeoutTimer) clearTimeout(this.timeoutTimer);
|
|
1070
|
-
this.setState(OrchestrationStatus.FAILED, { error });
|
|
1071
|
-
}
|
|
1072
|
-
}
|
|
1073
|
-
}
|
|
1074
|
-
</pre></td></tr></table></pre>
|
|
1075
|
-
|
|
1076
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1077
|
-
</div><!-- /wrapper -->
|
|
1078
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1079
|
-
Code coverage generated by
|
|
1080
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1081
|
-
at 2025-09-12T19:21:55.945Z
|
|
1082
|
-
</div>
|
|
1083
|
-
<script src="../../prettify.js"></script>
|
|
1084
|
-
<script>
|
|
1085
|
-
window.onload = function () {
|
|
1086
|
-
prettyPrint();
|
|
1087
|
-
};
|
|
1088
|
-
</script>
|
|
1089
|
-
<script src="../../sorter.js"></script>
|
|
1090
|
-
<script src="../../block-navigation.js"></script>
|
|
1091
|
-
</body>
|
|
1092
|
-
</html>
|
|
1093
|
-
|