cloudmunch_sdk 0.3.6 → 0.6.5
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.
- checksums.yaml +4 -4
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/AppAbstract.rb +38 -12
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/AppContext.rb +0 -0
- data/lib/cloudmunch_Ruby_sdk_v2/CloudmunchService.rb +103 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/ServiceProvider.rb +3 -1
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/Util.rb +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/costview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/coverageview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/defecttrendview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/ilityview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/inboundoutboundview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/riskview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/scopeview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/timeview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/templates/velocityview_meta.json +0 -0
- data/lib/{cloudmunch_sdk → cloudmunch_Ruby_sdk_v2}/version.rb +1 -1
- data/lib/cloudmunch_sdk.rb +2 -2
- metadata +19 -17
- data/lib/cloudmunch_sdk/CloudmunchService.rb +0 -57
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 36a38d8d8e000e50ac9870842a1229e2d5bb9042
         | 
| 4 | 
            +
              data.tar.gz: 06423db69134e17de4ce9f144311af581d068ef7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d2e7116f2a090bf75cf02f5faee460401e3c80bf1c31b7b0cdf5f6ca8de9adfe618ef96679bc9b84ce786ce4cea26c13180875e78cee067e42cb7137049468c2
         | 
| 7 | 
            +
              data.tar.gz: aa774849017e8e65f594805c94d6c6b4d6536d5ebf117404492690c67b9653b6e1405b3fb429046504bbd7de1fee44c308744be7edd6191d68c4c1abc2ea4b09
         | 
| @@ -10,7 +10,7 @@ class AppAbstract | |
| 10 10 | 
             
                include CloudmunchService
         | 
| 11 11 | 
             
                include Util
         | 
| 12 12 |  | 
| 13 | 
            -
                 | 
| 13 | 
            +
                #@@config_path = ENV["SDK_CONFIG_PATH"]+"/sdk_config.json"
         | 
| 14 14 | 
             
                @@config = nil
         | 
| 15 15 |  | 
| 16 16 | 
             
                def initialize(param = nil)
         | 
| @@ -36,9 +36,35 @@ class AppAbstract | |
| 36 36 | 
             
                end
         | 
| 37 37 |  | 
| 38 38 | 
             
                def getJSONArgs()
         | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 39 | 
            +
                  jsonin = nil
         | 
| 40 | 
            +
                  varin=nil
         | 
| 41 | 
            +
                  integrations=nil
         | 
| 42 | 
            +
                  loop { case ARGV[0]
         | 
| 43 | 
            +
                      when '-jsoninput' then  ARGV.shift; jsonin = ARGV.shift
         | 
| 44 | 
            +
                      when '-variables' then  ARGV.shift; varin = ARGV.shift
         | 
| 45 | 
            +
                      when '-integrations' then  ARGV.shift; integrations = ARGV.shift
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                      when /^-/ then  usage("Unknown option: #{ARGV[0].inspect}")
         | 
| 48 | 
            +
                      else break
         | 
| 49 | 
            +
                  end; }
         | 
| 50 | 
            +
                    @json_input = JSON.load(jsonin)
         | 
| 51 | 
            +
                    @var_input =JSON.load(varin)
         | 
| 52 | 
            +
                    @integration_input=JSON.load(integrations)
         | 
| 53 | 
            +
                    createAppContext();
         | 
| 54 | 
            +
                    return @json_input
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                def createAppContext()
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    @appContext = AppContext.new(@var_input)
         | 
| 60 | 
            +
                    
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                def getCloudmunchService()
         | 
| 64 | 
            +
                    # @cloudmunchservice = @cloudmunchservice ? @cloudmunchservice : CloudmunchService.new(@var_input)
         | 
| 65 | 
            +
                    @cloudmunchservice = @cloudmunchservice ? @cloudmunchservice : CloudmunchService.initialize(@appContext)
         | 
| 66 | 
            +
                    return @cloudmunchservice
         | 
| 67 | 
            +
                end 
         | 
| 42 68 | 
             
                def openJSONFile(fileNameWithPath)
         | 
| 43 69 | 
             
                    Util.openJSONFile(fileNameWithPath)
         | 
| 44 70 | 
             
                end
         | 
| @@ -47,17 +73,16 @@ class AppAbstract | |
| 47 73 | 
             
                    Util.generateReport(reportFilename, reportString)
         | 
| 48 74 | 
             
                end
         | 
| 49 75 |  | 
| 50 | 
            -
                def  | 
| 51 | 
            -
                     | 
| 76 | 
            +
                def getIntegrationDetails(param = nil)
         | 
| 77 | 
            +
                    #@json_input = @json_input ? @json_input : getJSONArgs()
         | 
| 52 78 | 
             
                    serviceProvider = ServiceProvider.new(@json_input["providername"])
         | 
| 53 | 
            -
                    serviceProvider.load_data(@ | 
| 79 | 
            +
                    serviceProvider.load_data(@integration_input)
         | 
| 54 80 | 
             
                    return serviceProvider
         | 
| 55 81 | 
             
                end
         | 
| 56 82 |  | 
| 57 | 
            -
                def getAppContext( | 
| 58 | 
            -
                     | 
| 59 | 
            -
                     | 
| 60 | 
            -
                    return appContext
         | 
| 83 | 
            +
                def getAppContext(var_input)
         | 
| 84 | 
            +
                    
         | 
| 85 | 
            +
                    return @appContext
         | 
| 61 86 | 
             
                end
         | 
| 62 87 |  | 
| 63 88 | 
             
                def getDataContextFromCMDB(param)
         | 
| @@ -120,7 +145,8 @@ class AppAbstract | |
| 120 145 | 
             
                end
         | 
| 121 146 |  | 
| 122 147 | 
             
                def start()
         | 
| 123 | 
            -
                    load_config | 
| 148 | 
            +
                    # load_config is commented out as this config file is not required now
         | 
| 149 | 
            +
                    #load_config()
         | 
| 124 150 | 
             
                    initializeApp()
         | 
| 125 151 | 
             
                    process()
         | 
| 126 152 | 
             
                    cleanupApp()
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,103 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'net/http'
         | 
| 4 | 
            +
            require 'cgi'
         | 
| 5 | 
            +
            require 'json'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            require_relative "Util"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            module CloudmunchService
         | 
| 10 | 
            +
              include Util
         | 
| 11 | 
            +
              def self.initialize(appcontext)
         | 
| 12 | 
            +
               @applicationContext=appcontext
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
               def updateCloudmunchData(context,contextid,data)
         | 
| 16 | 
            +
                
         | 
| 17 | 
            +
                serverurl=@applicationContext.get_data("{master_url}")+"/applications/"+@applicationContext.get_data("{application}")+"/"+context+"/"+contextid;
         | 
| 18 | 
            +
                serverurl=serverurl+"?apikey="+@applicationContext.get_data("{api_key}")
         | 
| 19 | 
            +
                 uri = URI.parse(serverurl)
         | 
| 20 | 
            +
                
         | 
| 21 | 
            +
                 response= Net::HTTP.post_form(uri,"data" => data.to_json)
         | 
| 22 | 
            +
                 
         | 
| 23 | 
            +
                 return response.body
         | 
| 24 | 
            +
               end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
             | 
| 27 | 
            +
             | 
| 28 | 
            +
               def getCloudmunchData(context,contextid,filterdata)
         | 
| 29 | 
            +
                if contextid.nil? || contextid.empty?
         | 
| 30 | 
            +
                 serverurl=@applicationContext.get_data("{master_url}")+"/applications/"+@applicationContext.get_data("{application}")+"/"+context
         | 
| 31 | 
            +
                 else
         | 
| 32 | 
            +
                 serverurl=@applicationContext.get_data("{master_url}")+"/applications/"+@applicationContext.get_data("{application}")+"/"+context+"/"+contextid;
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
                querystring=""
         | 
| 35 | 
            +
                if filterdata.nil? || filterdata.empty?
         | 
| 36 | 
            +
                  serverurl=serverurl+"?apikey="+@applicationContext.get_data("{api_key}")
         | 
| 37 | 
            +
                else
         | 
| 38 | 
            +
                  querystring="filter="+to_json($filerdata);
         | 
| 39 | 
            +
                  serverurl=serverurl+"?"+querystring+"&apikey="+@applicationContext.get_data("{api_key}")
         | 
| 40 | 
            +
                
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
               uri = URI.parse(serverurl)
         | 
| 43 | 
            +
                
         | 
| 44 | 
            +
                 return Net::HTTP.get(uri)
         | 
| 45 | 
            +
               end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
               
         | 
| 48 | 
            +
               def deleteCloudmunchData(context,contextid)
         | 
| 49 | 
            +
                serverurl=@applicationContext.get_data("{master_url}")+"/applications/"+@applicationContext.get_data("{application}")+"/"+context+"/"+contextid;
         | 
| 50 | 
            +
               serverurl=serverurl+"?apikey="+@applicationContext.get_data("{api_key}")
         | 
| 51 | 
            +
                uri = URI.parse(serverurl)
         | 
| 52 | 
            +
                Net::HTTP::Delete(uri)
         | 
| 53 | 
            +
               end 
         | 
| 54 | 
            +
             | 
| 55 | 
            +
             | 
| 56 | 
            +
             | 
| 57 | 
            +
             | 
| 58 | 
            +
               def self.putCustomDataContext(server, endpoint, param)
         | 
| 59 | 
            +
                  result = self.http_post(server, endpoint, param)
         | 
| 60 | 
            +
                  #p result.code.to_s 
         | 
| 61 | 
            +
                  if result.code.to_s == "200"
         | 
| 62 | 
            +
                    return true 
         | 
| 63 | 
            +
                  else
         | 
| 64 | 
            +
                    return false 
         | 
| 65 | 
            +
                  end     
         | 
| 66 | 
            +
               end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
             | 
| 69 | 
            +
               def self.getCustomDataContext(server, endpoint, param)
         | 
| 70 | 
            +
                  return self.http_get(server, endpoint, param)
         | 
| 71 | 
            +
               end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
               def self.http_get(server,path,params)
         | 
| 74 | 
            +
                  if params.nil?
         | 
| 75 | 
            +
                   return Net::HTTP.get(server, path)
         | 
| 76 | 
            +
                  else
         | 
| 77 | 
            +
                     queryStr =  "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
         | 
| 78 | 
            +
                     puts ("SDKDEBUG: Calling URL " + server+queryStr)
         | 
| 79 | 
            +
                     uri = URI(server + "/" + queryStr)
         | 
| 80 | 
            +
                     return Net::HTTP.get(uri) 
         | 
| 81 | 
            +
                  end
         | 
| 82 | 
            +
               end
         | 
| 83 | 
            +
               
         | 
| 84 | 
            +
               def self.http_post(server,path,params)
         | 
| 85 | 
            +
                    queryStr =  "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
         | 
| 86 | 
            +
                    puts ("SDKDEBUG: Calling URL " + server+queryStr)
         | 
| 87 | 
            +
                    if params.nil?
         | 
| 88 | 
            +
                        return Net::HTTP.post(server, path)
         | 
| 89 | 
            +
                    else
         | 
| 90 | 
            +
                        uri = URI(server +  path)
         | 
| 91 | 
            +
                        return Net::HTTP.post_form(uri, params)
         | 
| 92 | 
            +
                    end
         | 
| 93 | 
            +
               end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
               def self.getDataContext(server, endpoint, param)
         | 
| 96 | 
            +
                  getCustomDataContext(server, endpoint, param)     
         | 
| 97 | 
            +
               end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
             | 
| 100 | 
            +
               def self.updateDataContext(server, endpoint, param)
         | 
| 101 | 
            +
                  putCustomDataContext(server, endpoint, param)  
         | 
| 102 | 
            +
               end
         | 
| 103 | 
            +
            end
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
    
        data/lib/cloudmunch_sdk.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            require_relative "./ | 
| 2 | 
            -
            require_relative "./ | 
| 1 | 
            +
            require_relative "./cloudmunch_Ruby_sdk_v2/version.rb"
         | 
| 2 | 
            +
            require_relative "./cloudmunch_Ruby_sdk_v2/AppAbstract.rb"
         | 
| 3 3 | 
             
            module Cloudmunch
         | 
| 4 4 | 
             
              # Your code goes here...
         | 
| 5 5 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,16 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cloudmunch_sdk
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - syamk
         | 
| 8 | 
            +
            - rosmi
         | 
| 9 | 
            +
            - ganesankrishnamurthy
         | 
| 8 10 | 
             
            autorequire: 
         | 
| 9 11 | 
             
            bindir: exe
         | 
| 10 12 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 13 | 
            +
            date: 2015-12-03 00:00:00.000000000 Z
         | 
| 12 14 | 
             
            dependencies:
         | 
| 13 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 16 | 
             
              name: json
         | 
| @@ -73,22 +75,22 @@ executables: [] | |
| 73 75 | 
             
            extensions: []
         | 
| 74 76 | 
             
            extra_rdoc_files: []
         | 
| 75 77 | 
             
            files:
         | 
| 78 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/AppAbstract.rb
         | 
| 79 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/AppContext.rb
         | 
| 80 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/CloudmunchService.rb
         | 
| 81 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/ServiceProvider.rb
         | 
| 82 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/Util.rb
         | 
| 83 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/costview_meta.json
         | 
| 84 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/coverageview_meta.json
         | 
| 85 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/defecttrendview_meta.json
         | 
| 86 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/ilityview_meta.json
         | 
| 87 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/inboundoutboundview_meta.json
         | 
| 88 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/riskview_meta.json
         | 
| 89 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/scopeview_meta.json
         | 
| 90 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/timeview_meta.json
         | 
| 91 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/templates/velocityview_meta.json
         | 
| 92 | 
            +
            - lib/cloudmunch_Ruby_sdk_v2/version.rb
         | 
| 76 93 | 
             
            - lib/cloudmunch_sdk.rb
         | 
| 77 | 
            -
            - lib/cloudmunch_sdk/AppAbstract.rb
         | 
| 78 | 
            -
            - lib/cloudmunch_sdk/AppContext.rb
         | 
| 79 | 
            -
            - lib/cloudmunch_sdk/CloudmunchService.rb
         | 
| 80 | 
            -
            - lib/cloudmunch_sdk/ServiceProvider.rb
         | 
| 81 | 
            -
            - lib/cloudmunch_sdk/Util.rb
         | 
| 82 | 
            -
            - lib/cloudmunch_sdk/templates/costview_meta.json
         | 
| 83 | 
            -
            - lib/cloudmunch_sdk/templates/coverageview_meta.json
         | 
| 84 | 
            -
            - lib/cloudmunch_sdk/templates/defecttrendview_meta.json
         | 
| 85 | 
            -
            - lib/cloudmunch_sdk/templates/ilityview_meta.json
         | 
| 86 | 
            -
            - lib/cloudmunch_sdk/templates/inboundoutboundview_meta.json
         | 
| 87 | 
            -
            - lib/cloudmunch_sdk/templates/riskview_meta.json
         | 
| 88 | 
            -
            - lib/cloudmunch_sdk/templates/scopeview_meta.json
         | 
| 89 | 
            -
            - lib/cloudmunch_sdk/templates/timeview_meta.json
         | 
| 90 | 
            -
            - lib/cloudmunch_sdk/templates/velocityview_meta.json
         | 
| 91 | 
            -
            - lib/cloudmunch_sdk/version.rb
         | 
| 92 94 | 
             
            homepage: https://rubygems.org/gems/cloudmunch_sdk
         | 
| 93 95 | 
             
            licenses:
         | 
| 94 96 | 
             
            - MIT
         | 
| @@ -1,57 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'net/http'
         | 
| 4 | 
            -
            require 'cgi'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            require_relative "Util"
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            module CloudmunchService
         | 
| 9 | 
            -
              include Util
         | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
               def self.putCustomDataContext(server, endpoint, param)
         | 
| 13 | 
            -
                  result = self.http_post(server, endpoint, param)
         | 
| 14 | 
            -
                  #p result.code.to_s 
         | 
| 15 | 
            -
                  if result.code.to_s == "200"
         | 
| 16 | 
            -
                    return true 
         | 
| 17 | 
            -
                  else
         | 
| 18 | 
            -
                    return false 
         | 
| 19 | 
            -
                  end     
         | 
| 20 | 
            -
               end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
               def self.getCustomDataContext(server, endpoint, param)
         | 
| 24 | 
            -
                  return self.http_get(server, endpoint, param)
         | 
| 25 | 
            -
               end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
               def self.http_get(server,path,params)
         | 
| 28 | 
            -
                  if params.nil?
         | 
| 29 | 
            -
                   return Net::HTTP.get(server, path)
         | 
| 30 | 
            -
                  else
         | 
| 31 | 
            -
                     queryStr =  "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
         | 
| 32 | 
            -
                     puts ("SDKDEBUG: Calling URL " + server+queryStr)
         | 
| 33 | 
            -
                     uri = URI(server + "/" + queryStr)
         | 
| 34 | 
            -
                     return Net::HTTP.get(uri) 
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
               end
         | 
| 37 | 
            -
               
         | 
| 38 | 
            -
               def self.http_post(server,path,params)
         | 
| 39 | 
            -
                    queryStr =  "#{path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
         | 
| 40 | 
            -
                    puts ("SDKDEBUG: Calling URL " + server+queryStr)
         | 
| 41 | 
            -
                    if params.nil?
         | 
| 42 | 
            -
                        return Net::HTTP.post(server, path)
         | 
| 43 | 
            -
                    else
         | 
| 44 | 
            -
                        uri = URI(server +  path)
         | 
| 45 | 
            -
                        return Net::HTTP.post_form(uri, params)
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
               end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
               def self.getDataContext(server, endpoint, param)
         | 
| 50 | 
            -
                  getCustomDataContext(server, endpoint, param)     
         | 
| 51 | 
            -
               end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
               def self.updateDataContext(server, endpoint, param)
         | 
| 55 | 
            -
                  putCustomDataContext(server, endpoint, param)  
         | 
| 56 | 
            -
               end
         | 
| 57 | 
            -
            end
         |