Commit 1732ce5a authored by garciay's avatar garciay
Browse files

Changes after test session in Budapest with Commsignaia the 2-5th of July

parent 8a505cb5
Loading
Loading
Loading
Loading
+164 −33
Original line number Diff line number Diff line
@@ -37,10 +37,6 @@ module LibItsFntp_Functions {
        type ServiceRef 
    };
    import from CALMfntp language "ASN.1:1997" all; 
    import from LibItsMgt_Functions { 
        altstep 
            a_mgtMnSapPortDefault, a_mgtSapAwaitFwtUpdate 
    };
    import from LibItsFntp_TypesAndValues {
        const c_portDyn, c_portNon;
        type 
@@ -48,14 +44,25 @@ module LibItsFntp_Functions {
            CfFntpEventInd, 
            AcFntpPrimitive
    };
    import from LibItsFntp_Pics { 
        modulepar PICS_ITS_MGT_NOT
    };
    import from LibItsFntp_Templates all;
    import from LibItsFntp_Pixits all;
    import from LibItsFntp_Pics {
        modulepar PICS_ITS_S_INW, PICS_ROLE_RH;
    };
    import from LibItsMgt_TypesAndValues { 
        group constants 
    };
    import from LibItsMgt_Functions { 
        altstep 
            a_mgtMnSapPortDefault, a_mgtSapAwaitFwtUpdate 
    };
    import from LibItsMgt_Templates { 
        template 
            mdw_fwtSetNotRequestReq_port, mw_mnRequestRequest_setNotFNTP 
            mdw_fwtSetNotRequestReq, mdw_fwtDeleteFntp, 
			mw_mnRequestRequest_setNotFNTP 
    };
    import from LibItsCalm_Interface { 
        type 
@@ -242,8 +249,13 @@ module LibItsFntp_Functions {
            } else {
                log("*** f_initializeFntpForwardingTable: INFO: portNumber value is: " & int2str(vc_portNumber.portLong) & " ***");
            }
            if (PICS_ITS_MGT_NOT) {
                // And wait for a MN-SAP.MN-COMMAND/FWTupdate message sent by ITS management entity to update the forwarding table
            f_fntpAwaitFwtUpdate(vc_portNumber);           
                f_fntpAwaitFwtUpdate_reference(
                    vc_portNumber, 
					vc_reference 
                );
            }
        } // End of function f_initializeFntpForwardingTable
        
        /**
@@ -251,20 +263,65 @@ module LibItsFntp_Functions {
         * @param   p_portNumber Contains either the value PORT_NON in order to indicate dynamic assignment of a port number by the port number manager, or a valid value of a well-known static port PORT_REG
         * @verdict Unchanged
         */
        function f_fntpAwaitFwtUpdate_reference( 
            in template (present) PortNumber p_portNumber, 
            out integer p_reference 
        ) runs on ItsCalm {
            
            f_cfAwaitCreationPortNotificationToManagement( 
                CfEventInd : { // TODO Simplify template call using m_cfEventInd/mw_cfEventInd templates  
                    cfFntpEventInd := mw_cfFntpEventInd(
                        mdw_fwtSetNotRequestReq(
                            p_portNumber, 
                            PX_USER_PRIORITY, 
                            c_linkId_unknown,  
                            c_unknown_portLong, 
                            c_unknown_portLong)  
                    ) 
                },
                false,
			    p_reference 
            ); 
        } // End of function f_fntpAwaitFwtUpdate_reference()
        
        function f_fntpAwaitFwtUpdate( 
            in template (present) PortNumber p_portNumber 
            in template (present) PortNumber p_portNumber, 
            in template (value) Link_ID p_linkId,  
            in template (value) PortNumber p_remotePortNumber, 
            in template (value) PortNumber p_linkPortNumber 
        ) runs on ItsCalm {
            
            f_cfAwaitNotificationToManagement( 
                CfEventInd : { 
                CfEventInd : { // TODO Simplify template call using m_cfEventInd/mw_cfEventInd templates  
                    cfFntpEventInd := mw_cfFntpEventInd(
                        mdw_fwtSetNotRequestReq_port(p_portNumber)
                        mdw_fwtSetNotRequestReq(
                            p_portNumber, 
                            PX_USER_PRIORITY, 
                            p_linkId,  
                            p_remotePortNumber, 
                            p_linkPortNumber)  
                    ) 
                },
                false 
            ); 
        } // End of function f_fntpAwaitFwtUpdate()
        
        function f_fntpAwaitFwtDelete( 
            in template (value) integer p_reference  
        ) runs on ItsCalm {
            
            f_cfAwaitNotificationToManagement( 
                CfEventInd : { // TODO Simplify template call using m_cfEventInd/mw_cfEventInd templates  
                    cfFntpEventInd := mw_cfFntpEventInd(
                        mdw_fwtDeleteFntp(
                            p_reference 
						)  
                    ) 
                },
                false 
            ); 
        } // End of function f_fntpAwaitFwtDelete()
        
        /**
         * @desc Generate a NF-SAP request and wait for a confirm message 
         * @param p_generateNfSapRequest The NF-SAP request message to send 
@@ -281,10 +338,10 @@ module LibItsFntp_Functions {
        ) runs on ItsCalm { 
            
            f_utEventResponse(
                UtEvent : { 
                UtEvent : { // TODO Simplify template call using m_utEventInd/mw_utEventInd templates 
                    utFntpEvent := p_generateNfSapRequest 
                }, 
                UtEventInd : { 
                UtEventInd : { // TODO Simplify template call using m_utEventInd/mw_utEventInd templates 
                    utFntpEventInd := p_nfSapRequestConfirm 
                }, 
                p_discard,
@@ -303,37 +360,100 @@ module LibItsFntp_Functions {
        ) runs on ItsCalm { 
            
            f_utEvent(
                UtEvent : { 
                UtEvent : { // TODO Simplify template call using m_utEventInd/mw_utEventInd templates 
                    utFntpEvent := p_generateNfSapRequest 
                } 
            );
            
        } // End of function f_fntpGenerateNfSApRequestWithoutConfirm 
        
        /**
         * @desc Await for NF-SAP Comm.ind message 
         * @param p_portNumber The NF-SAP request message to send 
         * @param p_linkId Source address of DL-UNITDATA.request primitive
         * @verdict Unchanged on success, fail on error and inconc otherwise 
         */
        function f_fntpAwaitNfSapCommConfirm( 
            in template (present) PortNumber p_portNumber, 
            in template (present) Link_ID p_linkId
        ) runs on ItsCalm {
            var UtEventInd v_nfSapCommInd;
            
            log("*** f_fntpAwaitNfSapCommConfirm: DEBUG: Expected template: ", 
                mw_utEventInd( 
                    mw_utFntpEventInd( 
                        mdw_checkNfFntpCommIndication(
                            vc_portNumber,                        // Destination port of DL-UNITDATA.request primitive
                            p_portNumber,      // Source port of DL-UNITDATA.request primitive
                            p_linkId                             // Source address of DL-UNITDATA.request primitive
            ))));
            tc_wait.start;
            alt {
                [] utPort.receive( 
                    mw_utEventInd( 
                        mw_utFntpEventInd( 
                            mdw_checkNfFntpCommIndication(
                                vc_portNumber,                        // Destination port of DL-UNITDATA.request primitive
                                p_portNumber,      // Source port of DL-UNITDATA.request primitive
                                p_linkId                             // Source address of DL-UNITDATA.request primitive
                )))) -> value v_nfSapCommInd {
                    tc_wait.stop;
                    log("*** f_fntpAwaitNfSapCommConfirm: INFO: NF-SAP Communication indication received:", v_nfSapCommInd, " ***");
                }
                [] utPort.receive( 
                    mw_utEventInd( 
                        mw_utFntpEventInd( 
                            mw_checkNfFntpCommIndication_any
                ))) -> value v_nfSapCommInd {
                    tc_wait.stop;
                    log("*** f_fntpAwaitNfSapCommConfirm: INFO: Unexpected NF-SAP Communication indication received:", v_nfSapCommInd, " ***");
                    f_selfOrClientSyncAndVerdict("error", e_error);
                }
                [] utPort.receive(UtEventInd:?) -> value v_nfSapCommInd {
                    tc_wait.stop;
                    log("*** f_fntpAwaitNfSapCommConfirm: INFO: Unknown NF-SAP Communication indication received:", v_nfSapCommInd, " ***");
                    f_selfOrClientSyncAndVerdict("error", e_error);
                }
                [] tc_wait.timeout {
                    log("*** f_fntpAwaitNfSapCommConfirm: ERROR: Timeout while waiting for event check result ***");
                    f_selfOrClientSyncAndVerdict("error", e_timeout);
                }
            } // End of 'alt' statement
        } // End of function f_fntpAwaitNfSapCommConfirm 
        
        /**
         * @desc Call this method to remove entry created by f_initializeFntpForwardingTable() in FNTP Forwarding Table
         * @verdict Unchanged
         * @verdict Unchanged on success, fail on error and inconc otherwise
         */
        function f_unInitializeFntpForwardingTable() runs on ItsCalm {
            // check c_portDyn
            // Send for FTN-SOCKET.request & Wait for FTN-SOCKET.confirm
            
            f_utEventResponse( 
                UtEvent : { 
                UtEvent : { // TODO Simplify template call using m_utEventInd/mw_utEventInd templates 
                    utFntpEvent := m_generateNfFntpPortDeletionRequest( 
                        f_getIutServiceRef(), 
                        vc_portNumber 
                    ) 
                }, 
                UtEventInd : { 
                UtEventInd : { // TODO Simplify template call using m_utEventInd/mw_utEventInd templates 
                    utFntpEventInd := mw_utFntpEventInd( 
                        mdw_fntpCommConfirm_success(vc_portNumber)
                        mw_fntpPortConfirm( 
                            f_getIutServiceRef(), 
                            c_unknown_portLong  
                        )  
                    ) 
                }, 
                false, 
                vc_utEventInd 
            );
            
            if (PICS_ITS_MGT_NOT) {
                // And wait for a MN-SAP.MN-COMMAND/FWTupdate message sent by ITS management entity to update the forwarding table
                f_fntpAwaitFwtDelete(
                    vc_reference 
                );
            }
        } // End of function f_unInitializeFntpForwardingTable
        
        /**
@@ -343,13 +463,23 @@ module LibItsFntp_Functions {
            f_acGenerateBasicFntpNpdu(
                f_getIutRemotePortNumberValue(), 
                vc_portNumber,  
                    m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), 
                    m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())) 
                m_llServiceAddr(mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid())), 
                m_llServiceAddr(mw_linkId(f_getIutWlLocalCiid(), f_getIutWlLocalCiid())) 
            );
            if (PICS_ITS_MGT_NOT) {
                // And wait for a MN-SAP.MN-COMMAND/FWTupdate message sent by ITS management entity to update the forwarding table
                f_fntpAwaitFwtUpdate(f_getIutRemotePortNumberValue());
                
                // TODO Do we ignore management and NF-COMM.indication messages?
                f_fntpAwaitFwtUpdate( 
                    vc_portNumber, 
                    mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid()), 
                    f_getIutRemotePortNumberValue(), 
                    vc_portNumber 
                );
            }
            // And wait for NF-SAP Comm.ind message sent by the FNTP to the ITS facilities entity 
            f_fntpAwaitNfSapCommConfirm(
                f_getIutRemotePortNumberValue(), 
                m_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid())  
            );
        } // End of function f_setupKnownPeerStation
        
    } // End of group preambles
@@ -395,7 +525,6 @@ module LibItsFntp_Functions {
                    ) 
                ) 
            ); 
//FIXME                f_fntpAwaitFwtUpdate(?);
        } // End of function f_acGenerateBasicFntpNpdu
        
        /**
@@ -409,7 +538,7 @@ module LibItsFntp_Functions {
         * @param   p_counter           Expected value of FNTP packet counter counter field
         * @param   p_hops              N-hops value
         */
        function f_acGenerateFntpForwardingBasicNpdu(
        function f_acGenerateFntpForwardingNpdu(
            in template (value) PortNumber p_sourcePort, 
            in template (value) PortNumber p_destinationPort, 
            in template (value) PortNumber p_fromPort, 
@@ -437,8 +566,7 @@ module LibItsFntp_Functions {
                    ) 
                ) 
            ); 
//FIXME                f_fntpAwaitFwtUpdate(?);
        } // End of function f_acGenerateFntpForwardingBasicNpdu
        } // End of function f_acGenerateFntpForwardingNpdu
        
        /**
         * @desc    Triggers test adapter to send FNTP NDPU
@@ -470,7 +598,6 @@ module LibItsFntp_Functions {
                    ) 
                ) 
            ); 
//FIXME                f_fntpAwaitFwtUpdate(?);
        } // End of function f_acGenerateExtendedFntpNpdu
        
        /**
@@ -985,6 +1112,10 @@ module LibItsFntp_Functions {
            return PX_CIP_TX_SETTINGS;
        }
        
        function f_getIutAccessParametersValue() return AccessParameters { 
            return PX_ACCESS_PARAMETERS_SETTINGS;
        }
        
        /**
         * @desc    Get the remote port number value
         * @return  The remote port number value
+5 −0
Original line number Diff line number Diff line
@@ -62,6 +62,11 @@ module LibItsFntp_Pics {
         */
        modulepar boolean PICS_15628 := false;
		
		/**
		 * @desc Is IUT support notification to the ITS Management layer
		 */
		modulepar boolean PICS_ITS_MGT_NOT := true;
        
    } // End of group fntpPics

} // End of module LibItsFntp_Pics
 No newline at end of file
+39 −28
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@ module LibItsFntp_Pixits {
    import from CALMllsap language "ASN.1:1997" {
        type
            EUI64, 
            UserPriority, Link_ID
            UserPriority, Link_ID, 
            AccessParameters, NullType 
    };
    import from CALMfntp language "ASN.1:1997" {
        type
@@ -83,35 +84,36 @@ module LibItsFntp_Pixits {
    group routerWlanVcisMac {
        
        /**
         * @desc Identifies the CI on ITS-S router 
         * @desc Identifies the VCI on ITS-S router (e.g. It coud be the G5 radio MAC address of the IUT)
         * @see ISO 21218 - Clause 6.2 Link Identifier 
         */
        modulepar EUI64 PX_WL_LOCAL_CIID := '030008FFFF010000'O; 
        modulepar EUI64 PX_WL_LOCAL_CIID :=     '0A0B0CFFFE0D0E0F'O; 
        
        /**
         * @desc Identifies the VCI for broadcast on ITS-S router 
		 * Note that U/L bit is set to 1 for broadcast 
         */
        modulepar EUI64 PX_WL_REMOTE_CIID_BC := 'FF0008FFFF01FFFF'O; 
        modulepar EUI64 PX_WL_REMOTE_CIID_BC := 'FFFFFFFFFEFFFFFF'O; 
        
        /**
         * @desc Identifies the VCI for multicast on ITS-S router 
         */
        modulepar EUI64 PX_WL_REMOTE_CIID_MC := 'EF0008FFFF011234'O;
        modulepar EUI64 PX_WL_REMOTE_CIID_MC := 'EF0008FFFE011234'O;
        
        /**
         * @desc Identifies the VCI for unicast on ITS-S router (peer station)
         */
        modulepar EUI64 PX_WL_REMOTE_CIID_UC := '030008FFFF010001'O;
        modulepar EUI64 PX_WL_REMOTE_CIID_UC := '030008FFFE010001'O;
        
        /**
         * @desc Identifies an unknown CI on ITS-S router 
         */
        modulepar EUI64 PX_WL_LOCAL_CIID_UNKNOWN := '030008FFFF020001'O;
        modulepar EUI64 PX_WL_LOCAL_CIID_UNKNOWN := '030008FFFE020001'O;
        
        /**
         * @desc Identifies the VCI for multicast on ITS-S router
         */
        modulepar EUI64 PX_WL_REMOTE_CIID_UNKNOWN_UC := '030008FFFF020001'O; 
        modulepar EUI64 PX_WL_REMOTE_CIID_UNKNOWN_UC := '030008FFFE020001'O; 
        
        /**
         * @desc Identifies an unknown CI on ITS-S router
@@ -129,23 +131,23 @@ module LibItsFntp_Pixits {
         * @desc Identifies the CI on ITS-S host 
         * @see ISO 21218 - Clause 6.2 Link Identifier 
         */
        modulepar EUI64 PX_LAN_LOCAL_CIID := '03000AFFFFFF0000'O; 
        modulepar EUI64 PX_LAN_LOCAL_CIID :=           '03000AFFFEFF0000'O; 
        
        /**
         * @desc Identifies the VCI for broadcast on ITS-S host 
         */
        modulepar EUI64 PX_LAN_REMOTE_CIID_BC := 'FF000AFFFFFFFFFF'O;
        modulepar EUI64 PX_LAN_REMOTE_CIID_BC :=       'FF000AFFFEFFFFFF'O;
        
        /**
         * @desc Identifies the VCI for unicast on ITS-S host 
         */
        modulepar EUI64 PX_LAN_REMOTE_CIID_UC := '03000AFFFFFF0001'O;
        modulepar EUI64 PX_LAN_REMOTE_CIID_UC :=       '03000AFFFEFF0001'O;
        
        /**
         * @desc Identifies a different VCI on ITS-S host 
         * @see ISO 21218 - Clause 6.2 Link Identifier 
         */
        modulepar EUI64 PX_LAN_DIFFERENT_LOCAL_CIID := '03000AFFFFFE0001'O; 
        modulepar EUI64 PX_LAN_DIFFERENT_LOCAL_CIID := '03000AFFFEFE0001'O; 
        
    } // End of routerLanVcisMac
    
@@ -158,27 +160,27 @@ module LibItsFntp_Pixits {
         * @desc Identifies uniquely a specific CI in a specific ITS-SCU
         * @see ISO 21218 - Clause 6.2 Link Identifier
         */
        modulepar EUI64 PX_DEST_LOCAL_CIID := '030009FFFF010000'O;
        modulepar EUI64 PX_DEST_LOCAL_CIID :=          '030009FFFE010000'O;
        
        /**
         * @desc Identifies uniquely a specific CI in a specific ITS-SCU for broadcast
         */
        modulepar EUI64 PX_DEST_REMOTE_CIID_BC := '030009FFFF01FFFF'O;
        modulepar EUI64 PX_DEST_REMOTE_CIID_BC :=      'FFFFFFFFFEFFFFFF'O;
        
        /**
         * @desc Identifies uniquely a specific CI in a specific ITS-SCU for multicast
         */
        modulepar EUI64 PX_DEST_REMOTE_CIID_MC := '030009FFFF010001'O;
        modulepar EUI64 PX_DEST_REMOTE_CIID_MC :=      '030009FFFE010001'O;
        
        /**
         * @desc Identifies uniquely a specific CI in a specific ITS-SCU for unicast (peer to peer)
         * @desc Identifies uniquely a specific VCI in a specific ITS-SCU for unicast (peer to peer)
         */
        modulepar EUI64 PX_DEST_REMOTE_CIID_UC := '030009FFFF010001'O;
        modulepar EUI64 PX_DEST_REMOTE_CIID_UC :=      '030009FFFE010001'O;
        
        /**
         * @desc Identifies a second VCI for unicast (peer to peer) on ITS-SCU 
         */
        modulepar EUI64 PX_SECOND_REMOTE_CIID_BC := '0000000000000000'O;
        modulepar EUI64 PX_SECOND_REMOTE_CIID_BC :=    '000000FFFE000000'O;
        
    } // End of peerItsStationVcisMac
    
@@ -195,7 +197,7 @@ module LibItsFntp_Pixits {
        group cf01 { 
            
            /**
             * @desc Identify the VCI to be used to transmit the packet outside (e.g. G5), i.e. the peer station, for Broadcast
             * @desc Identify the VCI to be used to transmit the packet outside (e.g. G5), i.e. the IUT station, for Broadcast
             */
            modulepar Link_ID PX_WL_LINK_ID_BC := {
                remoteCIID := PX_WL_REMOTE_CIID_BC,
@@ -325,6 +327,15 @@ module LibItsFntp_Pixits {
        
    } // End of group cipConstants
    
    group accessParams { 
        
        modulepar AccessParameters PX_ACCESS_PARAMETERS_SETTINGS := { 
            apRef := 0,
            aParameter := { NullType:= NULL } 
        }
        
    } // End of group accessParams 
    
    /**
     * Wait until the IUT is in a stable situation (beaconing...)
     */
+18 −10
Original line number Diff line number Diff line
@@ -43,7 +43,10 @@ module LibItsFntp_Templates {
    }; 
    import from CALMfntp language "ASN.1:1997" all; 
    import from LibItsCalm_Pixits { 
        modulepar PX_LOC_ITS_ACCESS_LAYER, PX_IUT_LOWER_LAYER_USED, PX_IUT_TEST_MODE_ON 
        modulepar 
            PX_LOC_ITS_ACCESS_SETTINGS, 
            PX_IUT_LOWER_LAYER_USED, PX_IUT_LOWER_LAYER_NOT_USED, 
            PX_IUT_TEST_MODE_ON 
    }; 
    import from LibItsFntp_TypesAndValues { 
        group fntpPortsValues; 
@@ -61,8 +64,7 @@ module LibItsFntp_Templates {
    import from LibItsMgt_Templates { 
        template 
            m_mnCommandRequest_simNutCmd, m_mnCommandRequest_simNltCmd, 
            mdw_mnCommandConfirm, 
            mdw_fwtSetNotRequestReq_port 
            mdw_mnCommandConfirm 
    }; 
    import from LibItsMgt_Functions { 
        function 
@@ -296,7 +298,7 @@ module LibItsFntp_Templates {
                    options := { 
                        intForw := omit, 
                        sec := omit, 
                        hops := 0, 
                        hops := omit, // It means single-hop
                        lpp := omit, 
                        cip := omit, 
                        opt5 := omit, 
@@ -364,7 +366,7 @@ module LibItsFntp_Templates {
                    sourcePort := p_sourcePort, 
                    destinationPort := p_destinationPort, 
                    options := { 
                        hops := 0 
                        hops := 0 ifpresent 
                    } // End of 'options' field 
                }, // End of 'header' field
                body := PX_ITS_FPDU
@@ -841,8 +843,8 @@ module LibItsFntp_Templates {
                        mCmdRef := 255, 
                        mcmd := { 
                            TestConfigIICP := { 
                                location := PX_LOC_ITS_ACCESS_LAYER, 
                                lowerLayers := PX_IUT_LOWER_LAYER_USED, 
                                location := PX_LOC_ITS_ACCESS_SETTINGS, 
                                lowerLayers := PX_IUT_LOWER_LAYER_NOT_USED, // PX_IUT_LOWER_LAYER_USED
                                testMode := PX_IUT_TEST_MODE_ON 
                            } 
                        } // End of field 'mcmd' 
@@ -867,7 +869,7 @@ module LibItsFntp_Templates {
                        servPrimitive := { 
                            NFfntpPortRequest := { 
                                serviceRef := p_serviceRef, 
                                operation := true, 
                                operation := 255, // FIXME Change to constant 
                                portno := p_portNumber, 
                                priority := PX_USER_PRIORITY 
                            } // End of field 'NFfntpPortRequest' 
@@ -890,7 +892,7 @@ module LibItsFntp_Templates {
                        servPrimitive := {
                            NFfntpPortRequest := {
                                serviceRef := p_serviceRef,
                                operation := false, // Deletion requested 
                                operation := 0, // Deletion requested FIXME Change to constant
                                portno := p_portNumber,
                                priority := PX_USER_PRIORITY
                            } // End of field 'NFfntpPortRequest'
@@ -898,6 +900,12 @@ module LibItsFntp_Templates {
                    } // End of field 'nfSapPrimitivesDown' 
                } // End of template m_generateNfFntpPortDeletionRequest
                
                template (present) UtEventInd mw_utEventInd( 
                    in template (present) UtFntpEventInd p_utFntpEventInd 
                ) := { 
                    utFntpEventInd := p_utFntpEventInd 
                } // End of template mw_utEventInd 
                
                template UtFntpEventInd mw_utFntpEventInd( 
                    in template NFsapPrimitivesUp p_nfSapPrimitivesUp 
                ) := { 
@@ -1116,7 +1124,7 @@ module LibItsFntp_Templates {
                template FntpOptions mw_noFntpOptions := { 
                    intForw := omit, 
                    sec := omit, 
                    hops := 0, 
                    hops := omit, 
                    lpp := omit, 
                    cip := omit, 
                    opt5 := omit, 
+85 −28

File changed.

Preview size limit exceeded, changes collapsed.

Loading